DefaultKeyBinding.dict-古いスタイルのNeXT形式とXML plist形式


9

DefaultKeyBinding.dict

この~/Library/KeyBindings/DefaultKeyBinding.dictファイルを使用すると、Mac OS Xで独自のキーバインディングを定義できます。これは、旧式のNeXT形式()または現代式のXML plist形式()の2つの形式のいずれかになります。

再バインド+

コマンドバックスペース(+ )をに再バインドしたかったのでdeleteWordBackward:このAskDifferentスレッドでいくつかの助けを得ました。これを自分のDefaultKeyBinding.dictファイルとして使用することが提案されました:

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

このアドバイスは(ありがとう、みんな!)うまくいきましたが、私は既にDefaultKeybinding.dictXML形式で作業しているので、そのように機能させたいと思っていました。最初に、次のテキストを既存のファイルの下部に追加しました。

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

また、+ エントリだけを含むまったく新しいXML形式のファイルを作成してみました 。

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

しかし、どちらのファイルも機能しませんでした。したがって、明らかな状況は、古いスタイルのNeXT形式でのみ+ バインドでき、XML plist形式では再バインドできないことです。私の質問は:

  1. これは正確ですか、それともXML形式に切り替えたときに構文が何らかの形で変化するのでしょうか?
  2. DefaultKeyBinding.dictファイルの残りの部分を古い構文に移動したことを後悔しますか?それを行うのはそれほど多くの作業ではないでしょう-それはたったの1ダースまたは2ダースのエントリです-しかし、他の理由で古いスタイルが非推奨であるか不適切なアドバイスであるかどうかはわかりません。

編集:元のDefaultKeyBinding.dict

誰かが私の元のファイルに関する情報をコメントで要求したので、ここにすべてを含めたほうがよいと思います。

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

私はXML形式を使用していませんが、既存のXMLファイルのキーボードショートカットで他のメタキーを使用しているかどうか知りたいです。~オプションまたは$シフトに使用していますか?
conorgriffin 2011

または^制御のため?
conorgriffin 2011

~および^で作業中のエントリがありますが、$またははありません@。(注:役に立つことがわかった場合に備えて、元のDefaultKeyBindings.dictファイルもOPに追加しました。)
Micah R Ledbetter

奇妙なことですが、動作させることもできません。十分に文書化されていないようです。単に1つのメタキーと1つの文字ではない少数のショートカットしかないので、それらをテスト用に変換してみてください。それらが機能する場合、他のショートカットも機能する可能性があります。@XML形式のplistファイルではコマンドキーを表すことができない場合があります。それはあまり意味がありませんが、それ以上何も見つけることができません。
conorgriffin 2011

これに関してAppleにバグを報告することになりました。彼らが返信するかどうか見てみましょう:)。
Micah R Ledbetter、2011

回答:


3

古い形式を使用しても問題はないと思います。私が見つけたすべての例は、古いNeXT表記を使用しています。XML形式が機能しなかった理由を説明することはできませんが、この特定のキーボードショートカットの回避策がありますDefaultKeyBinding.dict

KeyRemap4MacBookと呼ばれる無料でダウンロードできるアプリケーションがあり、以下のスクリーンショットから確認できます。ファイルの残りの部分を変換せずに+ キーボードショートカットを再マップできDefaultKeyBinding.dictます。この方法はCocoaアプリケーションに限定されません。

KeyRemap4MacBook


3

\U007fXMLプロパティリストでは使用できません。あなたはそれを&#x007f;またはリテラルDEL文字に置き換える必要があります。


古いスタイルのplistをXMLに変換するにはplutil

plutil -convert xml1 test.plist

そしてXMLから古いスタイルにpl

pl -input test.plist

私のDefaultKeyBinding.dictは現在151行ですが、これを古いスタイルのプロパティリストとして保存する問題に遭遇していません。Brett TerpstraJacob Rusによって投稿されたものも、古いスタイルの形式です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.