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 保存 */
}
}
| modifire | Key |
|---|---|
| ^ | Ctrl (コントロール) |
| $ | Shift (シフト) |
| ~ | Option (オプション) |
| @ | Command (コマンド) |
テキスト編集系の Cocoa アプリケーションに標準で備わっている補完機能 (Complete)。とても便利な機能なのだが、標準のキーバインドは F5 または Option + Esc と使いにくいコンビネーションが割り当てられているので使いやすいコンビネーションに変更してみた。僕の設定はこんな感じ DefaultKeyBinding.dict
ただ残念なことにこの補完候補が表示されるウィンドウでカーソルを移動するキーバインドの設定の仕方が分からない。矢印キーで移動するしかないのだ。Ctrl-N と Ctrl-P で上下に移動したいのだがどうすればいいんだろう。
- Basic Event Handling: Text System Defaults and Key Bindings [ Apple Developer Connection ]
- Cocoaアプリのキーバインドにこだわる(1) [【コラム】OS X ハッキング! ]
- Cocoaアプリのキーバインドにこだわる(2) [【コラム】OS X ハッキング! ]
