USキーボード+Parallelsは色々曲者な気がする。
日本語入力の切り替えでCapsLockを使いたい
手っ取り早く解決方法を知りたい方はこちらへ
私はWindowsPCでも、MacでもCapsLockを使用して日本語の切り替えを行なっている。
まあその心としては、会社で支給されているパソコンのキーボードは強制で日本語キーボード(ノートPCなので交換が出来ない)のため、日本語切り替えの動作を統一かしたいというのが狙い。
Windowsもいつの日からかCapsLockでの日本語切り替えがデフォルトで出来るようになっているので、それを活用している。
そのため、同じくMacのParallelsで使用しているWindowsでもCapsLockで日本語切り替えをしたいのだけども、なんか動作がおかしい。
色々調べた結果、原因と解決方法を考えたのでここに記録として残しておく。
うまくいかない動作
そもそもなぜMacのParallelsでCapsLockで日本語切り替えが出来ないのか、普通にWindowsのPowerToysじゃダメなのか。
色々試しましたが、PowerToysじゃダメでした。
事象
まずはPowerToysでキーバインドを試しました。
MacのキーボードでCapsLockを押したら、普通に考えたらParallelsにもCapsLockが送信されるため、それをPowerToysでALT+`に変換してやれば動作するだろうと思い設定。

がしかし、これだと私の環境の場合、なぜかIMEのオンオフが繰り返されてしまい、うまく動作しない。
ブラウザのキーボード入力アプリで調べたらどうやら1度の入力で複数のCapsLockが押されていることになっている様子。
原因
色々調べたら、これはMac側の設定によるものだと判明。
CapsLockで日本語と英語を切り替えるために設定を入れているが、その設定をONにしているとParallels側に複数回CapsLockが送信されてしまうみたい。

なんかこの辺りはOS側で上手にやって欲しいというのが本音だが、まあ無理なんでしょうね。
対応方法
対応方法としては、みんな大好きKarabinerでParallesの時だけ別のキーを送信する方法。
1.karabinerの設定画面から、「Complex Modifications」の「Add your own rule」をクリック

2.出てきた入力欄に以下を入力
{
"description": "Caps Lockキーをパラレルズの時だけ右Altキーと`キーを送信する設定",
"manipulators": [
{
"conditions": [
{
"bundle_identifiers": [
"^com\\.parallels\\.desktop$",
"^com\\.parallels\\.vm$",
"^com\\.parallels\\.desktop\\.console$",
"^com\\.parallels\\.winapp\\."
],
"type": "frontmost_application_if"
}
],
"from": {
"key_code": "caps_lock",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "grave_accent_and_tilde",
"modifiers": ["right_alt"]
}
],
"type": "basic"
}
]
}

説明すると、どうやらCapsLockのキーは複数入力されてしまうので、代わりにParallesがアクティブウィンドウになっている時だけ、CapsLocklを押すとWindowsのUSキーボード時の日本語入力切り替えの「Alt+`」が送信されるようにした。
こうすることで、Parallels上でCapsLockが押されると無事日本語切り替えができるようになる。
その他
長年Mac+Parallesを使っているけども、いまだに良いキーマッピングが見つかっていない。
今の設定だとWinキーが行方不明な状態になっていて、どうすれば良いか検討中・・・
なんかいい設定があれば教えてください。
コメント