Karabinerの設定を楽に書けるやつ作った
経緯
いろいろ思うところあってエディタを乗り換えようと思ったんだけど、キーバインドを異常にカスタマイズしているおかげで、みんなが使うはずの基本的なキーバインドが衝突して押せないという事態が発生し、Karabinerの設定を大きく変える必要が出てきた。
で、xml書いてたんだけど、xmlいじるの大変だし、Karabiner特有の識別子を知らないと書けないのでなかなか進まなかった。
そこで、Karabinerの設定を書くのが楽になるよう、RubyのDSLを書くとXMLを吐いてくれるやつを作った。
どう使うのか
まず、こういうのを書いて~/.karabiner
として保存する。
item "Control+PNBF to Up/Down/Left/Right", not: "TERMINAL" do remap "C-p", to: "Up" remap "C-n", to: "Down" remap "C-b", to: "Left" remap "C-f", to: "Right" end
で、gem install karabiner
しておいて、シェルでkarabiner dsl
を実行する。
すると、~/Library/Application Support/Karabiner/private.xml
に以下のxmlが書き出され、Karabinerに読み込まれる。
<?xml version="1.0"?> <root> <item> <name>Control+PNBF to Up/Down/Left/Right</name> <identifier>remap.control_pnbf_to_up_down_left_right</identifier> <not>TERMINAL</not> <autogen>__KeyToKey__ KeyCode::P, VK_CONTROL, KeyCode::CURSOR_UP</autogen> <autogen>__KeyToKey__ KeyCode::N, VK_CONTROL, KeyCode::CURSOR_DOWN</autogen> <autogen>__KeyToKey__ KeyCode::B, VK_CONTROL, KeyCode::CURSOR_LEFT</autogen> <autogen>__KeyToKey__ KeyCode::F, VK_CONTROL, KeyCode::CURSOR_RIGHT</autogen> </item> </root>
何が便利か
そもそも、Karabinerにはたくさん便利なキーバインドが入っているので、普通は自分で設定を書く必要はない。
けど、たまに他の人はやらなそうなバインドをやりたくなることがあり、そういうとき設定を追加するコストが下がるのがまず便利。
これとこれでは書きやすさも読みやすさも全然違う。
あと、僕はチェックをいれたい設定が多く、新しいパソコンを使いはじめるたびに設定項目を探すのは大変なので、C-p,n,b,fみたいな本家がサポートしているバインドもprivate.xmlに追加してある。
これで探すコストが減る。
(本当はもうちょっとスマートな方法で設定をONにするのを自動化したい)
最後に、設定ファイルはdotfilesというリポジトリで管理していて、統一性の問題でキーバインドの設定もドットで始まるファイル名にしたかったというのもあった。
所感
最近Goばっか書いてたけどRubyはカジュアルに美しいDSL作れるのが良いと思った