はじめに
眠っていたTablet PCに、日本語キーボードを繋いだら、以前に使っていた英語配列のキーボードの設定が原因で英語配列として認識されてしまいました。試行錯誤して同時に接続して共存させる方法を見いだせたので、情報を共有させていただきます。
前提
- Windows 10 Home 20H2, 21H2
- 日本語キーボードで正しく動くように設定してある
- Bluetoothの英語配列キーボードを追加する
- レジストリを編集する
※ まっさらな状態からの動作確認はしていません。
※ Windows10 Home 21H2にアップしても有効でした。
こだわりどころ
- Tablet PCでスクリーンキーボードを常に日本語モードで起動できる
(デフォルトキーボードが存在しないので) - レジストリの編集を必要最小限にとどめる
レジストリ編集手順
デフォルト設定を変更する
- システム標準のキーボード設定:2つ削除して1つを変更
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
キー | 値:変更前 | 値:変更後 |
---|---|---|
LayerDriver JPN | kbd106.dll | (変更なし) |
OverrideKeyboardIdentifier | PCAT_106KEY | PCAT_101KEY |
OverrideKeyboardSubtype | 2 | キーを削除 |
OverrideKeyboardType | 7 | キーを削除 |
追加したキーボードを英語設定にする
- デバイスマネージャでBluetoothに出てくるキーボードのプロパティの詳細から「デバイスインスタンスパス」をコピーして下記に連結
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\
-
FriendlyName
でデバイスを確認し、ContainerID
の値をコピーして検索 -
Service
がkbdhid
であることを確認する(違っていれば次を検索) -
その下にある
Device Parameters
を選択 -
以下に2つのキーをDWORDで追加
キー 値 KeyboardTypeOverride 4 KeyboardSubtypeOverride 0 -
以上の編集が終わったらWindowsを再起動
試したこと
- Bluetoothキーボードのデバイスインスタンスパス(
BTHENUM
以下)のDevice Parameters
にキーを追加しても認識されなかった - 「HIDキーボードデバイス」のデバイスインスタンスパス(
HID
以下)のDevice Parameters
への設定のみが反映されることが確認できた - 「HIDキーボードデバイス」の
Device Parameters
への設定がない場合はLayerDriver JPN
の値によって動作モードが設定される - 「HIDキーボードデバイス」が複数あったので、特定に手間取った
(特定後FriendlyName
を追加してキーボード型番を設定した) - BluetoothのデバイスインスタンスとHIDデバイスの対応がよくわからなかった
(結局ContainerID
で検索するしか思いつかなかった) - 英語配列をデフォルトにする場合は、下記の組み合わせにすると共存できた
(英語キーボードには設定をしない)- デフォルト設定
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
キー | 値 |
---|---|
LayerDriver JPN | kbd101.dll |
OverrideKeyboardIdentifier | PCAT_106KEY |
- 日本語キーボード
HID
以下のDevice Parameters
追加設定(DWORD)
キー | 値 |
---|---|
KeyboardTypeOverride | 7 |
KeyboardSubtypeOverride | 2 |
参考
Windows10(1909, 20H1, 20H2)でHHKB英語版とパソコン内蔵日本語キーボードを共存させる方法
Windows で US 配列と JIS 配列を共存させたい
他にもいろいろ参考にさせていただきましたが、私の環境では上記の2例を含めて、どの方法でもうまくいきませんでした。(たぶんOverrideKeyboardIdentifier
が変更されていたから)
終わりに
Bluetoothなので手順が複雑になりますが、何とか設定個所を特定する方法が見つかったので良しとしましょう。USB接続であればもっと簡単なのですが...
英語キーボードをベースにすると、スクリーンキーボードの配列が、直前に使用した物理キーボードのモードに依存して切り替わるので、見た目も似ていて誤入力の原因になりそうでした。日本語キーボードよりキー数が少なくてすっきりしたレイアウトだったので、そちらの方が良かったのですが、勝手に切り替わらないようにする設定を見つけられなかったので諦めました。
追記
- 設定の確認・変更・復元するツールを下記に公開しています。(2022/8/16)
- 設定を確認するPowerShellスクリプトを公開しました。良かったら参考にしてください。(2022/3/5)