DefaultKeyBinding.dict - formato NeXT antiguo vs formato plist XML

8

DefaultKeyBinding.dict

El archivo ~/Library/KeyBindings/DefaultKeyBinding.dict le permite definir sus propios enlaces de teclas en Mac OS X. Puede estar en uno de dos formatos: formato NeXT de estilo antiguo ( example ) o un formato de lista XML de estilo moderno ( ejemplo ).

Rebinding +

Quería volver a enlazar el comando de retroceso ( + ) a deleteWordBackward: , y recibí ayuda en esta secuencia AskDifferent . Se sugirió que use esto como mi archivo DefaultKeyBinding.dict :

/* my keybindings */
{
"@\U007F" = "deleteWordBackward:"; /* delete backwards one word */
}  

Este consejo funcionó (¡gracias, chicos!), pero ya tengo un DefaultKeybinding.dict en el formato XML, así que quería intentar que funcionara de esa manera. La primera vez que agregué este texto casi al final de mi archivo existente:

<key>@\U007F</key>
<string>deleteWordBackward:</string>

Y también intenté crear un nuevo archivo con formato XML con solo la 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>

Pero ninguno de los archivos funcionó. La situación aparente, entonces, es que puede volver a enlazar + solo en el formato NeXT de estilo antiguo, y no en el formato plist XML. Mis preguntas son:

  1. ¿Es esto preciso o debería cambiar la sintaxis de alguna manera cuando me cambio al formato XML?
  2. ¿Me arrepentiré de mover el resto de mi archivo DefaultKeyBinding.dict a la sintaxis anterior? No sería mucho trabajo hacerlo, son solo una o dos docenas de entradas, pero no estoy seguro de que el estilo antiguo esté en desuso o sea desafortunado por alguna otra razón.

Editar: DefaultKeyBinding.dict original

Alguien solicitó información sobre mi archivo original en los comentarios, así que me imagino que podría incluir todo aquí.

<?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>~&lt;</key>
    <string>moveToBeginningOfDocument:</string>
    <key>~&gt;</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>
    
pregunta Micah R Ledbetter 14.09.2011 - 23:41

2 respuestas

3

No creo que tengas ningún problema con el formato anterior. Todos los ejemplos que he encontrado utilizan la antigua notación NeXT. Aunque no puedo explicar por qué el formato XML no funcionó, hay una solución alternativa para este método abreviado de teclado en particular, lo que significa que puede dejar su DefaultKeyBinding.dict existente sin tocar.

Hay una aplicación llamada KeyRemap4MacBook que se puede descargar de forma gratuita y se puede ver en la captura de pantalla a continuación. + método abreviado de teclado sin convertir el resto de su archivo DefaultKeyBinding.dict y este método no está limitado a las aplicaciones Cocoa.

    
respondido por el conorgriffin 15.09.2011 - 02:01
3

\U007f no se puede utilizar en listas de propiedades XML. Necesitarías reemplazarlo con &#x007f; o un carácter literal DEL .

Puedes convertir una lista antigua a XML con plutil :

plutil -convert xml1 test.plist

Y de XML al estilo antiguo con pl :

pl -input test.plist

My DefaultKeyBinding.dict tiene actualmente 151 líneas, y no he encontrado ningún problema al almacenarlo como una lista de propiedades de estilo antiguo . Los publicados por Brett Terpstra y Jacob Rus también tiene el formato antiguo.

    
respondido por el user495470 12.12.2011 - 17:59

Lea otras preguntas en las etiquetas