私のアプリケーションは、イベント タップを使用してキーボード イベントをキャプチャします。各イベントがどのデバイス (つまり、どのキーボード) から発生したかを知りたいです。タップが取得する CGEvent とともに、デバイスを識別する情報のようなものはありますか? NSEvent のメソッドとさまざまな CGEventField キーを見てきましたが、どれもデバイス固有ではないようです。何か助けはありますか?
2 に答える
USB HID デバイスを個別に操作するための Dave Dribin の優れたフレームワークである DDHidLib を参照してください。
http://www.dribin.org/dave/blog/archives/2007/03/19/ddhidlib_10
(ジョイスティックについてだけではないので、そのブログ投稿の最初の段落以上を読んでください)
DDHidLib の一部の機能は、HID デバイスのキャプチャに関する Apple のセキュリティ上の懸念により、Leopard では動作しなくなりましたが、運が良ければ、必要なものが提供される可能性があります。
DDHidLib はきちんとしたもので、実際、Leopard の新しい HID API 用の Delicious Library 2 用にその一部を書き直し、元の作成者に変更内容を提出しました。作成者に書き込めば、Leopard 専用のサンプル コードを入手できます。
残念なことに、新しい Leopard HID API には、通過するキーボード イベントをピークにする機能がありますが、傍受することはできません。そのため、キー イベントが発生しても問題がない限り、アプリケーション レベルのデバイス ハンドラを独自に構築することはできません。 AppKitも同様です。(これが、Delicious Library 2 で USB バーコード スキャナーを使用するときにボンキング ノイズが発生する理由です。スキャナーにピークを合わせてバーコードを読み取りますが、入力は依然として最上位のウィンドウに送信されます。ビープ音がたくさん。ため息。)
-ウィル