US配列を使いたいがノートPCがJIS配列しかないという場合はある。支給品のPCとか……
そこでUS配列のキーボードを別途接続したりするわけだが、合わせてシステムのキーボード設定をUS配列にするとノートPCでは少々問題が起きる。
というのも内蔵キーボードで入力する必要がある場合はJIS配列でUS配列入力をするわけだが、バックスラッシュなどのJIS配列には物理的にない場所にあるキーが入力できなくなってしまう。つらい。
だがWindowsはその辺り結構柔軟なので、レジストリから設定すれば接続されたポート毎に配列を指定できる。ポート毎というのがポイントで、USBの場合は接続するポートを変えるとレジストリのキーが変わりまくってしまう。
一方でバラさない限り外すことはないであろう内蔵キーボードのポートが変わることはない。
つまり、外部接続するキーボードはUS配列のみという前提の元でシステム自体をUS配列に設定し、内蔵キーボードをJIS配列に指定するという手法で解決できる。
というわけでまずシステムのキーボードレイアウトを「英語キーボード(101/102 キー)」に変更しておく。
内蔵キーボードの特定
デバイスマネージャーを開き、内蔵キーボードであろうデバイスのデバイス インスタンス パスを確認する。
もちろん環境によって異なるが、コイツの場合は「標準 PS/2 キーボード」が該当し、デバイス インスタンス パスは ACPI\HPQ8001\4&39F4422D&0 となる。
レジストリを設定
まずグローバル設定的なものを消す。これがあるとこちらの設定が優先されてしまったりするらしい。
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters に移動し、OverrideKeyboardSubtype と OverrideKeyboardType を削除または適当にリネーム(.bakをつけるなど)する。
韓国語キーボードを使ってないなら LayerDriver KOR もどう考えてもいらないと思うのでついでに消してもいいと思う。なんであるんだろうこの値……
次に \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ の配下に先程調べたインスタンスパスと同じ名称の階層があるので、更にその下の Device Parameters に移動。
つまり今回の場合は
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\HPQ8001\4&39f4422d&0\Device Parameters
ということになる。ここにキーを2つ作成する。
名前 | 種類 | データ |
OverrideKeyboardSubtype | DWORD | 2 |
OverrideKeyboardType | DWORD | 7 |
再起動すると、システム自体はUS配列のまま内蔵キーボードがJIS配列となる。