Как указать привязки клавиш в файле dict в комплекте приложений Какао? - PullRequest
1 голос
/ 14 января 2010

(Это , а не вопрос о KVC / KVO и привязках значения ключа.)

Я пишу приложение с панелью «Инструменты». Каждый инструмент можно выбрать с помощью однобуквенного ключа (например, «M» - «Переместить инструмент»). Инструмент может быть выбран, даже если нет главного окна и панель инструментов не выбрана (не будучи «ключом»).

В документах говорится, что события необработанных ключей не передаются делегату приложения и контроллеру документов (поэтому я не могу полагаться на onKeyDown, поскольку это должно происходить в WindowController). Но «события действия» (ключи, связанные с селектором) отправляются приложению, делегату приложения и контроллеру документов.

Я знаю два способа установки таких глобальных привязок: через эквиваленты ключей NSMenuItem в Интерфейсном Разработчике или используя файл ~ / Library / KeyBindings / DefaultKeyBinding.dict (который задает глобальные привязки для всех приложений).

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

Я хотел бы установить такие привязки программно или указать их в комплекте KeyBindings.dict, как это делают Xcode и TextMate.

Однако я не смог найти документы или примеры, как назвать такой файл dict и как подключить его к приложению. Xcode использует имя файла PBKeyBinding.dict, TextMate использует KeyBindings.dict. Info.plist не может сообщить приложению о необходимости чтения файла dict.

Кто-нибудь знает, как это можно сделать?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 января 2010

На самом деле, эта библиотека делает то, что мне нужно:

http://github.com/carpeaqua/SGHotKeysLib

Она использует функцию RegisterEventHotKey (требуется соединение с платформой Carbon).

0 голосов
/ 16 января 2010

В документации сказано, что это не поддерживается. Так что, даже если вы заработаете, это может сломаться в будущей версии Mac OS X.

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

Если меню «Сервис» действительно бессмысленно, вы можете установить свойство «Скрытый» пункта меню «Инструменты» (подменю которого - меню «Инструменты»). Таким образом, пункт меню «Инструменты» по-прежнему находится в главном меню (строке меню), поэтому ему все равно следует связывать привязки клавиш с действиями, но он не виден пользователям.

...