環境
- MacBook Pro 2016 日本語キーボード
- USB日本語キーボード
- macOS バージョン10.12.5
- Karabiner-Elements バージョン0.91.10
前置き
Macで本格的に開発を行うようになって数ヶ月。
当初、外付けキーボードを使っているとCommandキーの位置が微妙だなぁと感じていたんですけど、やはり郷に入れば郷に従え?ということで、「慣れる方がいいのでは」と思ってました。
ところが茶軸のキーボードを使っているのでCommandキーに割り当てられたWindowsキーが重い。ひところ話題になった「スマホ指」みたいに「Command指」になってしまうのではないかという懸念が拭いきれなかった(そこまで大げさではないが痛い)ので、やっぱキーバインドするしかないな、となりました。
変換/無変換を日本語入力切替のためにいれていた Karabiner-Elements を起動します。
左Controlを左Commandに設定して…
よし完了!
いやダメじゃん。
ターミナルアプリはiTerm2を使っていたんですけど、ControlがCommandになってしまったので、いままでのキー配置で使えない。それどころかWindowsキーがCommandなので、これで1日中開発していたらより激しいCommand指になってしまう。
これは困る。
仕方がないのでiTerm2の方のキーマップでCommandキーをControlキーに変更。
「入れ替えたものをまた入れ替えるって、なにをやってるんだ」という気持ちになりましたが仕方がない。
よし完了!
いやダメじゃん。
CommandキーがControlキーになっているのでCommand+Tabのアプリ切り替えが出来ない。
うーん。どうしましょう。
そうだ。
iTerm2以外のアプリは変更する。iTerm2は変更しない。
これだ。
frontmost_application_unless を使おう!
ということで設定です。
設定
1.設定ファイルを作成する
$ vim ~/.config/karabiner/assets/complex_modifications/iterm.json
ファイル名はなんでもかまいません。わかりやすいものをつけてください。
2.以下の内容を記述し、保存。
frontmost_application_unless は今回の目的であるiTerm2を指定しています。
{
"title": "iTerm settings",
"rules": [
{
"description": "left_control to left_command(without iTerm)",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "left_control",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "left_command"
}
],
"conditions": [
{
"type": "frontmost_application_unless",
"bundle_identifiers": [
"^com\\.googlecode\\.iterm2"
]
}
]
}
]
}
]
}
3.Karabiner-Elementsを起動し、Complex Modifications タブをクリック
4.Add rule をクリック
5.iTerm settings - left_control to left_command(without iTerm) の Enable をクリック
よし完了!(今度こそ)
私はMacBookのキーは変更して欲しくないので Devices で Apple Internal Keybord/Trackpad のチェックは外しています。ここは好みで。