keyremap4macbookのremap設定を記録しておいて、再設定を簡単にする方法

keyremap4macbookはキーボードの配置をいろいろよきにはからってくれる素晴しいアプリケーション。日本語配列のキーボードを英語配列にしたり、ctrl単体でescにしたり、セミコロンをenterにしたり、spaceがshiftに変更できたりする。 ただ、毎回GUIからポチポチcheckboxをクリックして設定するのはdotfile脳になりつつある自分には辛かったので、なんとかする方法を考えてみた。

keyremap4macbookには一部機能をconsoleから使うことができる。cliのコマンドを引数無しで実行すると、以下のようにusageとexampleが表示される。

$ CMD=/Library/org.pqrs/KeyRemap4MacBook/app/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap4MacBook_cli
$ CMD
Usage:  KeyRemap4MacBook_cli list
  KeyRemap4MacBook_cli selected
  KeyRemap4MacBook_cli changed
  KeyRemap4MacBook_cli select INDEX
  KeyRemap4MacBook_cli enable IDENTIFIER
  KeyRemap4MacBook_cli disable IDENTIFIER

Example:
  KeyRemap4MacBook_cli list
  KeyRemap4MacBook_cli selected
  KeyRemap4MacBook_cli changed
  KeyRemap4MacBook_cli select 1
  KeyRemap4MacBook_cli enable remap.shiftL2commandL
  KeyRemap4MacBook_cli disable remap.shiftL2commandL

上記のコマンドで、enableを使えばremapの設定ができそうなことがわかる。引数として指定するコマンド名は サブコマンドのchangedを使うと、現在有効になっている設定を確認することができるので、それを加工する。

$ $CMD changed | sort
pointing.relative2scroll_rate=500
remap.controlL2controlL_escape=1
remap.jis_command2eisuukana_prefer_command=1
remap.jis_eisuu2commandL_eisuu=1
remap.jis_eisuu2commandL_eisuuremap.jis_escape2eisuuAndEscape=1
remap.jis_escape2eisuuAndEscape=1
remap.jis_jansi=1
remap.jis_kana2commandR_kana=1
remap.jis_kana2commandR_kanaremap.semicolon2return_controlsemicolon2semicolon=1
remap.semicolon2return_controlsemicolon2semicolon=1
remap.space2shiftL_space_keyrepeat=1
repeat.initial_wait=200
repeat.wait=20

enableコマンドはremapのみで、それ以外のrepeatなどはうまく設定できなかった。とりあえずremapの設定を実行するスクリプトを書いてみた。
https://github.com/keqh/_config/blob/master/mac/keyremap4macbook.sh

これを実行すると、remap4macbookの設定が行なわれる。これでmacの再インストールのときにGUIからマウスを使って設定する必要もないし、自分がどんな設定をしたか記録しておくことができる。