日本語キーボードと英語キーボードの共存(Windows)

10月 2, 2022

≪≪この記事をすべて読むには約 16 分かかります≫≫

ここ数年は、基本的に英語キーボードを使っています。昨年購入したLenovoのM75をメインで使用していますが、それまでのメインPCはThinkPadで日本語キーボードの製品でしたし、現在もサブ機としては、GPD(GPD Pocket 3)、VAIO、ThinkPadなどのラップトップを使っています。

ラップトップのキーボードは基本的に交換できないため、英語キーボードを接続できる環境では英語キーボードを、スペース・荷物の関係でラップトップ本体のキーボードを使用する際は日本語キーボードを、それぞれ使うことになり頻繁に変わるので不便です。

日本語キーボードと英語キーボードを共存させる方法にたどり着いたので、設定しつつ記事にしていきます。

英語キーボードについて

以前も記事にしているとおり、好みの範疇に入りますが、私は英語キーボードが大好きです。

https://tek2tech.com/jis-and-us-keyboard/

https://tek2tech.com/looking-for-us-keyboards/

新しいものは日本向けに開発されないと日本語キーボードとしては発売されないため、LogicoolやMicrosoftなどの超大手メーカー以外は、目新しい製品は多くありません。その点、英語キーボードだと新しい技術とか、世界のメーカーが開発競争を繰り広げているため、結構気になる商品が出てきています。

https://tek2tech.com/wireless-mouse-keyboard-improved/

システム全体で設定を共有する場合の設定

Windows 11の言語設定

最近、メインマシンをWindows 11に更新したら、設定箇所が変わってしまい、たどり着きにくくなってしまいました。

スタートメニューで「language」で検索するとトップに
スタートメニューで「keyboard」で検索するとちょっと下に

設定画面まではWindows 10までと同じですが、そこから少し見にくいです。

ハイライトされている、「日本語」(言語パック、音声合成、音声認識、手書き、基本の入力)というところで「…」をクリックして「言語のオプション」を開きます。

後半部分にある「キーボードレイアウト」を設定すればシステム全体で使用するキーボードを選択できます。

Windows 11では新しい選択肢が増えていた

Windows 10までは、日本語キーボード(106/109キー)と英語キーボード(101/102キー)しか選べませんでしたが、あたしく「接続済みキーボードレイアウトを使用する」という項目ができています。ちょっと期待です。

全体設定用のレジストリ設定

参考ウェブサイトの記事をみると、個別キーボードを設定してもシステムで強制する設定がされていると反映されないという話が出ています。現在の私のWindows 11を見てみたら、ばっちりレジストリに記載されていました。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt
  • OverrideKeyboardSubtype … 「0」
  • OverrideKeyboardType … 「7」

が設定されていました。

上の「接続済みキーボードレイアウトを使用する」を選択したところ、設定を強制する項目は削除されました。その後、日本語キーボードを選択して再起動したところ、

  • OverrideKeyboardSubtype … 「2」
  • OverrideKeyboardType … 「7」

となり、使用中の英語キーボードも日本語配列として認識されるようになりました。逆に、英語に設定しなおすと、

  • OverrideKeyboardSubtype … 「0」
  • OverrideKeyboardType … 「7」

最初に見たときと同じ設定になりすべてが英語キーボードとして扱われます。いったん、設定値を日本語キーボード状態にしてから、「接続済みキーボードレイアウトを使用する」に戻してみましたが、どこかで他に設定をしていない限り、(物理的に)日本語キーボードを接続しても「英語」として認識されました。

個別キーボードのレジストリ項目

デバイスマネージャーの表示

デバイスマネージャーを開いて、

キーボード、HIDキーボードデバイスにあるものが現在接続中のデバイスになります。キーボードは1つしか接続していないはずですが、4つ表示されています。キーボード扱いされる可能性があるモノがすべてここに入るようです。

ハードウェアIDの見方

わからない部分もありますが、

「VID_046D」は、メーカーに割り当てられているベンダーIDと言われる文字列です。046Dは「Logitech」を表し、もう一つ表示されている258Aは「Sino Wealth Electronic Ltd.」を表します。現在接続しているのはLogicoolのマウスと中華Royal Kludgeのキーボードなので、正しく反映されています。

次に、「PID_002A」はプロダクトIDで、メーカーの製品ごとに割り振られています。ロジクールはデバイスが多いので数値が大きいですね。「PID_C232」「PID_C539」が振られており、「PID_C232」はゲーミングデバイス用のバーチャルキーボード、「PID_C539」は検索すると、「G603 LIGHTSPEED Wireless Gaming Mouse with HERO」や「Cordless Mouse Receiver」が出てきます。使用中のモデルはG502 LIGHTSPEEDなので、ドングルを認識しているようです。ドングルを外してもC232のほうはアクティブなままだったのでよくわかりません。

REVはおそらくRevisionだと思いますが詳細不明です。

MIはマルチプルインターフェイスデバイスの略で、例えば、ロジクールのゲーミングマウスはドングルで接続するか、USBで直接接続するかを選択できます。ドングル経由で接続した場合には、MI_00、USBケーブルで接続した場合にはMI_01&Col01と表示されます。

デバイスインスタンスパス

USBデバイスは違うポートに差されると挙動が変わることがおおいですが、接続先ごとに別のレジストリ項目が作られることも原因とされています。レジストリの設定をする場合には、「デバイスインスタンスパス」に応じて設定が必要です。(デバイスインスタンスパスの探し方を別記事にしました)

HID\VID_046D&PID_C08D&MI_01&COL01\8&2CE2F9B&0&0000

このロジクールの場合、なぜか、ドングルをさした場合にはポートごとにデバイスインスタンスパスが変わりましたが、USBケーブルで接続した場合にはどこのポートにさしてもデバイスインスタンスパスが変わりませんでした。USBケーブルで接続した場合にはPIDもPID_C08Dに変わりました。RKのキーボードは変わったので謎ですが、キーボードではなくマウスなのでという可能性がありますが、ドングル経由の場合はパスが変わったのでなぜでしょう・・・。

最後の文字列は、最初の「8」や「9」は末端の端末に割り振られて、小さい数字はUSBハブなどに振られる数値です。

COLの設定も各種作られますが、作られているうち、どれが使われているのかはよくわかりませんし、検索しても今のところ何を示しているのかわかりません。

レジストリの編集

現在接続されているHIDキーボードの項目の部分をレジストリから探します。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID

の配下にあり、例えば現在使用中のRKのキーボードの場合は

\VID_258A&PID_002A&MI_00

\VID_258A&PID_002A&MI_01&Col04

の項目内をいじることになります。さらに下流にデバイスインスタンスパスにあった一意の文字列の項目があるので、そこを触ります。Colは01から09まで自動で作られています。ただ、Colのない項目とCol04のみ、レジストリーキーの中のREG_SZ値「Service」として「kbdhid」が振られていて、WindowsのHIDドライバを使うことが示されているので、ここを触ります。

実際の設定項目は、デバイスインスタンスパス下のDevice Parametersキーの値です。見てみると、Col04以外の項目には、Device Parametersキーが作られていないため、Col04を触ってみました。

  • KeyboardSubtypeOverride 2
  • KeyboardTypeOverride 7

を設定します。全体項目の設定値では、OverrideKeyboardSubtypeのようにOverrideが先に来ていました。設定値として、2-7 0-7 0-4などがありますが、意味が参考ページの一つに載っていました。

使われるドライバが変わるようです。Col04を設定しても反映されませんでしたが、Col04を設定した後にレジストリを再確認すると、ColのついていないほうにDevice Parametersが新設されていたのでそちらを編集したところ反映されました。Col04は消去しても再設定はされなかったので、Colなしのほうでよかったようです。

次に英語キーボードの設定値

  • KeyboardSubtypeOverride 0
  • KeyboardTypeOverride 7

  • KeyboardSubtypeOverride 0
  • KeyboardTypeOverride 4

ですが、0-7では最近Windows11にアップグレードして以来よく発生していた、「日本語を打ち終わってからSHIFT+CAPSLOCKキーを押したときに全角英字になってしまう」状態が発生し、0-4ではめったに起きないようだったので、0-4を使用することにしました。発生条件が良くわかりません。

ACPIデバイスはOverrideKeyboard

ラップトップの内臓キーボードを設定してみたところ、上記の通りに行くと、acpi下にあるキーにKeyboardTypeOverrideを設定すれば行けそうに思えるのですが、それではうまくいかず、OverrideKeyboardTypeとOverrideKeyboardSubtypeでうまくいきました。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\LEN0071\4&35b13845&0\Device Parameters

デバイスの登録は、同系統の機種なら同じようです。

着脱式キーボードのタブレットPCの場合

私は、マウスコンピューター製の激安Windowsタブレット、E10-VLも保有しています。このPCには、ACPI設定のキーボードデバイス(マウスコンピューターのデバイス命名っぽいもの)が設定されていましたが、付属の脱着タッチパッド付キーボードはHIDデバイスであり、しかもVID_258A&PID_000Cという先ほど見た中華デバイスと同じVIDです。

ACPIデバイスと同じく、同じイメージから量産されているため、どの本体にどのキーボードをつけても、同じデバイスIDで動作します。

E10-VLは、どのように動作しているのかわかりませんが、VIDがGPD Pocket社のデバイスも登録されているので、出自が何となくそちらなのかも、という気もしてしまいます。ただ、マウスコンピューターのE10-VLよりGPDのほうが断然かっこいいので、マウスコンピューターはデザイン性はカスタマイズしないで欲しかったです。

参考ウェブサイト