Приложение LSUIElement будет отзывчивым - PullRequest
1 голос
/ 29 апреля 2011

У меня есть приложение, в котором я установил ключ LSUIElement на 1, чтобы он работал в фоновом режиме и не отображал значок в Dock. Я хочу, чтобы приложение реагировало на нажатия клавиш или события мыши. На самом деле главное окно появляется только при запуске приложения. При видимом главном окне нажатия клавиш обрабатываются правильно, но если я закрою его, у него не будет возможности показать его снова (и поэтому нажатия клавиш игнорируются). Я хочу, чтобы мое приложение реагировало каждый раз, когда я нажимаю определенную комбинацию клавиш (как, например, Scribblet, для тех, кто знает). Может кто-нибудь сказать мне, где я могу найти информацию о том, как это сделать?

1 Ответ

3 голосов
/ 29 апреля 2011

Приложение в строке состояния только активно, и, таким образом, ваше приложение может получать события, только когда окно или меню уже открыто.

Ваше приложение может реализовывать «горячую клавишу»"путем установки Event Tap :

CGEventTapCreate(kCGSessionEventTap,
                 kCGTailAppendEventTap,
                 kCGEventTapOptionDefault,
                 kCGEventKeyDown
                 myEventTapCallback,
                 NULL);

Это позволит вашему приложению проверять keyDown события, прежде чем они будут направлены в другие приложения.См. Обратные вызовы , чтобы узнать, как ваша функция обратного вызова должна выглядеть и вести себя.

Существует также, вероятно, более простой в использовании класс Cocoa, написанный Дейвом Делонгом, доступный на GitHub: DDHotKey .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...