LoginSignup
6
4

More than 5 years have passed since last update.

PowerShellでレジストリをいじる

Last updated at Posted at 2015-10-22

はじめに

自宅で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_us.ps1
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_jp.ps1
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

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4