DefaultKeyBinding.dict - NeXT-Format im alten Stil im Vergleich zum XML-Plist-Format


9

DefaultKeyBinding.dict

Mit der ~/Library/KeyBindings/DefaultKeyBinding.dictDatei können Sie Ihre eigenen Tastenkombinationen in Mac OS X definieren. Sie kann in einem von zwei Formaten vorliegen: im NeXT-Format im alten Stil ( Beispiel ) oder im XML-Plist-Format im modernen Stil ( Beispiel ).

Nachbinden +

Ich wollte Command-Backspace ( + ) neu binden deleteWordBackward:und habe in diesem AskDifferent-Thread Hilfe bekommen . Es wurde vorgeschlagen, dass ich dies als meine DefaultKeyBinding.dictDatei verwende:

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

Dieser Rat hat funktioniert (danke, Leute!), Aber ich habe bereits eine Arbeit DefaultKeybinding.dictim XML-Format, also wollte ich versuchen, es so zum Laufen zu bringen. Ich habe zuerst nur diesen Text am Ende meiner vorhandenen Datei hinzugefügt:

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

Außerdem habe ich versucht, eine brandneue XML-formatierte Datei mit nur dem Eintrag + zu erstellen :

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

Aber keine der Dateien funktionierte. Die offensichtliche Situation ist also, dass Sie + nur im alten NeXT-Format und nicht im XML-Plist-Format neu binden können . Meine Fragen sind:

  1. Ist das korrekt oder sollte sich die Syntax irgendwie ändern, wenn ich zum XML-Format wechsle?
  2. Bereue ich es, den Rest meiner DefaultKeyBinding.dictDatei auf die alte Syntax verschoben zu haben? Es wäre nicht viel Arbeit, dies zu tun - es sind nur ein oder zwei Dutzend Einträge -, aber ich bin mir nicht sicher, ob der alte Stil aus einem anderen Grund veraltet oder schlecht beraten ist.

Bearbeiten: Original DefaultKeyBinding.dict

Jemand hat in den Kommentaren Informationen zu meiner Originaldatei angefordert, daher denke ich, dass ich das Ganze genauso gut hier aufnehmen könnte.

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

Ich habe das XML-Format nicht verwendet, bin aber gespannt, ob Sie in Ihrer vorhandenen XML-Datei andere Metatasten in Ihren Tastaturkürzeln verwenden. Verwenden Sie ~für Option oder $für Schicht?
Conorgriffin

oder ^zur Kontrolle?
Conorgriffin

Ich habe Arbeitseinträge mit ~und ^, aber keine mit $oder @. (Hinweis: Ich habe meine ursprüngliche Datei DefaultKeyBindings.dict ebenfalls zum OP hinzugefügt, falls sich dies als nützlich herausstellt.)
Micah R Ledbetter

Es ist seltsam, ich kann es auch nicht zum Laufen bringen. Es scheint nicht sehr gut dokumentiert zu sein. Sie haben nur eine kleine Anzahl von Verknüpfungen, die nicht nur aus 1 Meta-Schlüssel und 1 Buchstaben bestehen. Versuchen Sie also, diese in Tests umzuwandeln, und wenn sie funktionieren, werden es wahrscheinlich auch Ihre anderen tun. Es kann vorkommen, dass die Darstellung des Befehlsschlüssels @im XML-Stil der plist-Datei nicht akzeptiert wird. Es macht nicht viel Sinn, aber ich kann nichts mehr darüber finden.
Conorgriffin

Am Ende hat Apple einen Fehler gemeldet. Mal sehen, ob sie antworten :).
Micah R Ledbetter

Antworten:


3

Ich glaube nicht, dass Sie Probleme mit dem älteren Format haben werden. Alle Beispiele, die ich gefunden habe, verwenden die alte NeXT-Notation. Obwohl ich nicht erklären kann, warum das XML-Format nicht funktioniert hat, gibt es eine Problemumgehung für diese spezielle Tastenkombination, die bedeuten würde, dass Sie Ihr vorhandenes Format DefaultKeyBinding.dictunberührt lassen können.

Es gibt eine Anwendung namens KeyRemap4MacBook, die kostenlos heruntergeladen werden kann . Wie Sie aus dem folgenden Screenshot ersehen können, können Sie die Tastenkombination + neu zuordnen, ohne den Rest Ihrer DefaultKeyBinding.dictDatei zu konvertieren. Diese Methode ist nicht auf Cocoa-Anwendungen beschränkt.

KeyRemap4MacBook


3

\U007fkann nicht für XML-Eigenschaftslisten verwendet werden. Sie müssten es durch &#x007f;oder ein wörtliches DELZeichen ersetzen .


Sie können eine Plist im alten Stil in XML konvertieren mit plutil:

plutil -convert xml1 test.plist

Und von XML zu altmodisch mit pl:

pl -input test.plist

Mein DefaultKeyBinding.dict besteht derzeit aus 151 Zeilen, und ich habe keine Probleme beim Speichern als Eigenschaftsliste im alten Stil festgestellt. Die von Brett Terpstra und Jacob Rus geposteten sind ebenfalls im alten Format.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.