8

プログラムでキーボードのキーダウンとキーアップのイベントを生成しようとしています。現在、これを行うために CGPostKeyboardEvent を使用していますが、より低いレベルでこれを行う方法を探しています。DDHidLib を見てきましたが、偽のイベントを作成する方法がわかりませんでした。誰でも助けることができますか?

更新: weichsel のアドバイスのおかげで、次のキーダウン イベントを作成しています。

  CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
  CGEventPost(kCGSessionEventTap, e);
  CFRelease(e);

ここで見つけました。

ただし、私の問題はまだ残っているので、少し詳しく説明します。キープレスを送信したいアプリケーション (サード パーティ) は、DDHidLib のキー キャプチャ機能を実装しています。

- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
             keyDown: (unsigned) usageId;

そして、これは現在のメソッドを使用して呼び出されることはありません。私の推測では、CGEventCreateKeyboardEvent でシミュレートされたキー ダウンのレベルが高すぎて、ddhidKeyboard:keyDown でキャプチャできません。だから私がやろうとしているのは、ddhidKeyboard:keyDown によって認識されるように十分に低いレベルでキーダウン イベントを作成することです。

4

2 に答える 2

6

Quartz Event Services の何が問題になっていますか?
あなたは正しい軌道に乗っていると思いますが、Mac OS X 10.6以降、後者は非推奨になっているため、CGEventCreateKeyboardEvent代わりに使用する必要があります。CGPostKeyboardEvent

于 2009-12-21T08:33:57.533 に答える
3

ルートとして実行する場合、イベントタップはHIDレベルで挿入できます

http://developer.apple.com/mac/library/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html#//apple_ref/c/tdef/CGEventTapLocation

于 2009-12-22T08:18:50.420 に答える