treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

GPD Pocket4でBluetooth接続の日本語キーボードを使う

GPD Pocket4を持ち出して使用する際に、ThinkPadワイヤレストラックポイントキーボードを使う場合、英語キーボードと日本語キーボードのレイアウトの違いで不便だったので、設定を試してみました。

やりたいこと

GPD Pocket4の内蔵キーボードは英語キーボードのレイアウトが使用されています。変則的なキー配列ではありますが、英語キーボードとしてOSから認識しています。

一方で、Bluetooth接続で使用したいThinkPadワイヤレストラックポイントキーボードは日本語キーボードのレイアウトとなっています。

この構成で使用する際には、内蔵キーボードの英語レイアウトが優先され、Bluetooth接続のThinkPadワイヤレストラックポイントキーボードも英語レイアウトとして認識されます。これを、内蔵キーボードの英語レイアウトはそのままで、Bluetooth接続をしたThinkPadワイヤレストラックポイントキーボードだけ日本語キーボードのレイアウトになるよう設定できないかを試してみました。

設定内容⇒失敗

キーボードのレイアウトのレジストリキーは

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID

配下に格納されています。

ただ、キーが多くてどれを設定すればいいか分からないため、デバイスマネージャ(devmgmt.msc)から、ワイヤレストラックポイントキーボードのプロパティを開き、

この画面の詳細タブから、

デバイスインスタンスパスという値を確認します。

この値がレジストリキーとしてBluetooth接続となるワイヤレストラックポイントキーボードの動作を制御する箇所となっています。レジストリエディタの画面で開いてみます。

この箇所に日本語キーボードとして認識するように設定を追加すれば動作するはずです。ここにキーボードを日本語キーボードとして認識するキーを追加してみます。

--------------------------------------------------------------
ファイル名:addJPkeyB.reg
--------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\%KeyboardID%\Device Parameters]
"OverrideKeyboardType"=dword:00000007
"OverrideKeyboardSubtype"=dword:00000002
--------------------------------------------------------------

※%KeyboardID%の箇所は、今回は{00001124-0000-1000-8000-00805f9b34fb}~で始まるThinkPadワイヤレストラックポイントキーボードのIDを入力します。

これをレジストリ.regで保存してレジストリを登録してみました。

が、内蔵キーボードの英語レイアウトと同じキーがThinkPadワイヤレストラックポイントキーボードでも入力されていて、片方だけが日本語キーボードのレイアウト、という設定にはなっていませんでした。再起動しても同様の動きだったので、これでは出来ない、ということになります。

何か間違っていたのかなと思い、もう一度やり直してみることにしました。

指定のレジストリ値を変更⇒成功

キーボードのレイアウトを指定する箇所は間違っていないはずなので、指定の方法が違っていたのかもしれないと考えて、再度やってみることにしました。

内蔵キーボードの指定で使う「OverrideKeyboardType」は、外付けキーボード(Bluetoothキーボード)の指定では使えないようでした。

この場合「KeyboardTypeOverride」を使って指定する必要があります。(ただdword:00000007は同じ)
同様に、「OverrideKeyboardSubtype」も「KeyboardSubtypeOverride」で指定(dword:00000002は同じ)しなければならないようです。

ファイルを修正してみました。
--------------------------------------------------------------
ファイル名:addJPkeyB.reg
--------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\%KeyboardID%\Device Parameters]
"KeyboardTypeOverride"=dword:00000007
"KeyboardSubtypeOverride"=dword:00000002
--------------------------------------------------------------

内容はほぼ同じですが、レジストリキーで指定する値を各々変更しています。日本語キーボードのレイアウトを示す「7」や「2」と言った数値はそのまま使用しています。

これをレジストリに追加し、動作を確認してみたところ、内蔵キーボードの英語レイアウトはそのままで、Bluetooth接続のThinkPadワイヤレストラックポイントキーボードだけが日本語キーボードのレイアウトで認識することに成功しました。

これでやりたいことが達成出来ました。

もうちょっと追記

レジストリに正しい値で追加したところ、やりたいことが達成出来ました。

結論としては、内蔵キーボードと外付け(Bluetooth)キーボードでは指定する値の名前が相違するということのようです。

あとFnLockを効かせるために、保存してあった「tp_compact_keyboard_1.5.6.0.exe」

ThinkPad Compact Keyboard with TrackPoint driverをインストールしておきました。