Windows 키 맵핑 바꾸기

회사/집에서 Realforce 101 key를 쓴다.

이 키보드는 101키라서 때문에 흔히 쓰는(?) 한/영 전환 키와 윈도우즈 키가 존재하지 않는다. 한영키는 원래 잘 안 쓰고(shift+space 애용) 있어서 크게 문제가 안되었지만, 윈도우즈 키는 Win + R, Win + E를 꽤 쓰기 때문에 좀 불편해졌다. 그래서 찾은 방법이 registry에 등록된 키보드 Scancode map을 수정하는 것.

HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout 에 새로운 문자열 값 Scancode Map (binary data)를 추가하고,

00 00 00 00 00 00 00 00
02 00 00 00 5B E0 3A 00
00 00 00 00

를 데이터로 써준다. (little endian 임에 주의)

처음 8바이트는 헤더 버젼과 플래그인데 각각 0이고(…), 마지막 4바이트는 널 맵핑(일종의 패딩 역할)이다. 8~11번째 바이트(0부터 세서)부분이 바뀌는 키의 수다(널맵핑 포함한 맵핑 수; Capslock를 Winodws key로 바꾸는 거라 2개가 됨). 그리고 그 다음 4바이트에서 Caps lock을 Windows key로 덮어 쓴 내용이다. (Capslock이 00 3A, 왼쪽 윈도우즈 키가 E0 5B 임)

이렇게 해서 윈도우즈 키를 캡스락에 덮어쓰는게 완료[…]

이외에도 다른 키코드들을 맵핑해서 변경하는게 가능하다. 개별 키코드는 http://www.microsoft.com/whdc/device/input/Scancode.mspx 의 Scancode spec.을 읽어보자.

레지스트리를 변경하는 스크린 샷

scancode

ps. HKLM은 HKEY_LOCAL_MACHINE 임


Update: 2009-11-18

CapsLock 을 Ctrl 로(이건 HHK2 따라하기?), Ctrl 을 윈도우즈 키로 바꿔서 쓰기 시작했다.

00 00 00 00  00 00 00 00
03 00 00 00  5B E0 1D 00
1D 00 3A 00  00 00 00 00

으로 사용 개시. 03 00 00 00 이 후의 두 개의 32 byte word (Win32 용어론 DWORD) 가 CapsLock → Ctrl, Ctrl → Windows Key 에 해당한다.

ps. 적절히 빼놓고 썼는데, ctrl, Windows key 모두 왼쪽에 있는 녀석만을 지칭한다.