Windows でキーボードの言語/レイアウトの設定

2018/10/05 08:25:10

2018/10/05 追記 bluetooth に限らないので、タイトルから削った。パーマリンクは変えない。

This article is how to configure bluetooth keyboard type (or language or layout) (to Japanese) on Windows7 and windows8.1 (with a note PC in which us keyboard is embedded). Also I've checked this works for Windows 10 (GPD Pocket).

2017/10/25 追記: GPD Pocket という Windows 10 の端末で同様の問題が生じたが、同じように解消することができたので記しておく。

ThinkPad T420s の、英字キーモデルを常用している。職場の PC は日本語キーボードなのであるが、記号を打つ時は目をキーボードに軽くやることが多く、不自由はしていなかった。

職場の PC が Surface Pro 3 に切り替わることがきまり、キーボードが不自由であったので ELECOM の TK-FBP014BK を購入した。テンキーもついている、106日本語キーボードである。これを T420s に bluetooth でキーボードを接続してみた。

すると、接続はされるのであるが、英字キーボード(us キーボード)として認識されてしまい、一部のキーの入力に不自由が生じた。結論から言うと、おそらく、下記の設定でなおる。Surface Pro 3 は Windows8.1 であったが、同様の設定によって、問題が修復された。これは、キーボードの言語設定や、レイアウトの設定と言われる。
レジストリを修正を行う必要がある。

解決策:
デバイスマネージャーから
HID キーボード デバイスのプロパティ、ハードウェア ID から、 ID を取り出す。
次に、レジストリ エディターから(regedit.exe を実行)
コンピュータ\HKEY_LOCAL_MACHINES\SYSTEM\CUrrentControlSet\Enum\HID\
以下、ハードウェア ID の一番上に書かれていたものを選択する。
続いて、Device Parameters を選択する。
おそらく不要 右クリック、新規、DWORDで、OverrideKeyboardType
を追加して、データを7に
おそらく不要 右クリック、新規、DWORDで、OverrideKeyboardSubtype
を追加して、データを2に
右クリック、新規、DWORDで、KeyboardTypeOverride
を追加して、データを7に
右クリック、新規、DWORDで、KeyboardSubtypeOverride
を追加して、データを2に
設定する(はじめの2つは不要であるようだが、残しておく)。同様に
右クリック、新規、文字列値で、LayerDriver JPN
を追加して、データを kbd106.dll に
右クリック、新規、文字列値で、OverrideKeyboardIdentifier
を追加して、データを PCAT_106KEY
に。そして、再起動する。(再起動より、接続解除と再接続がよさそうである)

Solution:
From Device Manager, seek
HID Keyboard Devie -> Propaties -> Hardware ID
then get ID.
Execute registry editor (regedit.exe) and select
Computer\HKEY_LOCAL_MACHINES\SYSTEM\CUrrentControlSet\Enum\HID\
and specific Hardware ID.
Select Device Parameters,
right click -> new -> DWORD -> OverrideKeyboardType
and set the value to 7,
right click -> new -> DWORD -> OverrideKeyboardSubtype
and set the value to 2,
right click -> new -> DWORD -> KeyboardTypeOverride
and set the value to 7,
right click -> new -> DWORD -> KeyboardSubtypeOverride
and set the value to 2.
And add string LayerDriver JPN set to kbd106.dll
OverrideKeyboardIdentifier to PCAT_106KEY
Reboot. (Or disconnect and connect again.)

これでだめなら、以下の記事をいろいろ読んでみてほしい。

まず、
http://support.microsoft.com/kb/416037/ja
http://hamachan.info/win7/win/keyboard.html
にあるような設定を行ってみた。一時的には解消されたかのように見えたが、再起動すると、PC に直接ついているキーボードとマウス、双方とも認識されなくなり、冷や汗をかいた。セーフモードでも、だめだった。bluetooth のキーボードは有効であったので、あとから接続しなおして直したが、もし、bluetooth を無効にしてから再起動していたら…と思うとぞっとする。OS の再インストールとか、そんなのはしたくない。しかも、再起動後は、PC についているキーボードが日本語配列かのように認識された。困るのである。これは、上記を逆に、英字キーでやることで、修正した。つまり、上記設定は、PC のキーボードの配列と、bluetooth のキーボードの配列を連動して変えてしまう可能性があるのだろうか。

さて、仕方がないのでレジストリを修正しよう。
配列の異なるキーボードを同時に使う方法
ノートPCでUSB英語配列キーボードを使用/併用/共存する方法
コンピューターに USB キーボードを接続したときに Windows で正しいキーボード レイアウトが使用されないことがある
Win 7編: USBキーボードのレイアウトを変更する
WindowsでBTキーボードだけをUS配列で使う
を参考にすればよい。

レイアウトを変更する…によれば

ここで気になるのが「OverrideKeyboardType」「OverrideKeyboardSubtype」の存在でしょう。前者はキーボードの種類、後者はOEM固有のキーボードサブタイプを定義しており、101英語キーボードなどコンピュータの世界で一般的な環境では、いずれも使用しません。「OverrideKeyboardType」のデータ値が「2」の場合は拡張101キーボード、「4」の場合は拡張102キーボード、日本語キーボードでは主に「7」が使用されます。後者の「OverrideKeyboardSubtype」は各OEMメーカーが設けた独自キーをサポートするために用意されているため、英語キーボード使用時は「0」、日本語キーボード使用時は「2」にしておきましょう。

とのことである。

これではだめだった。

文字列値「LayerDriver JPN」のデータ値を「kbd106.dll」、文字列値「OverrideKeyboardIdentifier」のデータ値を「PCAT_106KEY」

の設定を追加。これもだめ。
http://support.microsoft.com/kb/416037/ja
を読むと KeyboardTypeOverride や KeyboardSubtypeOverride ではなく、OverrideKeyboardType や OverrideKeyboardSubtype となっている。Windows 8 と同じように、こちらも設定してみた。再起動したかしてないか、覚えてないが、次にキーボードを接続したときは、設定が正しくなっていた。謎だが、多分これが、決めてだったと思う。

そのほか参考記事
http://202122.iku4.com/%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3/%EF%BD%95%EF%BD%93%EF%BD%82%E8%8B%B1%E8%AA%9E%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E4%BB%98%E3%81%91%E3%81%9F%E3%80%82%EF%BC%88%E8%8B%B1%E8%AA%9E%E3%80%81%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89
http://support.microsoft.com/kb/2644616/ja

misc

Posted by tako