最近HHKBの英語版を買って幸せなキーボード生活を送っているのですが、一つ問題が。ノートパソコン内蔵キーボード内蔵の日本語キーボードとキー配列が共存できないんです。しかも、ユーザーごとにも切り替えられないので、HHKBを使う私と本体のキーボードを使う家族でいちいち再起動の必要が。いろいろ調べたところ最終的にうまく共存できる方法がわかりましたので書いておきたいと思います。
1つしかキーボードレイアウト設定がないWindows10
Windows10の設定にはキーボードレイアウト設定が1つしかありません。設定→時刻と言語→言語→日本語→オプションにある「ハードウェアキーボードレイアウト」です。
これを切り替えると日本語キーボードと英語キーボードの配列を切り替えられるわけですが、残念ながらいくつキーボードをつなげても1つしか設定が存在しません。
マイクロソフト的には、いやキーボードは普通は1つしかつなげないでしょ、という感じなのでしょうが、キーボードにこだわる人にはかなりの痛手。配列情報を自動的に読み取ってやってほしいところですが、なぜここだけこんなにアナログなのですかね。
レジストリをいじって設定をするしかない
で、いろいろと共存する方法を調べてみたのですが、昔のWindows10から仕様が変わったらしく、うまくいきません。
トライ&エラーで最終的にうまく言った方法を紹介したいと思います。ちなみにWindows10のバージョンは1909です。アップデートでまた仕様が変わるとうまくいかなくなるかもですが、今のところは正常に動作しています。
追記:20H1, 20H2でもそのまま使えました。素直にアップデートしてそのまま使えています。
やるべきこと概要
まずはどうすればうまくいくかの概要です。以下の4点を行うことで共存ができます:
- 「ハードウェアキーボードレイアウト」で英語キーボードに設定
- システム標準のキーボード配列を削除
- 内蔵キーボードの配列を日本語に強制的に設定
- 外付けキーボードの配列を英語に強制的に設定
もちろん、内蔵キーボードが英語、外付けキーボードが日本語の場合も応用すれば共存ができると思われます。
というわけで、上記1,2,3, 4のやり方です。
「ハードウェアキーボードレイアウト」で英語キーボードに設定
最初に設定から「ハードウェアキーボードレイアウト」の設定を英語キーボードにしておきます。
日本語キーボードからだとうまくいかないようです。
システム標準のキーボード設定を削除
まずはregedit(レジストリエディタ)を立ち上げます。左下にある「ここに入力して検索」に”regedit”と入れるのが簡単化と。そして、以下のレジストリキーを探します:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
この中に、
OverrideKeyboardType
OverrideKeyboardSubtype
という2つの値があると思うので、両方とも削除します。この値がシステム全体のキーボード並列を決めてしまい、かつ各キーボードの設定よりも優先されるようです。なので、これらを削除することで各キーボードのキー配列が有効になるようにします。
なお、この2つの値は上で紹介した「ハードウェアキーボードレイアウト」を設定しなおすと復活する点に注意が必要です。もしかしたらWindows Updateとかでも復活するかもですので、気を付けてください。
内蔵キーボードの配列を日本語に強制的に設定
次に内蔵キーボードの配列を日本語に強制的に設定します。
まず、デバイスマネージャーを開き、内蔵キーボードのデバイスインスタンスパスを探します。私の場合はキーボードの中の「標準PS/2キーボード」でした。
この中の詳細→デバイスインスタンスパスで分かります。
そして、再びregeditを開き、
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\[デバイスインスタンスパス]\Device Parameters
というキーを探します。
その中に、DWORDで、
OverrideKeyboardType:7(0x00000007)
OverrideKeyboardSubtype:2(0x00000002)
という値を作ります。これで内蔵キーボードのキー配列が強制的に日本語になりました。
外付けキーボードの配列を英語に強制的に設定
最後に外付けキーボードの配列を英語に強制的に設定します。
内蔵キーボードと同じように、外付けキーボードのデバイスインスタンスパスを探します。私の場合はデバイスマネージャーの中のキーボード→HIDキーボードデバイスでした。
そして、同じようにデバイスインスタンスパスを取得します。
regeditを立ち上げ、
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\[デバイスインスタンスパス]\Device Parameters
というキーに、DWORDで、
OverrideKeyboardType:4(0x00000004)
OverrideKeyboardSubtype:0(0x00000000)
という値を作ります。これで外付けキーボードが強制的に英語キー配列になりました。
再起動する
ここまでできたら再起動して完成です。
繰り返しになりますが、GUIの設定から「ハードウェアキーボードレイアウト」を設定しなおさないようにしてください。
家族とも共有しつつ英語配列のHHKBが堪能できるようになった
再起動1つで切り替えられるとはいえ、意外と切り替えは面倒です。家族がパソコンを使うときにいちいち対応しなくてはならなかったり、自分でノートパソコンをちょっと膝の上で使おうとするときにも再起動が必要だったり。
そのような手間がなくなって快適な環境ができたことには満足しています。またWindowsのアップデートなどでうまくいかなくなった時は記事のアップデートをしたいと思います。
コメント