Help us understand the problem. What is going on with this article?

Mac OS XでKarabinerを使ってEscapeキーへのショートカットを登録する

More than 5 years have passed since last update.

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ファイルをエディタで開いてください。

Screen_Shot_2015-01-25_at_3_18_52_PM.png

「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の設定一覧で見える名前です。

Screen Shot 2015-01-25 at 3.24.10 PM.png

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のプライベートカスタム設定のやり方、になってしまいましたが、誰かのお役に立てば幸いです:smiley:

_rdtr
Software engineer in Silicon Valley. Go, Python, Docker, CoreOS. Want to learn Rust. Used to be a full-stack engineer but now mainly dealing with backend & infrastructure things.
http://blog.rdtr.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away