XcodeやIntelliJ系IDE(Android Studio, WebStorm, etc), SublimeなんかでVimモードで普段コードを書いていると、各ソフトでの設定ではなくMacの共通設定としてたとえばescapeキーの割り当てなんかはしておきたいなと思って調べたので、記録を残しておきます。
結論としてはMac OSの標準機能ではちょっと難しく、やはりKey Remappingのソフトとしては有名なKarabinerを使うのが一番簡単かなと思いました。
Karabinerはデフォルトでも使える設定が非常に豊富で、個人的には
- 英語キーボードでのCommandへの英数/かなキー割り当て
なんかは重宝していて、このためだけでもインストールがマストだと思っています。
で、今回やりたいのは何か他のキーを押した時にEscapeとして動いて欲しいということ。
僕の場合はCaps Lock + aをEscapeにしたかったのです。
Karabinerでは自身の設定ファイルであるprivate.xmlを編集することで独自カスタマイズもできるようになっています。
KarabinerのPreferenceからMisc&Installの項を見てもらえると、private.xmlを開けるボタンがあるので、そちらを押して出てきたxmlファイルをエディタで開いてください。
「Ctrl + A」を「Escape + 英数」に変えるには以下のように書きます。
<?xml version="1.0"?>
<root>
<item>
<name>Ctrl-L+A also works as Escape</name>
<identifier>private.ctrl_a_to_escape</identifier>
<autogen>__KeyToKey__
KeyCode::A, ModifierFlag::CONTROL_L,
KeyCode::ESCAPE, KeyCode::JIS_EISUU
</autogen>
</item>
</root>
nameは実際にKarabinerの設定一覧で見える名前です。
identifierはこのitemを一意に特定するためのIDで、private設定なので
private.[一意になる名前]
を好きにつければ良いと思います。
その後に実際のキーのリマップ内容を記載します。
KeyToKeyであるキーから他のキーへのリマップであることを宣言し、左側のControlとKeyのAを押すと、Escapeと英数が同時に押されたとみなすという設定ですね。
Escapeだけでなく英数も入れているのは、Escapeで挿入モードを抜けたあとに文字入力モードが「かな」になっていると、再度たとえばi等を押して挿入モードに入ろうとしたときに「い」と入力されてしまい意図した動作にならないため、自動的に「英数」に戻るようにしています。
設定を終えればKarabinerの設定画面でReload XMLを押すと、入れた設定が出てくるはずなので、それを有効化するだけです。私の場合はCaps LockをCtrlに変えている(これはMac OS Xのキーボード設定から可能です)ので、これでCaps LockにAボタンという非常に押しやすいキーで挿入モードからEscapeすることが可能になりました。
簡単ですね。
その他、自分でもっといじりたいという方は
こちらを見ると色々な情報が載っています。ここでKeyCodeやModifierの一覧などが確認できます。
結局Karabinerのプライベートカスタム設定のやり方、になってしまいましたが、誰かのお役に立てば幸いです