はじめに
この記事は次のような非常にニッチな設定をしている人向けです.
- WindowsをParallelsで動かしている
- US配列のキーボードを使っており,karabiner-elementsで左右のCmdキーをIMEのオンオフに割り当てている(下図参照)
- Windowsでも同様にIMEのオンオフがしたい
- US配列のキーボードを使っており,karabiner-elementsで左右のCmdキーをIMEのオンオフに割り当てている(下図参照)
従来はWindows側のレジストリを書き換えることで,Scancodeのマッピングを変更し対応していました(例).具体的には,左CmdをF13,右CmdをF14に割り当て,それらをIMEの設定でIMEオフ/オンに対応づけるという方法をとっていました(似た方法 1 2).
しかし,最近になってMicrosoft IMEがアップデートされ,自由なキーコンフィグができなくなりました.
https://www.atmarkit.co.jp/ait/articles/2011/13/news012.html
そこで,根本から設定を見直す必要に駆られたので,設定のメモです.
使用ツール
手順
- microsoft/PowerToysをインストール
- PowerToysのKeyboard Managerでキーの再マップを設定
(a) このとき,キーマップの変更先はそれぞれ左Cmdが"IME Non-Convert",右Cmdが"IME Convert"になります - Microsoft IMEの設定を以下の画像の通りにする
手順は以上です.
なぜこんな回りくどいことをしないといけないのか
私の認識が合っている自信はないので,以下はあまり参考になさらないでください.mac日本語キーボードに存在する英数,かなキーはとんでもない仮想キーコードを発出するため,回りくどい方法で実現する必要があるようです.
まずmacの日本語キーボードにおけるParallelsやBootCampでの扱いを確認します.手元に実機がないため不明ですが,どうやらCapsLockキーを半角/全角キーに割り当てることで対応しているようです3.
では,Karabiner-Elementsによるキーバインドの上書きはどうなっているでしょうか.コンフィグファイルを確認すると,"japanese_eisuu"および"japanese_kana"の記述が見つかります.これらは日本語キーボードに存在する英数キー,かなキーのキーコードを示しているものと思われます.ここで上段での確認をふまえると,そもそも日本語キーボードであってもこれらのキーはWindows側で使えない状態ですので,独自の設定をする必要があるわけです.
さて,そうするとmac日本語キーボードの英数,かなキーの仮想キーコードが気になります.手順に載せたPowerToysのスクリーンショットから明らかなように,英数キーはVK 235(0xEB)です.一方で,かなキーはUndefinedとなっています.私の試行錯誤から得られたかなキーのキーコードは255(0xFF)でした.
これらからスキャンコードを得られれば,スキャンコードの再マップをレジストリ書き換えで行えるのですが,情報を見つけられませんでした.代わりに,実機WindowsでのUSキーボードを用いた事例4が見つかったので,これを参考にPowerToysで再マップをしたところうまく行ったところです.
Parallelsで英数,かなキーを無変換,変換キーに再マップしてくれる機能があれば,このような回りくどいことをしなくても良いのになぁと思いました.