MacBook Air(USキーボード)でキーマップをカスタマイズしてみた

MacBook Air 2012を購入してしばらくモバイル専用で使っていたけど、真面目にメインで使おうと思ったらやっぱりキーボードがめんどくさい。
今までメインではWindowsHHK Professional 2 を使っていたのでもともとかなり癖がある。
矢印キーはfnキーを押しながらで、F1~12もfnキーを押しながら使うのがスタイルで慣れていたので、Macでもできるだけ同じ感覚で使いたかった。
メインで使う気になれなかったのはキーボードが使いづらかったからだけど、一度は挫折したキーボードのremapで良い感じになってきたのでメモ。
ちなみに当然MacもUSキーボードでcapslockはctrlキーと入れ替えており、それを前提としたカスタマイズ。

使うのは多くの人が使っていると思うKeyRemap4MacBook
KeyRemap4MacBook - OS X用のソフトウェア

やりたいこと

自分の設定ではdeleteとバックスラッシュを入れ替えたり、Escとバッククォートを入れ替えたりもしているんだけど、そこはHHKになるべく近づけるため。
これらの設定も当然できるんだけど、そのあたりは人それぞれなのでスルー。

今回一番やりたかったことは

  • 「Control + {C,V,X}」を「command + {C,V,X}」に割り振る

ということ。
デフォルトの項目でもこれは「For PC Users」にあるんだけど、除外の項目にVim(MacVim-KaoriYa)とFirefoxがない。つまり、設定するとContorl+Vでペーストはできるようになるんだけど、gVimで矩形選択ができなくなるということになる(FirefoxはVimperatorでvimキーバインドにしてるからこちらも除外できないと困る)。
普段はターミナルで作業するからgVimwikiの編集とかぐらいにしか使わないんだけど、vimと設定はなるべくあわせておきたい。キーバインドの設定とか変えればいいんだろうけど、そっちはいじりたくない。
Mac使うんだからMacキーバインドでやれよという話もあるけど、WinもLinuxも使うのでキーの配置と操作内容はなるべく一致させておきたい。
Winから来た人はやっぱControlとcommandが別でそれぞれ役割もってるのが戸惑う箇所なんではないかと思う。ターミナル使ってると特に。。。

実際の作業

でいろいろ見ていると、private.xmlで項目追加すれば除外アプリケーションを自分で設定できるということに気づいた。ググってみると同じようにカスタマイズしてる人もいたのでそれらを参考にprivate.xmlを設定した。
設定は 「/Library/org.pqrs/KeyRemap4MacBook/app/KeyRemap4MacBook.app/Contents/Resources/include/checkbox/for_pc_users.xml」を参考にカスタマイズしてついでに他に設定したいことも追加した。
ちなみにカスタマイズは直接変更を加えるのではなくprivate.xmlで行うのが作法のらしい。

<?xml version="1.0"?>
<root>
  <appdef>
    <appname>MACVIM</appname>
    <equal>org.vim.MacVim</equal>
  </appdef>

  <item>
    <name>Use PC Style Copy/Paste #5</name>
    <appendix>(Control+C to Command_L+C)</appendix>
    <appendix>(Control+V to Command_L+V)</appendix>
    <appendix>(Control+X to Command_L+X)</appendix>
    <appendix>(Except in Terminal, VM, RDC, Emacs, X11, Eclipse, MacVim)</appendix>
    <identifier>remap.copy_paste_winstyle_no_term_and_macvim</identifier>
    <not>EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11, ECLIPSE, MACVIM</not>
    <autogen>--KeyToKey-- KeyCode::C, VK_CONTROL, KeyCode::C, ModifierFlag::COMMAND_L</autogen>
    <autogen>--KeyToKey-- KeyCode::V, VK_CONTROL, KeyCode::V, ModifierFlag::COMMAND_L</autogen>
    <autogen>--KeyToKey-- KeyCode::X, VK_CONTROL, KeyCode::X, ModifierFlag::COMMAND_L</autogen>
  </item>
  <item>
    <name>Use PC Style Select All #2</name>
    <appendix>(Control+A to Command_L+A)</appendix>
    <appendix>(Except in Terminal, VM, RDC, Emacs, X11, Eclipse, MacVim)</appendix>
    <identifier>remap.select_all_winstyle_no_term_and_macvim</identifier>
    <not>EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11, ECLIPSE, MACVIM</not>
    <autogen>--KeyToKey-- KeyCode::A, VK_CONTROL, KeyCode::A, ModifierFlag::COMMAND_L</autogen>
  </item>
  <item>
    <name>Use PC Style New #2</name>
    <appendix>(Control+N to Command_L+N)</appendix>
    <appendix>(Except in Terminal, VM, RDC, Emacs, X11, Eclipse, MacVim, FireFox)</appendix>
    <identifier>remap.new_winstyle_no_term_and_macvim</identifier>
    <not>EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11, ECLIPSE, MACVIM, FIREFOX</not>
    <autogen>--KeyToKey-- KeyCode::N, VK_CONTROL, KeyCode::N, ModifierFlag::COMMAND_L</autogen>
  </item>
  <item>
    <name>Use PC Style Find #2</name>
    <appendix>(Control+F to Command_L+F)</appendix>
    <appendix>(Control+G to Command_L+G)</appendix>
    <appendix>(F3 to Command_L+G)</appendix>
    <appendix>(Control+F3 to Shift+Command_L+G)</appendix>
    <appendix>(Except in Terminal, VM, RDC, Emacs, X11, Eclipse, MacVim, FireFox)</appendix>
    <identifier>remap.find_winstyle_no_term_and_macvim</identifier>
    <not>EMACS, TERMINAL, VIRTUALMACHINE, REMOTEDESKTOPCONNECTION, X11, ECLIPSE, MACVIM, FIREFOX</not>
    <autogen>--KeyToKey-- KeyCode::F, VK_CONTROL, KeyCode::F, ModifierFlag::COMMAND_L</autogen>
    <autogen>--KeyToKey-- KeyCode::G, VK_CONTROL, KeyCode::G, ModifierFlag::COMMAND_L</autogen>
    <autogen>--KeyToKey-- KeyCode::F3, VK_CONTROL, KeyCode::G, ModifierFlag::COMMAND_L | ModifierFlag::SHIFT_L</autogen>
    <autogen>--KeyToKey-- KeyCode::F3, KeyCode::G, ModifierFlag::COMMAND_L</autogen>
  </item>
</root>

簡単に解説するとでアプリケーションを定義して各セクションの要素で指定するだけ。あとはネーミングが既存のものと被らないようにナンバリングしてある。
設定してる内容は以下。

  • 「Control + {C,V,X}」を「command + {C,V,X}」に割り振る
    • ただしMACVIMは除く
  • 「Control + A」を「command + A」に割り振る
    • ただしMacVimは除く
  • 「Control + N」を「command + N」に割り振る
    • ただしMacVim/Firefoxは除く
  • 「Control + F」を「command + F」に割り振る
    • ただしMacVim/Firefoxは除く

Firefoxが入っている理由はvimperatorアドオンを入れてvimコマンドで操作しているから。
これで他のアプリケーションでもControl+Nで新規ウインドウとかが可能になった。
大分使いやすくなったけど他の人はどうやってるんだろうかと気になる。同じこと考える人はいると思うんだけど、もっとうまいやり方があるのかな。

他にも必要な設定があれば自分で簡単に設定できるのは本当にすばらしい。KeyRemap4MacBookは神ツールと言える。