Используя этот код, я могу зарегистрировать глобальный обработчик событий:
[NSEvent addGlobalMonitorForEventsMatchingMask: NSKeyDownMask
handler: ^(NSEvent *incomingEvent) {
NSString *chars = [[incomingEvent characters] lowercaseString];
unichar character = [chars characterAtIndex:0];
// do something useful
NSLog(@"keydown globally! Which key? This key: %c", character);
}];
К сожалению, события передаются на этот монитор, если поддержка вспомогательных устройств включена.Без включенных вспомогательных устройств никакие события не передаются.
Сформируйте документацию:
Key-related events may only be monitored if accessibility is enabled or if your
application is trusted for accessibility access (see AXIsProcessTrusted).
Интересно, существует ли другой метод, который передает события без принуждения пользователячтобы включить определенные функции OS X.
Хотя я не нашел решения в документах Apple, решение должно существовать.Например, загруженная MAS версия Alfred позволяет определить горячую клавишу.
Интересно, что в настройках Альфреда отображаются только специальные клавиши и указывается, что некоторые специальные комбинации клавиш могут не работать .
Поскольку я в основном хочупоказать / скрыть «глобальную» неактивирующую панель, я, вероятно, должен просто подготовить системный сервис.Должен ли я?