ウィンドウにフォーカスしないときは、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. Xフォーカスのウィンドウとは無関係にキャプチャするKeyPress/Releaseイベント
- 5. 絶対値/絶対値和とウィンドウ関数を取得する方法
- 6. ウィンドウ上のPremakeが正しくないrealpathを取得する
- 7. JPopupMenuのフォーカスを取得する方法
- 8. Javascript/Jqueryキー/値からキーを取得する方法
- 9. andoridのイテレータでJsonのキーと値を取得する方法
- 10. c関数からココア(目的c)関数へデータを取得する方法
- 11. VB.NET 2005アプリケーションでキーボードのキー値を取得する方法は?
- 12. ウィンドウのピクセルをzオーダーに関係なくキャプチャする
- 13. HTML/Javascript:ウィンドウのサイズに関係なくスクロールを記憶する
- 14. Rails、ActiveRecord - 関係でカウント行を取得する方法:belons_to?
- 15. ココアでオーディオファイルのビットレートを取得する方法
- 16. Drupal 6でかなり高度な関係を取得する方法 - Views 2?
- 17. コアデータのエンティティの一意の関係を取得する方法
- 18. immutable.jsマップの最初のキー(値ではない)を取得する方法は?
- 19. ReCaptchaは、ホストの一致キーに関係なく有効です。
- 20. 親ウィンドウの更新後に子ウィンドウをフォーカスする方法
- 21. JavaScriptのキーaと 'a'の値を取得する方法
- 22. テーブル間のデータベース依存関係を取得する方法
- 23. ココアのウィンドウのクローズボタンの操作方法
- 24. ココアでピクセル完全描画を取得する方法
- 25. 外部キーからオブジェクトの値を取得する方法は?
- 26. 辞書のキーから値を取得する方法
- 27. JSONのキーと値を取得する方法は?
- 28. 認証領域に関係なくユーザ名を取得
- 29. AutoHotKeyでアクティブなウィンドウのタイトルを取得する方法は?
- 30. gerritで偽の依存関係を取り除く方法
私はココアでこれを行う方法はわかりませんが、キーボードを直接照会する必要があります。フォーカスがない場合は、プロミスキャスモードのメッセージ傍受がない限り、キーボードのキーストロークメッセージは送信されません。 – EnabrenTane
OSX 10.6では、キーボードイベントをグローバルに登録することができます.Dave DeLongの回答と鉱山を参照してください。 –