먼저 regedit 나 regedt32를 실행해 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout 를 엽니다. 주의할 점이 있는데 Keyboard Layouts 라는 것도 있는데 이건 건드리면 안됩니다.
여기에 Scancode Map 이라는 이름의 REG_BINARY 타입의 값을 만들고 아래의 값을 줍니다.
00000000000000000200000001003A0000000000
재부팅하면 Caps Lock 키가 ESC키로 동작할 것입니다.
이제 위의 값이 어떻게해서 나오는 건지 알아봅니다.
위의 값은 실제로는 8자리씩 끊어서 읽습니다. 00000000 00000000 02000000 01003A00 00000000
첫번째 부분은 버전헤더이고 두번째 부분은 Flags 헤더라고 합니다.(저도 정확히 뭔지는 몰라요.) 이 두 부분은 그냥 0으로 하면 됩니다.
세번째 부분은 (변경할 키의 개수 + 1) 입니다. 여기서는 한개만 변경하니 2가 됩니다. (왜 00000002 가 아니라 위처럼 하는지 궁금해하실 분도 있을 텐데 나중에 설명합니다.)
마지막 부분은 끝을 나타냅니다. 이부분 역시 0으로 하면 됩니다.
세번째 부분과 마지막 부분 사이에 실제 키를 변경하는 것이 옵니다. 여기서는 하나만 있지만 여러키를 변경한다면 그 수만큼 만들면 됩니다. 변경하는 부분은 네자리씩 끊어서 앞은 원래키의 스캔코드 뒤는 바꾸려는 키의 스캔코드입니다. 스캔코드값은 첫번째 링크의 "Keyboard Scan Code Specification" 를 다운받아 압축을 풀어서 나오는 문서의 Scan Code Table 을 보면 됩니다. scan1 make, scan1 break, scan2 make, scan2 break 이렇게 네가지가 있는데 scan1 make의 값을 쓰면 됩니다. 다른 건 뭐에 쓰는지 모르겠어요.
표를 보면 Caps Lock 키는 3A, ESC 키는 01 이므로 값은 003A0001 (모자라는 만큼 앞에 0을 붙입니다.) 이 됩니다. "위에 있는 것하고 다르잖아!" 라고 하실텐데요, 리틀엔디안, 빅엔디안 어쩌구 하는 말이 있더군요. 저도 자세히는 모르구요, 간단히 말해서 가장높은 자리수가 오른쪽에 와야 한답니다. 그래서 순서를 바꿔주는데요, 두자리씩 끊어서 바꾸면 됩니다. 예를 들어 12345678 을 나타내려면 78563412 라고 씁니다. 그래서 세번째 부분도 02000000 이 되는 것입니다.