Mac
karabiner-Elements

Karabiner-Elementsで特定アプリ以外のキーマップを変更する

More than 1 year has passed since last update.


環境


  • 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を指定しています。


iterm.json

{

"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 のチェックは外しています。ここは好みで。