DefaultKeyBinding.dict
O ~/Library/KeyBindings/DefaultKeyBinding.dict
arquivo permite definir suas próprias associações de teclas no Mac OS X. Ele pode estar em um de dois formatos: formato NeXT à moda antiga ( exemplo ) ou formato XML plist à moda moderna ( exemplo ).
Rebinding ⌘+⌫
Eu queria religar o comando backspace ( ⌘+ ⌫) para deleteWordBackward:
e obtive alguma ajuda nesse segmento do AskDifferent . Foi sugerido que eu use isso como meu DefaultKeyBinding.dict
arquivo:
/* my keybindings */
{
"@\U007F" = "deleteWordBackward:"; /* delete backwards one word */
}
Esse conselho funcionou (obrigado, pessoal!), Mas eu já tenho um trabalho DefaultKeybinding.dict
no formato XML, então eu queria tentar fazê-lo funcionar dessa maneira. Adicionei apenas este texto próximo à parte inferior do meu arquivo existente:
<key>@\U007F</key>
<string>deleteWordBackward:</string>
E também tentei criar um novo arquivo formatado em XML com apenas a entrada ⌘+ ⌫:
<?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>
Mas nenhum dos arquivos funcionou. A situação aparente, então, é que você pode religar ⌘+ ⌫apenas no formato NeXT à moda antiga, e não no formato XML plist. Minhas perguntas são:
- Isso é preciso ou a sintaxe deve mudar de alguma forma quando eu estou mudando para o formato XML?
- Vou me arrepender de mudar o restante do meu
DefaultKeyBinding.dict
arquivo para a sintaxe antiga? Não seria muito trabalhoso fazê-lo - são apenas uma ou duas dúzias de entradas - mas não tenho certeza se o estilo antigo foi descontinuado ou desaconselhado por algum outro motivo.
Editar: Original DefaultKeyBinding.dict
Alguém solicitou informações no meu arquivo original nos comentários, então acho que é melhor incluir a coisa toda aqui.
<?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>
~
para opção ou$
para turno?^
pelo controle?~
e^
, mas nenhuma com$
ou@
. (Nota: eu fui em frente e acrescentou meu arquivo DefaultKeyBindings.dict original para o OP, bem como no caso em que acaba por ser útil.)@
não é aceita no estilo XML do arquivo plist. Não faz muito sentido, mas não consigo encontrar mais nada sobre isso.Respostas:
Acho que você não terá problemas ao usar o formato mais antigo. Todos os exemplos que encontrei usam a antiga notação NeXT. Embora eu não possa explicar por que o formato XML não funcionou, há uma solução alternativa para esse atalho de teclado específico, o que significa que você pode deixar o seu existente
DefaultKeyBinding.dict
intocado.Existe um aplicativo chamado KeyRemap4MacBook, que pode ser baixado gratuitamente e, na captura de tela abaixo, você pode remapear o atalho do teclado ⌘+ ⌫sem converter o restante do
DefaultKeyBinding.dict
arquivo e esse método não se limita aos aplicativos Cocoa.fonte
\U007f
não pode ser usado em listas de propriedades XML. Você precisaria substituí-lo por
umDEL
caractere literal .Você pode converter um plist antigo em XML com
plutil
:E do XML ao estilo antigo com
pl
:No momento, meu DefaultKeyBinding.dict tem 151 linhas e não tive problemas para armazená-lo como uma lista de propriedades no estilo antigo. Os postados por Brett Terpstra e Jacob Rus também estão no formato antigo.
fonte