DefaultKeyBinding.dict - formato NeXT vecchio stile vs formato plist XML

8

DefaultKeyBinding.dict

Il file ~/Library/KeyBindings/DefaultKeyBinding.dict ti consente di definire i tuoi binding di tasti in Mac OS X. Può essere in uno di due formati: formato NeXT vecchio stile ( esempio ) o formato plist XML di stile moderno ( esempio ).

Riaffilatura +

Volevo riassociare il command-backspace ( + ) a deleteWordBackward: , e ho avuto qualche aiuto su questo thread AskDifferent . È stato suggerito di usarlo come file DefaultKeyBinding.dict :

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

Questo consiglio ha funzionato (grazie, ragazzi!), ma ho già un DefaultKeybinding.dict funzionante nel formato XML, quindi ho voluto provare a farlo funzionare in questo modo. Per prima cosa ho aggiunto solo questo testo nella parte inferiore del mio file esistente:

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

E ho anche provato a creare un nuovo file in formato XML con la sola voce + :

<?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>

Ma nessuno dei due file ha funzionato. La situazione apparente, quindi, è che puoi riassociare + solo nel formato NeXT vecchio stile e non nel formato plist XML. Le mie domande sono:

  1. È accurato, o la sintassi dovrebbe cambiare in qualche modo quando sto passando al formato XML?
  2. Mi pento di spostare il resto del mio file DefaultKeyBinding.dict sulla vecchia sintassi? Non sarebbe molto lavoro farlo - è solo una o due dozzine di voci - ma non sono sicuro che il vecchio stile sia deprecato o sconsigliato per qualche altro motivo.

Modifica: Original DefaultKeyBinding.dict

Qualcuno ha richiesto informazioni sul mio file originale nei commenti, quindi immagino che potrei anche includere l'intera cosa qui.

<?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>
    
posta Micah R Ledbetter 14.09.2011 - 23:41
fonte

2 risposte

3

Non penso che avrai problemi con il formato precedente. Tutti gli esempi che ho trovato usano la vecchia notazione NeXT. Anche se non riesco a spiegare perché il formato XML non ha funzionato, c'è una soluzione alternativa per questa particolare scorciatoia da tastiera che significherebbe che puoi lasciare intatto il DefaultKeyBinding.dict esistente.

C'è un'applicazione chiamata KeyRemap4MacBook che è scaricabile gratuitamente e puoi vedere dallo screenshot qui sotto, puoi rimappare il + scorciatoia da tastiera senza convertire il resto del tuo file DefaultKeyBinding.dict e questo metodo non è limitato alle applicazioni Cocoa.

    
risposta data 15.09.2011 - 02:01
fonte
3

\U007f non può essere utilizzato negli elenchi di proprietà XML. Dovresti sostituirlo con &#x007f; o un letterale DEL carattere.

Puoi convertire un plist vecchio stile in XML con plutil :

plutil -convert xml1 test.plist

E da XML a vecchio stile con pl :

pl -input test.plist

My DefaultKeyBinding.dict contiene attualmente 151 righe e non ho incontrato alcun problema memorizzandolo come un elenco di proprietà vecchio stile . Quelle pubblicate da Brett Terpstra e Jacob Rus sono anche nel formato vecchio stile.

    
risposta data 12.12.2011 - 17:59
fonte

Leggi altre domande sui tag