DefaultKeyBinding.dict
~/Library/KeyBindings/DefaultKeyBinding.dict
Файл позволяет определить свои собственные сочетания клавиш в Mac OS X. Это может быть в одном из двух форматов: старый стиль формат NeXT ( пример ) или в современном стиле в формат XML PLIST ( пример ).
Переплет ⌘+⌫
Я хотел перепривязать команду backspace ( ⌘+ ⌫) deleteWordBackward:
и получил некоторую помощь в этом потоке AskDifferent . Было предложено использовать это как мой DefaultKeyBinding.dict
файл:
/* my keybindings */
{
"@\U007F" = "deleteWordBackward:"; /* delete backwards one word */
}
Этот совет сработал (спасибо, ребята!), Но у меня уже есть работа DefaultKeybinding.dict
в формате XML, поэтому я хотел попытаться заставить его работать таким образом. Сначала я добавил только этот текст в нижней части моего существующего файла:
<key>@\U007F</key>
<string>deleteWordBackward:</string>
И я также попытался создать совершенно новый файл в формате XML с помощью только ⌘+ ⌫записи:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>@\U007F</key>
<string>deleteWordBackward:</string>
</dict>
</plist>
Но ни один из файлов не работал. Таким образом, очевидная ситуация заключается в том, что вы можете выполнить повторную привязку ⌘+ ⌫только в старом формате NeXT, а не в формате XML plist. Мои вопросы:
- Это точно, или синтаксис должен измениться, когда я переключаюсь на формат XML?
- Буду ли я сожалеть о переносе остальной части моего
DefaultKeyBinding.dict
файла на старый синтаксис? Это не будет большой работой, это всего лишь одна или две дюжины записей, но я не уверен, что старый стиль устарел или опрометчив по какой-то другой причине.
Изменить: Оригинал DefaultKeyBinding.dict
Кто-то запросил информацию в моем исходном файле в комментариях, поэтому я думаю, что я мог бы также включить все это сюда.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key></key>
<string>complete:</string>
<key>^ </key>
<string>setMark:</string>
<key>^a</key>
<string>moveToBeginningOfLine:</string>
<key>^e</key>
<string>moveToEndOfLine:</string>
<key>^j</key>
<string>setMark:</string>
<key>^v</key>
<string>pageDown:</string>
<key>^w</key>
<string>deleteToMark:</string>
<key>^x</key>
<dict>
<key>^m</key>
<string>selectToMark:</string>
<key>^x</key>
<string>swapWithMark:</string>
</dict>
<key>~</key>
<string>deleteWordBackward:</string>
<key>~<</key>
<string>moveToBeginningOfDocument:</string>
<key>~></key>
<string>moveToEndOfDocument:</string>
<key>~^h</key>
<string>deleteWordBackward:</string>
<key>~b</key>
<string>moveWordBackward:</string>
<key>~d</key>
<string>deleteWordForward:</string>
<key>~f</key>
<string>moveWordForward:</string>
<key>~n</key>
<string>scrollLineDown:</string>
<key>~p</key>
<string>scrollLineUp:</string>
<key>~v</key>
<string>pageUp:</string>
<key>~</key>
<string>deleteWordBackward:</string>
</dict>
</plist>
~
для варианта или$
для смены?^
для контроля?~
и^
, но нет с$
или@
. (Примечание: я пошел дальше и добавил свой оригинальный файл DefaultKeyBindings.dict в ОП, а также на тот случай, если это окажется полезным.)@
неприемлемо в стиле XML файла plist. Это не имеет особого смысла, но я не могу найти больше ничего об этом.Ответы:
Я не думаю, что у вас возникнут проблемы с использованием старого формата. Все примеры, которые я нашел, используют старые обозначения NeXT. Хотя я не могу объяснить, почему формат XML не работает, для этого конкретного сочетания клавиш есть обходной путь, который может означать, что вы можете оставить свой существующий без изменений
DefaultKeyBinding.dict
.Существует приложение под названием KeyRemap4MacBook, которое можно бесплатно загрузить, и вы можете видеть на скриншоте ниже, вы можете переназначить сочетание клавиш ⌘+ ⌫без преобразования остальной части вашего
DefaultKeyBinding.dict
файла, и этот метод не ограничивается приложениями Какао.источник
\U007f
не может использоваться в списках свойств XML. Вам нужно заменить его
или буквальныйDEL
символ.Вы можете преобразовать plist старого стиля в XML с помощью
plutil
:И от XML до старого стиля с
pl
:Мой DefaultKeyBinding.dict в настоящее время состоит из 151 строки, и я не сталкивался с какими-либо проблемами, хранящими его как список свойств старого стиля. Те, что были опубликованы Бреттом Терпстрой и Якобом Русом, также представлены в старом стиле.
источник