Karabiner-Elements を使って iTerm2 と RDP 以外では ctrl を cmd にする (Mistel BAROCCO MD770)
MacBook に Mistel BAROCCO MD770 をつないで iTerm2 使いながらリモートデスクトップもするためのメモ。なお Ctrl と CapsLock は MD770 側で切替済み。
やったこと:
- ctrl を cmd に
- ただし iTerm と RDP 中は左 ctrl をctrl のままに
- 右 ctrl は cmd のままにすることでコピー&ペーストできるように
- 日本語変換は CapsLock でトグル
手順: Karabiner-Elements
- caps_lock を英数キーに
- Complex modifications で:
- 英数・カナキーを toggle 方式にする
- 下記設定を追加
"description": "iTerm2 と RDP 以外では ctrl を cmd にする",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "left_control",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "left_command",
"lazy": true
}
],
"conditions": [
{
"type": "frontmost_application_unless",
"bundle_identifiers": [
"^com\\.apple\\.Terminal$",
"^com\\.googlecode\\.iterm2$",
"com\\.microsoft\\.rdc\\.macos"
]
}
]
},
{
"type": "basic",
"from": {
"key_code": "right_control",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "right_command",
"lazy": true
}
],
"conditions": [
{
"type": "frontmost_application_unless",
"bundle_identifiers": [
"com\\.microsoft\\.rdc\\.macos"
]
}
]
}
]
},
これは
karabiner-elements-complex_modifications
の Map left ctrl to command, command to option, option to control unless in iTerm2 or Remote Desktop を参考にしたもの。右 ctrl の条件だけ変えてある。
本当は左右 cmd で日本語変換を切り替えたかったのだけれどそれだと iTerm 中に変換ができなくなってしまうため CapsLock に割り当てた。これでそれぞれの環境でそれなりのキーマッピングになった。
Mac から RDP で HHKB を使う
Mac から RDP で Windows で接続するとなぜか US キー配列になってしまう問題に、じゃあ HHKB(US) 使えばいいのでは?と思ったけどそれでもイマイチだったのと、その解決方法のご報告。
現状の RDP アプリ
Mac に挿した HHKB(US) はすんなりと Windows 側でも US キーボードとして使える。
ただし HHKB の右上にあるバッククォートのキーが正しく認識されないため、Alt+バッククォートによる IME の切り替えができない。
これは IME のキー設定で Ctrl+¥ に IME 切り替えを設定して解決。
だけど相変わらずバッククォートが正しく認識されないため、バッククォートとチルダ(Shift とのコンビネーション)が入力できない。これはプログラミングする上で死活問題。
困った。
ベータ版の RDP アプリ
バッククォートは正しく認識される。ただし日本語変換がインラインでできない。IME の切り替えは Mac 側で行われている模様(Cmd+Space で Mac 側の IME 切り替えが発生すると、それに応じて RDP 側の入力も変わる)。
じゃあこれで良いかというと、なぜか左右 Alt の識別がうまくいかないようで、Poderosa で左右の Alt に別々の機能を振っていても両方とも左 Alt として認識されてしまう。
困った。
どちらも微妙にうまくいかない。
解決方法
ベータ版の RDP アプリは描画がちょっともたつくなどの問題もあるため、現状の RDP を選択することにして、バッククォートとチルダを AutoHotKey で解決することにした。
バッククォートとチルダを出すためのスクリプト
sc056::Send,`` +sc056::Send,~
これで日本語入力、左右 Alt、バッククォート、チルダの問題を解決できた。