はじめに
自宅でUSキーボードを使っているのに会社支給のPCがJISキーボードだったりすると記号類の位置が違っていて混乱しますね。デスクトップならUSキーボード持ち込みとか荒技が使えるんですが、ノートだとそうもいかない。
というわけでレジストリを書き換えてWindowsを騙してしまいましょう。ただ、レジストリのキーや値を覚えるのも面倒ですし、急遽PCを返却しなきゃいけないなど不測の事態に備えてコマンド一発で書き換わると便利です。
106キーボードと101キーボードの設定
以下のレジストリエントリ中のキーの値がキーボードの種別を決定しています。(と、いろんなところに書かれています)
エントリ:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters
キー | USキーボード | JISキーボード |
---|---|---|
LayerDriver JPN | kbd101.dll | kbd106.dll |
OverrideKeyboardIdentifier | PCAT_101KEY | PCAT_106KEY |
OverrideKeyboardSubtype | 0 | 2 |
レジストリエントリを編集するコマンドレット
レジストリエントリはSet-ItemProperty
で編集することができますが、PowerShellを管理者権限で実行しないとエラーになります。レジストリエントリに対して-nameでキー名を、-valueで値を指定します。
Set-ItemProperty "レジストリエントリ名" -name "キー名" -value "値"
したがってレジストリ書き換えスクリプトは各々以下のようになります。
Set-ItemProperty HKLM:\System\CurrentControlSet\Services\i8042prt\Parameters -name "LayerDriver JPN" -value "kbd101.dll"
Set-ItemProperty HKLM:\System\CurrentControlSet\Services\i8042prt\Parameters -name "OverrideKeyboardIdentifier" -value "PCAT_101KEY"
Set-ItemProperty HKLM:\System\CurrentControlSet\Services\i8042prt\Parameters -name "OverridekeyboardSubtype" -value "0"
Set-ItemProperty HKLM:\System\CurrentControlSet\Services\i8042prt\Parameters -name "LayerDriver JPN" -value "kbd106.dll"
Set-ItemProperty HKLM:\System\CurrentControlSet\Services\i8042prt\Parameters -name "OverrideKeyboardIdentifier" -value "PCAT_106KEY"
Set-ItemProperty HKLM:\System\CurrentControlSet\Services\i8042prt\Parameters -name "OverridekeyboardSubtype" -value "2"
これを少し整えたものをGithubに置いておきますね。
Takeru-chan/chgkbd