2012-03-25 5 views
0

バックグラウンドでkeydownイベントを聞く方法を理解するために、過去から過去を探しています。たとえば、プログラム "Ventrilo"または "Teamspeak"を使用する場合、ビデオゲームのプレイ中にビデオゲームチームと話すことができます。したがって、これらの2つのプログラムは、バックグラウンドにあるときにキーを待ち受けます。私の質問はどのようにこれが行われますか?いくつかの例、チュートリアルは素晴らしいでしょう!私もまだまだこれで新しくなっていますので、説明してください。Xcode Macアプリケーション:Ventriloのようなバックグラウンドでkeydownイベントをリッスンする

答えて

2

私がココアで知っている唯一の方法は、グローバルイベントモニターを使用することです。以下のメソッドを呼び出すと、アプリケーションはcontrol-alt- /を聞き取り、警告を出します。このアプローチで考えられる問題は、キーを押すたびにブロックが実行されます(ただしアラートは表示されません)。プロセッサを大量に使用している場合、少し遅くなる可能性があります。私はこの問題がないCarbonでそれを行う方法があると思うが、それについて投稿するCarbonについて十分に知りません。

+(void)listenForKey { 
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event) 
{ 
    NSUInteger key = 44; // 44 is forward slash 
    NSUInteger modifier = NSControlKeyMask | NSAlternateKeyMask; 
    if ([event keyCode] == key && [NSEvent modifierFlags] == modifier) 
     NSRunCriticalAlertPanel(nil,@"Control-alt/was detected",nil,nil,nil); 
    }]; 
} 
+0

これは美しく機能します。冒頭でcontrol-altを実行しないと、1つの質問だけが可能ですか?キーナンバーはどこで手に入りますか? –

+0

nvm私がしなければならなかったのは、NSevent modifierFlags ==修飾子を取り除くことでした!しかし、キーナンバーはどこで手に入れましたか? –

+0

この行をk = 44行のすぐ上に追加して、別のプログラムにいくつかのキーを入力すると、キーコードが記録されます:NSLog(@ "%d"、event.keyCode); – rdelmar

関連する問題