経緯
日常使用しているキーボードが故障したため、急場をしのぐために物置からキーボードを拾って使うことにしました。ところが…。
どこがおかしかったのか
LShift, RShift, Numpad0 の挙動がおかしい或いは機能しない。
どういったキーボードか
- HMB-35957-U22
- いわゆる英語配列キーボード
- XT, AT 両対応
- AT 対応動作に設定し、PC の PS/2ポート へ接続し使用
おかしいキーのスキャンコードを調べる
私は DirectX 8.1 SDK に入っていた Keyboard.exe(DirectInput Keyboard Sample) を利用したのですが、Keymill でもよいようです。
スキャンコードは次のようでした。
LShift: 56H
RShift: 73H
Numpad0: 7cH
*.reg ファイルを作成し、レジストリに書き込む
次の資料が役立つはずです。
- Configuration of keyboard and mouse class drivers: Scan code mapper for keyboards
- scancode.doc
- translate.pdf
詳しいことは google.com で Scancode Map site:qiita.com などを検索すれば色々と出てくるので、それをご覧になればよいでしょう。
次のような *.reg ファイルを作ればよいようです。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout]
"Scancode Map"=hex:\
00,00,00,00,\ ; バージョン
00,00,00,00,\ ; フラグ
04,00,00,00,\ ; NULL終端含むエントリ数
2a,00,56,00,\ ; 01 LShiftの修正(56H -> 2aH)
36,00,73,00,\ ; 02 RShiftの修正(73H -> 36H)
52,00,7c,00,\ ; 03 Numpad0の修正(7cH -> 52H)
00,00,00,00 ; 04 NULL終端