Я начал слушать глобальные 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
с необходимой мне информацией.