ウィンドウにフォーカスしないときは、Cocoaでキー値を取得します。 ご存知の方は教えてください。ウィンドウ上のフォーカスに関係なく、ココアでキー値を取得する方法
2
A
答えて
3
私の質問が分かっていれば、アプリ/ウィンドウが最前面のウィンドウではないにもかかわらず、いつキーが押されたかを知りたいですか?
この場合、+[NSEvent addGlobalMonitorForEventsMatchingMask:handler:]
(10.6+のみ)またはCGEventTap
を使用しています。
0
私は最近asked this questionを使用し、Dave Delongの示唆したようにaddGlobalMonitorForEventsMatchingMaskを使用して、@ NSGodによって私に指摘しました。
私も、トラブルブロック構文を考え出すを持っていたので、私は、私はその答えに投稿されたコードから引用します:
// register for keys throughout the device...
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(struct NSEvent *event){
NSString *chars = [[event characters] lowercaseString];
unichar character = [chars characterAtIndex:0];
NSLog(@"keydown globally! Which key? This key: %c", character);
}];
ブロックと心に留めておくべき事は、彼らが直接供給されていることですメソッド呼び出しに渡します。私はmy own questionに追加されたより徹底した説明を持っていますが、上記の構文に従って、ブロックを「インラインデリゲートメソッド」の一種と考えるならば、ちょうどいいです。
1
addGlobalMonitorForEventsMatchingMaskまたはCGEventTapのいずれかを使用するには、アプリケーションをrootとして実行する必要があります。私はNSEventメソッドを私のために働かせることができませんでしたが、CGEventTapはrootとして罰金を科しました。
CGEventTap方法の利点は次のとおりです。
- あなたも、それらのあなたのすべてのイベント、独自のアプリケーションを受けます。
- さまざまなレベル(ウィンドウサーバーの前、セッションサーバーの前など)で
- のイベントをタップできます。必要に応じてイベントを変更できます。
関連する問題
- 1. ウィンドウからオブジェクトを取得するココア
- 2. iPhoneでココアを取得する方法
- 3. ココア:閉じたウィンドウを開く方法
- 4. 関係に関係なくパーミッションを取得できません
- 5. ウィンドウのフォーカスがないウィンドウでキーを検出する
- 6. XPATH - クラスに関係なく、各html要素のテキストを取得する方法
- 7. laravel 5.2で1つ以上の外部キーとの関係を取得する方法は?
- 8. キーの下でキー値を取得する方法は?
- 9. フォーカスに関係なくonKeyDownを呼び出す方法はありますか?
- 10. Xフォーカスのウィンドウとは無関係にキャプチャするKeyPress/Releaseイベント
- 11. アプリケーションがフォーカスを取得するかどうかを検出する(ウィンドウのフォーカスではなく)
- 12. モデル関係キーの値を指定する方法は?
- 13. ウィンドウ上のPremakeが正しくないrealpathを取得する
- 14. Firebase - observeEventTypeにキーの値を取得する方法=値
- 15. JPopupMenuのフォーカスを取得する方法
- 16. c関数からココア(目的c)関数へデータを取得する方法
- 17. フレームワークターゲット、アプリケーションターゲットとココアの協力関係、依存関係の維持方法
- 18. SQLAlchemy多対多の関係で列テーブルの値を取得する方法
- 19. 絶対値/絶対値和とウィンドウ関数を取得する方法
- 20. 外部キーと多対多の関係を通じて値のセットを取得する方法は?
- 21. Jar依存関係の取得方法
- 22. 依存関係の取得方法Java
- 23. ココアでオーディオファイルのビットレートを取得する方法
- 24. ココアのウィンドウのクローズボタンの操作方法
- 25. HTML/Javascript:ウィンドウのサイズに関係なくスクロールを記憶する
- 26. ウィンドウのピクセルをzオーダーに関係なくキャプチャする
- 27. JavaのプロパティでNeo4関係を取得する方法は?
- 28. DreamFactoryアプリケーションでユーザーとの関係を取得する方法は?
- 29. キー/配列ではなくJsonConverterのキー/値を書く方法
- 30. Javascript/Jqueryキー/値からキーを取得する方法
私はココアでこれを行う方法はわかりませんが、キーボードを直接照会する必要があります。フォーカスがない場合は、プロミスキャスモードのメッセージ傍受がない限り、キーボードのキーストロークメッセージは送信されません。 – EnabrenTane
OSX 10.6では、キーボードイベントをグローバルに登録することができます.Dave DeLongの回答と鉱山を参照してください。 –