DefaultKeyBinding.dict - format NeXT à l'ancienne vs format plist XML


9

DefaultKeyBinding.dict

Le ~/Library/KeyBindings/DefaultKeyBinding.dictfichier vous permet de définir vos propres raccourcis clavier sous Mac OS X. Il peut être dans l'un des deux formats: format NeXT à l'ancienne ( exemple ) ou format XML plist de style moderne ( exemple ).

Reliure +

Je voulais relier la commande-backspace ( + ) à deleteWordBackward:, et j'ai obtenu de l'aide dans ce thread AskDifferent . Il a été suggéré que j'utilise ceci comme mon DefaultKeyBinding.dictfichier:

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

Ce conseil a fonctionné (merci, les gars!), Mais j'ai déjà un travail DefaultKeybinding.dictau format XML, donc je voulais essayer de le faire fonctionner de cette façon. J'ai d'abord ajouté juste ce texte près du bas de mon fichier existant:

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

Et j'ai également essayé de créer un tout nouveau fichier au format XML avec juste l' entrée + :

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

Mais aucun des fichiers n'a fonctionné. La situation apparente est donc que vous pouvez relier + uniquement dans le format NeXT à l'ancienne, et non dans le format XML plist. Mes questions sont:

  1. Est-ce exact ou la syntaxe devrait-elle changer d'une manière ou d'une autre lorsque je passe au format XML?
  2. Vais-je regretter d'avoir déplacé le reste de mon DefaultKeyBinding.dictfichier vers l'ancienne syntaxe? Ce ne serait pas beaucoup de travail de le faire - ce n'est qu'une ou deux douzaines d'entrées - mais je ne sais pas si l'ancien style est déconseillé ou mal avisé pour une autre raison.

Modifier: Original DefaultKeyBinding.dict

Quelqu'un a demandé des informations sur mon dossier d'origine dans les commentaires, donc je pense que je pourrais aussi bien inclure le tout ici.

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

Je n'ai pas utilisé le format XML, mais je suis curieux de savoir si vous utilisez d'autres méta-touches dans vos raccourcis clavier dans le fichier XML existant que vous avez. Utilisez-vous ~une option ou $un quart de travail?
conorgriffin

ou ^pour le contrôle?
conorgriffin

J'ai des entrées de travail avec ~et ^, mais aucune avec $ou @. (Remarque: j'ai continué et j'ai ajouté mon fichier DefaultKeyBindings.dict original à l'OP au cas où cela se révélerait utile.)
Micah R Ledbetter

C'est étrange, je ne peux pas le faire fonctionner non plus. Cela ne semble pas très bien documenté. Vous n'avez qu'un petit nombre de raccourcis qui ne sont pas simplement 1 méta-clé et 1 lettre, alors essayez peut-être de les convertir en test et s'ils fonctionnent, il est probable que vos autres le seront aussi. Il peut arriver que la représentation de la touche de commande @ne soit pas acceptée dans le style XML du fichier plist. Cela n'a pas beaucoup de sens mais je ne trouve rien de plus à ce sujet.
conorgriffin

J'ai fini par déposer un bug avec Apple à ce sujet; Voyons voir s'ils répondent :).
Micah R Ledbetter

Réponses:


3

Je ne pense pas que vous aurez des problèmes avec l'ancien format. Tous les exemples que j'ai trouvés utilisent l'ancienne notation NeXT. Bien que je ne puisse pas expliquer pourquoi le format XML n'a pas fonctionné, il existe une solution de contournement pour ce raccourci clavier particulier qui signifierait que vous pouvez laisser votre existant DefaultKeyBinding.dictintact.

Il existe une application appelée KeyRemap4MacBook qui est téléchargeable gratuitement et vous pouvez voir sur la capture d'écran ci-dessous, vous pouvez remapper le raccourci clavier + sans convertir le reste de votre DefaultKeyBinding.dictfichier et cette méthode n'est pas limitée aux applications Cocoa.

KeyRemap4MacBook


3

\U007fne peut pas être utilisé sur les listes de propriétés XML. Vous devez le remplacer par &#x007f;ou par un DELcaractère littéral .


Vous pouvez convertir un plist à l'ancienne en XML avec plutil:

plutil -convert xml1 test.plist

Et du XML à l'ancien avec pl:

pl -input test.plist

Mon DefaultKeyBinding.dict est actuellement de 151 lignes, et je n'ai rencontré aucun problème en le stockant comme une liste de propriétés à l'ancienne. Celles publiées par Brett Terpstra et Jacob Rus sont également au format ancien.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.