レジストリエディタで[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]にScancode Mapという名前でバイナリ値を作成することで、キーの割り当てを変更できます。
このScancode Mapは下表のように定義されています。
オフセット | バイト数 | データ |
---|---|---|
0 | 4 | ヘッダー。バージョン情報 |
4 | 4 | ヘッダー。フラグ |
8 | 4 | ヘッダー。マッピング数 |
12 | 4 | 個々のマッピング※1 |
… | … | … |
最後4バイト | 4 | NULL終端文字 (0x00000000) |
※1 マッピングはスキャンコードのscan1のmakeで「割り当て元のキー + 割り当て先のキー」の書式で指定します。
たとえば左CtrlキーとCaps Lockキーを入れ替えるには、次のようにします。
00000000 00000000 03000000 3A001D00 1D003A00 00000000
これはリトルエンディアンで記述するため、意味は下表の通りとなります。
リトルエンディアン | ビッグエンディアン | 説明 | |
---|---|---|---|
00000000 |
→ | 0000 0000 |
バージョン |
00000000 |
0000 0000 |
フラグ | |
03000000 |
0000 0003 |
マッピング数は3 (終端のNULLを含む) | |
3A001D00 |
001D 003A |
0x001D (左Ctrlキー) を、0x003A (Caps Lockキー) へ割り当て | |
1D003A00 |
003A 001D |
0x003A (Caps Lockキー) を、0x001D (左Ctrlキー) へ割り当て | |
00000000 |
0000 0000 |
NULL終端文字 |