Memorandum

覚書

「JIS配列のノートPC」で「US配列のUSBキーボード」も同時に使う(Windows 10)

Windows 10においてJIS配列のノートPC(Thinkpad X1 Yoga 2016)に,US配列(英語配列)の外付けキーボード(Thinkpad USB Keyboad)を繋げて利用する方法を調べたのでメモ.

今回やりたいことのポイントはノートPC側のキーボードはJIS配列のままで,外付けのキーボードのみをUS配列にするという点です.

普段はUS配列をメインで利用していますが,今回は借りているノートPCがJIS配列でありそのノートPCを「デスク上ではUS配列のUSBキーボードで使いたい」でも 「持ち運びの際にはJIS配列で見た目通り違和感なく使いたい」というシチュエーションです.

検索して出てくる方法では両方の配列を共存させることができず,内蔵・外付けの両方ともUS配列にするかJIS配列にするかしかできなかったため,やや躓きました.

方法

Windowsの標準の配列をUS配列にし 内蔵キーボードのみJIS配列に変更します.

1. WindowsのキーボードレイアウトをUS配列に変更

まずWindowsが標準で認識するキーボードレイアウトをUS配列に変更します.これは以下のサポートの「詳細」に記載されている通り, レジストリの値を変更してUS配列のものにします.

https://support.microsoft.com/ja-jp/help/927824/windows-may-not-use-the-correct-keyboard-layout-when-you-connect-a-usb

レジストリエディタを起動し

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

レジストリエントリを以下のように変更します.

値の名前 種類 データ
LayerDriver JPN REG_SZ kbd101.dll
OverrideKeyboardSubtype DWORD 0
OverrideKeyboardType DWORD 7

f:id:tatsunode:20180524125418p:plain

OverrideKeyboardIdentifierOverrideKeyboardSubtypeOverrideKeyboardTypeの値は初期では存在しなかったので新規作成しました. このエントリはWindows全体でのキーボードのレイアウトに関する設定を保持しているようです.

レジストリ変更後再起動するとシステム全体のキーボードレイアウトがUS配列になります. この段階でUS配列の外付けキーボードは正しく使えるようになりますが,逆に内蔵JISキーボードの配列もUS配列として認識されてしまいます.

2. 内蔵キーボードのみJIS配列に変更

次に内蔵キーボードのみ配列をJISに変更します.こちらも同様にレジストリを変更するのですが, キーボードデバイスを特定するために,内蔵キーボードのバイス インスタンス パス を確認する必要があります.

バイス インスタンス パスはデバイスマネージャーから確認できます.デバイスマネージャーで, キーボード 標準 PS/2キーボード のプロパティを開き, さらに詳細タブの中のプロパティバイス インスタンス パスを選択すると値が表示されます. デバイスをUSBの外付けキーボードと間違えないよう注意が必要です.

f:id:tatsunode:20180524131741p:plain

確認したデバイスインスタンスパスをもとに, レジストリエディタで

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\{デバイスインスタンスパス}\Device Parameters

レジストリエントリを変更します.US配列に変更した際と同様に以下のように値を追加(あるいは変更)します.

値の名前 種類 データ
OverrideKeyboardSubtype DWORD 2
OverrideKeyboardType DWORD 7

f:id:tatsunode:20180524132750p:plain

変更後再起動することで,内蔵キーボードのみJIS配列として認識されるようになります. 内蔵キーボード以外のすべてのキーボードはUS配列として認識されるので, どんな外付けキーボードを接続しても正しくUS配列として利用可能になります.

参考

blog.orangeliner.net

最初に,上記のサイトに記載されている方法で,外付けキーボードのみをUS配列に変更することを試しましたが いくつかのキーが正常に認識されなかったため,システム全体の配列をUSにし,その上で内蔵のみをJISに変更するという今回の方法を試しました. 普段はUS配列を使っているので,これで上手く運用できています.