Какао NSStatusBar Global HotKey - PullRequest
       7

Какао NSStatusBar Global HotKey

13 голосов
/ 01 ноября 2009

Я создал приложение какао NSStatusBar, которое находится в строке состояния системы.

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

Возможно ли это ?, В моем поиске и экспериментировании я нашел несколько разных способов назначения глобальных горячих клавиш, которые можно нажимать, когда ваше приложение находится в фоновом режиме, но я не могу найти способа, чтобы проблематично заставить меню отображаться .

Возможно ли это ?, Если кто-то считает, что лучше назначить глобальную горячую клавишу, пожалуйста, опубликуйте его.

Спасибо.


Одно из найденных мной руководств по горячим клавишам было на http://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/ для всех, кто заинтересован.

Ответы [ 2 ]

17 голосов
/ 01 ноября 2009

Если вы нацелены на 10.6+, есть новый API для NSEvent, который может использовать глобальные горячие клавиши. Для получения дополнительной информации, проверьте это удивительное сообщение в блоге: http://cocoakids.net/global-hotkeys-in-cocoa-on-snow-leopard

РЕДАКТИРОВАТЬ (долгое время спустя)

Немного подхватив свой собственный рог: я никогда не мог заставить вещи вроде PTHotKey и других библиотек работать так, как я ожидал, поэтому я в конце концов сдался и написал свою собственную оболочку HotKey. У него очень простой API (вы предоставляете ему ключевой код, модификаторы, цель и действие), который поддерживает даже такие забавные вещи, как блоки 10.6. Вы можете скачать исходный код здесь: http://github.com/davedelong/DDHotKey

11 голосов
/ 01 ноября 2009

Существует фактический API горячих клавиш , который все еще существует в Snow Leopard и доступен в 64-битной версии. Он разработан специально для этой цели, в отличие от методов NSEvent, которые по сути являются просто оболочкой на основе блоков вокруг CGEventTaps.

Разница в том, что методы NSEvent (или непосредственно CGEventTaps) заставляют вас смотреть на каждое событие, которое приходит, тогда как API-интерфейс горячих клавиш вызывает вашу функцию только тогда, когда пользователь нажимает вашу горячие клавиши.

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