長年 SwapOptCmd を愛用してきたが、 OS X El Capitan にアップグレードしたらうまく動かなくなってしまったので、 Karabiner の Custom Setting で代用した。
この private.xml で、 Option_R <=> Command_R / Option_L <=> Command_L をそれぞれ Terminal.app 上でだけ入れ替える。
private.xml の書き方は Karabiner private.xml to swap option and command keys for Parallels · GitHub が大変参考になった(というかこれをコピペして改変しただけ)
com.apple.Terminal みたいな識別子?の調べ方は、 $ launchctl list | grep -i term
などとした。プロセス名か何かの数字が末尾についていたけど勘で無視したら平気だった。
複数キー同時押しの場合も入れ替わってしまったままなのでスクリーンキャプチャを撮るキーボードショートカットも Terminal.app がアクティブなときだけ変わってしまう(SwapOptCmd が動いてたときはそういうことはなかった)が、普段 Shell や Emacs で Command_R をめちゃくちゃ多用する際の不便さとストレスを考えたら全然我慢できるレベル。
=> ModifierFlag を使えばキーのコンビネーションのときもカスタマイズできたので、スクリーンキャプチャを撮るのとアプリケーションウィンドウを切り替えるのはキープするようにしてみた。 https://github.com/kyanny/karabiner-terminal-swap-option-command/commit/6265264609d3ec343042b721d7d57452a04a1d75 キーを押す順番でうまく通らなかったり、完璧とは言えないが、まぁとりあえず。
=> 今度は左右 Command キーを単体で押したときに IME を切り替えるやつ(Karabiner の設定でアサインしたキー)が効かなくなったり、いろいろ不都合があるので諦めて iTerm2 に乗り換えたらあっさり解決した。 Keys で左右それぞれ Cmd Opt を入れ替えただけ。