(Это , а не вопрос о KVC / KVO и привязках значения ключа.)
Я пишу приложение с панелью «Инструменты». Каждый инструмент можно выбрать с помощью однобуквенного ключа (например, «M» - «Переместить инструмент»). Инструмент может быть выбран, даже если нет главного окна и панель инструментов не выбрана (не будучи «ключом»).
В документах говорится, что события необработанных ключей не передаются делегату приложения и контроллеру документов (поэтому я не могу полагаться на onKeyDown, поскольку это должно происходить в WindowController). Но «события действия» (ключи, связанные с селектором) отправляются приложению, делегату приложения и контроллеру документов.
Я знаю два способа установки таких глобальных привязок: через эквиваленты ключей NSMenuItem в Интерфейсном Разработчике или используя файл ~ / Library / KeyBindings / DefaultKeyBinding.dict (который задает глобальные привязки для всех приложений).
Подход к элементам меню не очень хорош, потому что я не хочу загрязнять свое меню командами, которые могут быть вызваны с панели инструментов.
Я хотел бы установить такие привязки программно или указать их в комплекте KeyBindings.dict, как это делают Xcode и TextMate.
Однако я не смог найти документы или примеры, как назвать такой файл dict и как подключить его к приложению. Xcode использует имя файла PBKeyBinding.dict, TextMate использует KeyBindings.dict. Info.plist не может сообщить приложению о необходимости чтения файла dict.
Кто-нибудь знает, как это можно сделать?
Спасибо.