上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/Windows/Windows PCのキーボード
をテンプレートにして作成
資料室
PC/Windows/Windows PCのキーボード をテンプレートにして作成
[
差分
|
バックアップ
|
リロード
]
[ ]
開始行:
* Windows PCのキーボード
Windows PCでのキーボードはIBM PCの頃から大きく変わってい...
現在はUSBやBluetoothで接続するキーボードが,一般的に使用...
ハードウェアは,IBM PC/AT・PS/2のキーボードやUSB/Bluetoot...
ハードウェアからキーの情報をデバイスドライバーが受信して...
ハードウェアの違いをこのような構造で対応している。~
その後,Windowsスキャンコードから仮想キーコードに変換する...
#ref(keyboard.png,,80%)
** ハードウェア
物理的なキーボードは,ATキーボード・PS/2キーボードとUSB/B...
PS/2キーボードは,Note PCなどの内蔵キーボードとしても多く...
*** IBM PC/AT・PS/2キーボード
IBM PC/ATではキーボードを接続するインターフェースにはシリ...
IBM PS/2シリーズで採用されたPS/2キーボードは,PC/ATで使わ...
&ref(PS2connector.png,,20%);&ref(PS2connector2.png,,10%);...
|AT Keyboard|PS/2 Keyboard|信号名 |説明 ...
|2 |1 |+DATA |データ信号(正極性...
| |2 |n.c. |未接続 ...
|4 |3 |GND |GND ...
|5 |4 |VCC |電源 +5V ...
|1 |5 |+CLK |クロック(正極性)...
| |6 |n.c. |未接続 ...
| |ケース |Case sealed|接地 ...
ATキーボードやPS/2キーボードは,キーボードのセンシング・P...
PC側からキーボードにコマンドを送信して,設定を変更出来る...
キーが押されたり離された状態を,メーク/ブレークのスキャン...
現在のWindows PCでも,キーボードのスキャンコードはそのま...
仕様上はPC側からコマンドを送ってScan Code Setを変更するこ...
Set2に対応していれば,Windows PCでの利用は特に問題はない。~
*** USB/Bluetoothキーボード
USBキーボードは,USBデバイスクラスのHID(Human Interface ...
キーボード状態のレポートは,その時点で押されているキーを...
Bluetoothキーボードは,ソフトウェア的にはUSB HIDクラスを...
** スキャンコード
キーボードからPCのデバイスドライバーに送られるスキャンコ...
使用するセットの種類によりブレークコードの表現が違ってい...
スキャンコードは3種類のコードがあって,それをScan Code Se...
- Set1~
初代IBM PC,IBM PC XTのキーボード(86キーボードやXTキーボ...
- Set2~
IBM PC/ATのキーボード(101キーボードやEnchanded Keyboard...
- Set3~
IBM PS/2(PS2キーボードとも呼ばれる)で使用されたスキャン...
左右に同じキーがある場合,片方に0xE0を付けてどちらのキー...
スキャンコードSet1は,最上位ビットを立ててメークとブレー...
Windowsスキャンコードでは,メーク・ブレークは別に扱ってい...
このため,101キーボード以後に追加された様々なキーも固有の...
USB/Bluetoothキーボードはスキャンコードを使ってはいないが...
最終的にWindowsスキャンコードは仮想キーコードに変換されて...
それぞれが別々のイベントになるので,Windowsスキャンコード...
** キーボード・レイアウト
Windowsの国際化のため,キーボードのレイアウトには多くのバ...
ATキーボードやPS/2キーボードのスキャンコードは,86キー・1...
元々はキートップ文字と直接対応していたが,国際化の過程で...
キーボードからは2バイトのIDを返す仕組みがあるが,IBM PC/A...
そこで,キーレイアウトに関してはOS側で対応することにして...
USB/Bluetoothキーボードもデバイスに関する情報を返す機能を...
ATキーボードやPS/2キーボードと同様に,OS側でキーレイアウ...
日本語キーボードとしては106キーボードと呼ばれるタイプ([[...
現在の日本語キーボードは,左右にWindowsキーやメニューキー...
Windowsを使用している時に突然(Windowsやデバイスドライバ...
Windowsスキャンコードを仮想キーコードに変換する時にレイア...
このDLLには,Windowsスキャンコードを仮想キーコードに変換...
日本語106/109キーボードで使われるのは''kbdjpn.dll''や''kb...
通常''C:\Windows\System32''に多くの''kbdxxx.dll''が用意さ...
Windows10以前のWindowsではレジストリ''HKEY_LOCAL_MACHINE\...
|名前|US英語キーボード|日本語キーボード|h
|Layout File|kbd101.dll|kbdjpn.dll|
上記のどちらかが設定されている。~
Windows10でもこのレジストリに設定されてはいるが,ここが使...
もしRDPなどで英語キーボードになってしまう症状が発生する場...
kbdjpn.dll -> kbd106.dll
に変更すると問題が改善する。~
どうも''Windows10のkbdjpn.dll''は,英語キーボードで日本語...
通常のWindows10で使用するキーボードのレイアウトのレジスト...
''HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8...
|名前|US英語キーボード|日本語106/109キーボード|h
|LayerDriver JPN|kbd101.dll|kbd106.dll|
|LayerDriver KOR|kbd101a.dll|削除する|
|OverrideKeyboardIdentifier|PCAT_101KEY|PCAT_106KEY|
|OverrideKeyboardSubtype|0|2|
|OverrideKeyboardType|7以外|7|
また,この仮想キーコードに変換するときに使われる''kbdxxx....
独自レイアウトライブラリを作成する事ができるMicrosoft純正...
*** キー入力できなくなるトラブル
レイアウトDLLを使って最終的にキー入力が行われるが,これが...
このようなトラブルが発生した場合,レイアウトDLLファイルは...
&ref(kbdxxxdll.zip,,Windows10(22H2)のレイアウトDLL);
*** 複数のキーボードを同時に接続した場合のレイアウト
複数のキーボードを同時に接続した場合,それぞれのキーボー...
レジストリを変更することで,各キーボードで別々のレイアウ...
以下は例としてNote PCが日本語でUSBで接続したキーボードが...
- USBで英語USキーボードを接続する。~
- デバイスマネージャーを開いて,英語USキーボードの''VIDと...
デバイスマネージャーのHIDキーボードで,接続しているUSBキ...
- レジストリエディタを起動する。~
- ''HKEY_LOCALMACHINE\SYSTEM\CurrentControlSet\Enum\HID''...
- 接続しているキーボードのVID:PIDを検索する。~
Vid_XXXX&Pid_YYYYのようなキーが作成されている。~
見つかったら,それを開く。この時,キーはUSBのコネクタ前に...
- ''Device Parameters''キーを開いて新規にサブキーを作成す...
新規サブキーをDWORD値で作成する。~
作成したキー名を''KeyboardTypeOverride''に変更する。~
変更したら値を''4''に設定する。~
同様にして,''KeyboardSubtypeOverride''キーをDWORD値で作...
|KeyboardTypeOverride|4|
|KeyboardSubtypeOverride|2|
この後,PCをリブートする。~
これで,Note PCのキーボードは日本語レイアウトで,USB接続...
*** 日本語AXキーボード
日本語AXキーボードは英語配列の101キーをベースに日本語化し...
以前は,日本語WindowsとAXキーボード(105キーボードとも呼...
これはASCiiのAXマシン以前はPC互換機のPCのみだったため,多...
IMEオン/オフ用の漢字キーがスペースバーと同じ列にあり,現...
AXキーボードは現在では入手困難だが,kbdax2.dllはWindows 1...
** キーの入れ替え処理
キーボードのレイアウトは上記のレイアウトDLLにより,Window...
しかし一部のキーの機能をちょっと変更したいことがある。Win...
- デバイスドライバーが使うレジストリでキーを入れ替える~
フィルタードライバー''kbdclass.sys''でのキー入れ替え処理...
レジストリを定義した後Windowsを再起動することでキーボード...
このため,リアルタイムでのキー入れ替えは出来ないのと,ア...
- Windows APIのHookを使用して入れ替える。~
仮想キーコードをアプリケーションに渡す時にHook APIを使っ...
Hook APIを使う場合はプログラムでキーイベントを書き換える...
*** キーボード・フィルタードライバーで入れ替える方法
キーボード・フィルタードライバー''kbdclass.sys''でキーの...
以下のレジストリに,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyb...
入れ替えたいキーのWindowsスキャンコードを設定することで,...
例1:CtrlとCapsLockを入れ替える~
以下の内容で''ctrl_capslock.reg''ファイルを作成して,レジ...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Key...
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1...
値の意味(レジストリへの定義はリトルエンディアン)は,次...
|定義値|数値|意味|h
|00,00,00,00|0x00000000 |バージョン番号 すべて0|
|00,00,00,00|0x00000000 |フラグ すべて0|
|03,00,00,00|0x00000003 |マッピングを設定する個数&br;マ...
|1D,00,3A,00|0x001D 0x003A|マッピング1&br;左CtrlをCapsLoc...
|3A,00,1D,00|0x003A 0x001D|マッピング2&br;CapsLockを左Ctr...
|00,00,00,00|0x00000000 |NULL終端|
例2:DeleteとInsertを入れ替える~
以下の内容で''delete_insert.reg''ファイルを作成して,レジ...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Key...
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,5...
値の意味(レジストリへの定義はリトルエンディアン)は,次...
|定義値|数値|意味|h
|00,00,00,00|0x00000000 |バージョン番号 すべて0|
|00,00,00,00|0x00000000 |フラグ すべて0|
|03,00,00,00|0x00000003 |マッピングを設定する個数&br;マ...
|1D,00,3A,00|0xe053 0xe052|マッピング1&br;DeleteをInsert...
|3A,00,1D,00|0xe052 0xe053|マッピング2&br;InsertをDelete...
|00,00,00,00|0x00000000 |NULL終端|
レジストリを安全に変更できる[[Change Key>http://satoshi3....
*** Hook APIを使用して入れ替える方法
Win32APIではイベントを発生させる前段階に割り込むことがで...
Hook APIのキーの入れ替えが面倒なのは,レイアウトによって...
[[PowerToys>https://learn.microsoft.com/ja-jp/windows/pow...
* キーボードのスキャンコード
- [[キーボードのスキャンコード>./OADG109キーボードのスキ...
* キーボードで大文字しか入力できなくなった
ある時,会社のWindowsマシンでUSBで接続しているキーボード...
ログインも出来ない状態なので困ってしまった。仮想キーボー...
レイアウトDLLなどのシステムファイルが壊れているのかと思い...
デバイスマネージャーでキーボードのところを確認すると,
VID:PID=04F2:0400
VID:PID=1A81:1004
なぜか,HIDキーボードデバイスが2つあった。~
PCはデスクトップPCで接続しているUSBキーボードは1個だけな...
試しに,VID:PID=1A81:1004の方のデバイスドライバーを強制的...
しかしこのままでは,ハードウェア変更のスキャンや再起動す...
VID:PID=1A81:1004のデバイスは,無線でマウスとキーボードが...
どうもキーボードを接続していないとUSBドングルからHIDキー...
2つのキーボードのデバイスドライバーからのキー情報は,フィ...
この問題のUSBドングルを抜いて,大文字しか入力できない問題...
終了行:
* Windows PCのキーボード
Windows PCでのキーボードはIBM PCの頃から大きく変わってい...
現在はUSBやBluetoothで接続するキーボードが,一般的に使用...
ハードウェアは,IBM PC/AT・PS/2のキーボードやUSB/Bluetoot...
ハードウェアからキーの情報をデバイスドライバーが受信して...
ハードウェアの違いをこのような構造で対応している。~
その後,Windowsスキャンコードから仮想キーコードに変換する...
#ref(keyboard.png,,80%)
** ハードウェア
物理的なキーボードは,ATキーボード・PS/2キーボードとUSB/B...
PS/2キーボードは,Note PCなどの内蔵キーボードとしても多く...
*** IBM PC/AT・PS/2キーボード
IBM PC/ATではキーボードを接続するインターフェースにはシリ...
IBM PS/2シリーズで採用されたPS/2キーボードは,PC/ATで使わ...
&ref(PS2connector.png,,20%);&ref(PS2connector2.png,,10%);...
|AT Keyboard|PS/2 Keyboard|信号名 |説明 ...
|2 |1 |+DATA |データ信号(正極性...
| |2 |n.c. |未接続 ...
|4 |3 |GND |GND ...
|5 |4 |VCC |電源 +5V ...
|1 |5 |+CLK |クロック(正極性)...
| |6 |n.c. |未接続 ...
| |ケース |Case sealed|接地 ...
ATキーボードやPS/2キーボードは,キーボードのセンシング・P...
PC側からキーボードにコマンドを送信して,設定を変更出来る...
キーが押されたり離された状態を,メーク/ブレークのスキャン...
現在のWindows PCでも,キーボードのスキャンコードはそのま...
仕様上はPC側からコマンドを送ってScan Code Setを変更するこ...
Set2に対応していれば,Windows PCでの利用は特に問題はない。~
*** USB/Bluetoothキーボード
USBキーボードは,USBデバイスクラスのHID(Human Interface ...
キーボード状態のレポートは,その時点で押されているキーを...
Bluetoothキーボードは,ソフトウェア的にはUSB HIDクラスを...
** スキャンコード
キーボードからPCのデバイスドライバーに送られるスキャンコ...
使用するセットの種類によりブレークコードの表現が違ってい...
スキャンコードは3種類のコードがあって,それをScan Code Se...
- Set1~
初代IBM PC,IBM PC XTのキーボード(86キーボードやXTキーボ...
- Set2~
IBM PC/ATのキーボード(101キーボードやEnchanded Keyboard...
- Set3~
IBM PS/2(PS2キーボードとも呼ばれる)で使用されたスキャン...
左右に同じキーがある場合,片方に0xE0を付けてどちらのキー...
スキャンコードSet1は,最上位ビットを立ててメークとブレー...
Windowsスキャンコードでは,メーク・ブレークは別に扱ってい...
このため,101キーボード以後に追加された様々なキーも固有の...
USB/Bluetoothキーボードはスキャンコードを使ってはいないが...
最終的にWindowsスキャンコードは仮想キーコードに変換されて...
それぞれが別々のイベントになるので,Windowsスキャンコード...
** キーボード・レイアウト
Windowsの国際化のため,キーボードのレイアウトには多くのバ...
ATキーボードやPS/2キーボードのスキャンコードは,86キー・1...
元々はキートップ文字と直接対応していたが,国際化の過程で...
キーボードからは2バイトのIDを返す仕組みがあるが,IBM PC/A...
そこで,キーレイアウトに関してはOS側で対応することにして...
USB/Bluetoothキーボードもデバイスに関する情報を返す機能を...
ATキーボードやPS/2キーボードと同様に,OS側でキーレイアウ...
日本語キーボードとしては106キーボードと呼ばれるタイプ([[...
現在の日本語キーボードは,左右にWindowsキーやメニューキー...
Windowsを使用している時に突然(Windowsやデバイスドライバ...
Windowsスキャンコードを仮想キーコードに変換する時にレイア...
このDLLには,Windowsスキャンコードを仮想キーコードに変換...
日本語106/109キーボードで使われるのは''kbdjpn.dll''や''kb...
通常''C:\Windows\System32''に多くの''kbdxxx.dll''が用意さ...
Windows10以前のWindowsではレジストリ''HKEY_LOCAL_MACHINE\...
|名前|US英語キーボード|日本語キーボード|h
|Layout File|kbd101.dll|kbdjpn.dll|
上記のどちらかが設定されている。~
Windows10でもこのレジストリに設定されてはいるが,ここが使...
もしRDPなどで英語キーボードになってしまう症状が発生する場...
kbdjpn.dll -> kbd106.dll
に変更すると問題が改善する。~
どうも''Windows10のkbdjpn.dll''は,英語キーボードで日本語...
通常のWindows10で使用するキーボードのレイアウトのレジスト...
''HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8...
|名前|US英語キーボード|日本語106/109キーボード|h
|LayerDriver JPN|kbd101.dll|kbd106.dll|
|LayerDriver KOR|kbd101a.dll|削除する|
|OverrideKeyboardIdentifier|PCAT_101KEY|PCAT_106KEY|
|OverrideKeyboardSubtype|0|2|
|OverrideKeyboardType|7以外|7|
また,この仮想キーコードに変換するときに使われる''kbdxxx....
独自レイアウトライブラリを作成する事ができるMicrosoft純正...
*** キー入力できなくなるトラブル
レイアウトDLLを使って最終的にキー入力が行われるが,これが...
このようなトラブルが発生した場合,レイアウトDLLファイルは...
&ref(kbdxxxdll.zip,,Windows10(22H2)のレイアウトDLL);
*** 複数のキーボードを同時に接続した場合のレイアウト
複数のキーボードを同時に接続した場合,それぞれのキーボー...
レジストリを変更することで,各キーボードで別々のレイアウ...
以下は例としてNote PCが日本語でUSBで接続したキーボードが...
- USBで英語USキーボードを接続する。~
- デバイスマネージャーを開いて,英語USキーボードの''VIDと...
デバイスマネージャーのHIDキーボードで,接続しているUSBキ...
- レジストリエディタを起動する。~
- ''HKEY_LOCALMACHINE\SYSTEM\CurrentControlSet\Enum\HID''...
- 接続しているキーボードのVID:PIDを検索する。~
Vid_XXXX&Pid_YYYYのようなキーが作成されている。~
見つかったら,それを開く。この時,キーはUSBのコネクタ前に...
- ''Device Parameters''キーを開いて新規にサブキーを作成す...
新規サブキーをDWORD値で作成する。~
作成したキー名を''KeyboardTypeOverride''に変更する。~
変更したら値を''4''に設定する。~
同様にして,''KeyboardSubtypeOverride''キーをDWORD値で作...
|KeyboardTypeOverride|4|
|KeyboardSubtypeOverride|2|
この後,PCをリブートする。~
これで,Note PCのキーボードは日本語レイアウトで,USB接続...
*** 日本語AXキーボード
日本語AXキーボードは英語配列の101キーをベースに日本語化し...
以前は,日本語WindowsとAXキーボード(105キーボードとも呼...
これはASCiiのAXマシン以前はPC互換機のPCのみだったため,多...
IMEオン/オフ用の漢字キーがスペースバーと同じ列にあり,現...
AXキーボードは現在では入手困難だが,kbdax2.dllはWindows 1...
** キーの入れ替え処理
キーボードのレイアウトは上記のレイアウトDLLにより,Window...
しかし一部のキーの機能をちょっと変更したいことがある。Win...
- デバイスドライバーが使うレジストリでキーを入れ替える~
フィルタードライバー''kbdclass.sys''でのキー入れ替え処理...
レジストリを定義した後Windowsを再起動することでキーボード...
このため,リアルタイムでのキー入れ替えは出来ないのと,ア...
- Windows APIのHookを使用して入れ替える。~
仮想キーコードをアプリケーションに渡す時にHook APIを使っ...
Hook APIを使う場合はプログラムでキーイベントを書き換える...
*** キーボード・フィルタードライバーで入れ替える方法
キーボード・フィルタードライバー''kbdclass.sys''でキーの...
以下のレジストリに,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyb...
入れ替えたいキーのWindowsスキャンコードを設定することで,...
例1:CtrlとCapsLockを入れ替える~
以下の内容で''ctrl_capslock.reg''ファイルを作成して,レジ...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Key...
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1...
値の意味(レジストリへの定義はリトルエンディアン)は,次...
|定義値|数値|意味|h
|00,00,00,00|0x00000000 |バージョン番号 すべて0|
|00,00,00,00|0x00000000 |フラグ すべて0|
|03,00,00,00|0x00000003 |マッピングを設定する個数&br;マ...
|1D,00,3A,00|0x001D 0x003A|マッピング1&br;左CtrlをCapsLoc...
|3A,00,1D,00|0x003A 0x001D|マッピング2&br;CapsLockを左Ctr...
|00,00,00,00|0x00000000 |NULL終端|
例2:DeleteとInsertを入れ替える~
以下の内容で''delete_insert.reg''ファイルを作成して,レジ...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Key...
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,5...
値の意味(レジストリへの定義はリトルエンディアン)は,次...
|定義値|数値|意味|h
|00,00,00,00|0x00000000 |バージョン番号 すべて0|
|00,00,00,00|0x00000000 |フラグ すべて0|
|03,00,00,00|0x00000003 |マッピングを設定する個数&br;マ...
|1D,00,3A,00|0xe053 0xe052|マッピング1&br;DeleteをInsert...
|3A,00,1D,00|0xe052 0xe053|マッピング2&br;InsertをDelete...
|00,00,00,00|0x00000000 |NULL終端|
レジストリを安全に変更できる[[Change Key>http://satoshi3....
*** Hook APIを使用して入れ替える方法
Win32APIではイベントを発生させる前段階に割り込むことがで...
Hook APIのキーの入れ替えが面倒なのは,レイアウトによって...
[[PowerToys>https://learn.microsoft.com/ja-jp/windows/pow...
* キーボードのスキャンコード
- [[キーボードのスキャンコード>./OADG109キーボードのスキ...
* キーボードで大文字しか入力できなくなった
ある時,会社のWindowsマシンでUSBで接続しているキーボード...
ログインも出来ない状態なので困ってしまった。仮想キーボー...
レイアウトDLLなどのシステムファイルが壊れているのかと思い...
デバイスマネージャーでキーボードのところを確認すると,
VID:PID=04F2:0400
VID:PID=1A81:1004
なぜか,HIDキーボードデバイスが2つあった。~
PCはデスクトップPCで接続しているUSBキーボードは1個だけな...
試しに,VID:PID=1A81:1004の方のデバイスドライバーを強制的...
しかしこのままでは,ハードウェア変更のスキャンや再起動す...
VID:PID=1A81:1004のデバイスは,無線でマウスとキーボードが...
どうもキーボードを接続していないとUSBドングルからHIDキー...
2つのキーボードのデバイスドライバーからのキー情報は,フィ...
この問題のUSBドングルを抜いて,大文字しか入力できない問題...
ページ名:
Counter: 0, today: 0, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
フォーラム
お問い合わせ