keyDown
グローバルなイベントを聞き始めました。イベントが発生したアプリケーションから情報を取得する方法はありますか?
ハンドラーはNSNotification
インスタンスを受け取り、NSEvent
その一部です。どうにかしてそれらのオブジェクトからその情報を抽出できますか?
リスニング スニペット:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event){
NSLog(@"global keyDown %@", event);
[[NSNotificationCenter defaultCenter] postNotificationName:kKeyPressed
object:event];
}];
観察者:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyEventHandler:)
name:kKeyPressed
object:nil];
アップデート
グローバル キー ダウンは、特定のアプリケーションからは送信されません。実際に必要だったのは、イベント ハンドラーで現在アクティブなアプリケーションを確認することです。
[[NSWorkspace sharedWorkspace] activeApplication]
これにより、必要な情報が返さNSDictionary
れます。