2017-08-01 23 views
0

NSEventsには、「システム起動後にイベントが発生した時刻」を表すタイムインターバルを返すtimestampプロパティがあります。私は、正確にこの情報を必要とするアプリケーションを書いています。ユーザーがキーを押したときです。しかし、私はタイムスタンプが十分正確でないかもしれないと心配しています。 Time Interval自体はサブミリ秒の精度を持っています。キーボードやマウスの入力を表すNSEventの正確なタイムスタンプを提供するためにミリ秒以下の精度が使用されるかどうかを示すドキュメントはありますか?入力イベント(キーボード/マウス)のNSEventタイムスタンプの精度?

リンゴの実装を推測しなければならない場合は、NSEventのタイムスタンプがハードウェア割り込みの直後に生成されることを願っています。しかし、キーボード/マウス入力をポーリングし、次のポーリング間隔が来て入力を読み取るときにタイムスタンプフィールドにデータを入力するだけのシステムも考えられます。

ありがとうございました。

答えて

0

アップルのCocoa Event Handling Guide: Event Architecture文書は役に立ちましたか?そこから:

イベントをアプリケーションに送る前に、ウィンドウサーバーはさまざまな方法でそれを処理します。それをタイムスタンプし、関連付けられたウィンドウとプロセスポートで注釈を付け、おそらく他のタスクも実行する。

これは、カーネルとアプリケーション層の間に住んでいるウィンドウのサーバーを、示しているように見える、タイムスタンプを適用する...これを行うために、低レベルで生成されたメタデータを読み込むことも可能ですが。

私はこれをより良く理解するには、キーダウン/アップイベントのタイムスタンプを記録し、隣接するイベントで正確に一致するものを探すアプリケーションを作成することが最善の方法だと思います。 (ほとんど)同一のタイムスタンプを持つ行の中にいくつかのイベントがある場合は、タイムスタンプを取得する前にバッファに入れられている可能性が高くなります。隣接するイベント間に十分なギャップがある場合、ハードウェアイベントに近づく可能性が高くなります。

+0

答えとリンクに感謝します。システムのパフォーマンスをどのように感じるかをお勧めします。私は、ウィンドウサーバーのイベントキューとそれがどのように設定されているかについて、より詳細な情報が得られれば幸いです。理想的な世界では、あなたが言及するメタデータや記事では、キー・プッシュに関する「その他の情報」には、イベント・レコードが生成されてウィンドウ・サーバーに渡されたときのシステム・アップタイム・スタンプなどが含まれます。 – milkshake