Вариант через реестр:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\KeyBoard
Layout\Scancode Map
It's a binary value that lets you map keystrokes in the low-level keyboard
drivers in NT. As a result you don't have to worry about applications
bypassing mappings that you've done at a higher level (i.e. it just works).
Here's the format of the value:
Код: Выделить всё
DWORD: 0x00000000 header
DWORD: 0x00000000 header
DWORD: length (in DWORDs) of remaining data, including terminating DWORD
DWORD: mapping 1
...
DWORD: mapping n
DWORD: 0x00000000 terminating null DWORD
Each mapping DWORD has two parts: the input scancode, and an output
scancode. To map scancode 0x1d (left control) to scancode 0x3a (caps
lock), you want a value of 0x003a001d. Note that this does not swap the
keys. Using just this mapping value, both the left control and the caps
lock key will behave as caps-lock. To swap, you also need to map 0x3a to
0x1d, using 0x001d003a. So, the complete registry value you'd use to swap
left-control and caps-lock is:
00 00 00 00 00 00 00 00 03 00 00 00 1d 00 3a 00 3a 00 1d 00 00 00 00 00
Сканкоды виндовых клавиш сам надеюсь наёдешь