avoidnote

Cocoa アプリケーションのキーバインド

Published at 2005-07-25 (Mon) 17:08 in CotEditor, Macintosh

テキストエディタを mi から CotEditor へ移行するにあたって、Cocoa アプリケーションのキーバインディングを改めて設定し直してみた。Cocoa アプリケーションは標準で Emacs 風キーバインディングが使えるようになっていて、システムのデフォルトマッピングが記述されているファイルは

/System/Library/Frameworks/AppKit.framework/Versions/C/Resources/StandardKeyBinding.dict

ホームディレクトリ以下に次のファイルがあるとシステムディフォルトを読み込んだ後に読み込まれる。

~/Library/KeyBindings/DefaultKeyBinding.dic

このファイルは自分で作成する必要がある。システムでフォルト設定ファイルをコピーしてきて、Property List Editor で編集すればいいんだろうけど、 これは xml でなくてもよく、次のような書式でも可能なようだ。

{
    "key-combination" = "Action:";
}

キーに割り当てられるアクションは NSResponder class (Objective-C) にリストされています。例えば、シェルで使い慣れている Ctrl + u に「カーソル位置からパラグラフの先頭までをカット」と言うアクションを割り当てたければ次のようにすればいい。

{
    "^u" = "deleteToBeginningOfParagraph:";
}

Emacs のような Esc キーを使った2アクションのキーバインディングも可能です。

{
    "\033" = {
        "f" = "moveWordForward:";   /* Esc Ctrl-f 1つ後ろの単語に移動 */
        "b" = "moveWordBackward:";  /* Esc Ctrl-b 1つ前の単語に移動 */
    }

    "^x" = {
        "^s" = "save:";             /* Ctrl-x Ctrl-s 保存 */
    }
}
記述に使えるキーモディファイア
modifireKey
^Ctrl (コントロール)
$Shift (シフト)
~Option (オプション)
@Command (コマンド)

テキスト編集系の Cocoa アプリケーションに標準で備わっている補完機能 (Complete)。とても便利な機能なのだが、標準のキーバインドは F5 または Option + Esc と使いにくいコンビネーションが割り当てられているので使いやすいコンビネーションに変更してみた。僕の設定はこんな感じ DefaultKeyBinding.dict

ただ残念なことにこの補完候補が表示されるウィンドウでカーソルを移動するキーバインドの設定の仕方が分からない。矢印キーで移動するしかないのだ。Ctrl-NCtrl-P で上下に移動したいのだがどうすればいいんだろう。

Copyright © 2005 atz. All rights reserved.
Creative Commons License Movable Type Valid XHTML 1.0 Strict W3C CSS