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

コンピューター

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

ラップトップのキーボードは基本的に交換できないため、英語キーボードを差し込むときは英語キーボードで、スペース・荷物の関係でラップトップ本体のキーボードを使用する際には日本語キーボードを使うことになり、不便です。

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

英語キーボードについて

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

日本語キーボードと英語キーボード
普通にWindowsパソコンを買うとついてくるキーボードは、日本語配列です。テンキーもついているフルサイズキーボードの場合、日本語配列では109キー、英語配列は104キーが標準です。
英語配列キーボード探し
最近、英語配列のキーボードを探しています。英語配列を気に入っている理由は前回書きました 日本国内だとなかなかいいキーボードが手に入りづらいのが難点です。

新しいものは日本向けに開発されないと日本語キーボードでは出てこないため、LogicoolやMicrosoftなどのメーカー以外は、目新しい製品はないように思います。

無線式キーボード・マウスの進歩
私はラップトップについているタッチパッドが嫌いなので、出先にもロジテックのトラックボール「M570」を持っていくことが多いです。タッチパッドを無効にしてあればキーボードは何とか我慢できますが、キータッチなどの点でかなり不満が多いので、家や職...

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

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ハブなどに振られる数値です。

how to parse USB Device Instance ID (DIID)?
I want to know how "Device Instance ID" is made or how to parse it. Take the following string as an example: USB\VID_093A&PID_2700&MI_00&2703A67...

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などがありますが、意味が参考ページの一つに載っていました。

Windows で同時に複数のキーボード配列を使用する | capyBaral

使われるドライバが変わるようです。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でうまくいきました。

Windows10(1909, 20H1, 20H2)でHHKB英語版とパソコン内蔵日本語キーボードを共存させる方法
最近HHKBの英語版を買って幸せなキーボード生活を送っているのですが、一つ問題が。ノートパソコン内蔵キーボード内蔵の日本語キーボードとキー配列が共存できないんです。しかも、ユーザーごとにも切り替えられないので、HHKBを使う私と本体のキーボ

\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社のデバイスも登録されていて、出自が何となくそっちなのかも、という気もしてしまいます。ただ、GPDのほうがかっこいいです・・・。

参考ウェブサイト

Windows10で日本語キーボードと英語キーボードを同時に使う方法
404 Not Found
Windowsでレジストリ操作によるUS配列キーボードとJIS配列キーボードの共存
Windowsでレジストリ操作を行ってUS配列キーボードと、JIS配列キーボートを共存させるように設定を行いました。
Windows で同時に複数のキーボード配列を使用する | capyBaral

 

コメント

タイトルとURLをコピーしました