В приложении Cocoa я пытаюсь найти способ улавливать системные события, такие как переключатель приложений, обычно запускаемый с помощью Cmd-Tab или прожектора, обычно запускаемого Cmd-Space. Я ищу либо способ поймать ключевое событие, либо любой другой способ, который сказал бы мне, что одно из этих событий вот-вот произойдет, и в идеале отменил бы его.
Приложение для удаленного рабочего стола Apple Screen Sharing делает это, так что это должно быть возможно. Он перехватывает эти события и отправляет их на подключенный удаленный компьютер.
Вот что я уже пробовал:
- Перехват событий с помощью метода sendEvent в NSApplication. Я вижу все события, такие как нажатие клавиши Cmd и нажатие клавиши Tab, но когда оба нажаты, я ничего не вижу.
- Регистрация прослушивателя горячих клавиш Carbon. Я могу зарегистрировать что-нибудь вроде Cmd + Q, но опять же, когда я регистрирую Cmd + Tab, он не отвечает.
Есть другие идеи?