출처: http://yuno.tistory.com/87
(참고로 이 글의 모든 내용은 KeyTweak 이라는 프로그램을 사용하면 간편하게 설정할 수 있음
http://yuno.tistory.com/64)
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layout
의 주소에 다음과 같은 이름의 REG_BINARY 타입의 값을 추가한다.
Scancode Map
이 맵의 문법은 다음과 같다.
시작: 00 00 00 00 00 00 00 00 NN 00 00 00 (NN 은 변경할 스캔코드 값의 개수 + 1, 16진수)
본문: AA AA BB BB (BB BB에 해당하는 스캔코드를 AA AA로 매핑함(AT scancode가 아닌 XT scancode),
단 여기서 E0가 붙는 경우 앞쪽이 아닌 뒷쪽에 붙인다. 예 51 E0 (PgDn)
E0가 붙지 않는 경우 뒤의 두 자리는 00 으로 둔다. 예 3A 00 (CapsLock))
와 같은 4 byte 문장들이 위 시작부에서 지정한 NN - 1 번 반복된다.
종결: 00 00 00 00
사용예:
CapsLock 키를 LCtrl로 매핑
(첫번째 열은 주소값(16진수), 자동입력됨)
0000 00 00 00 00 00 00 00 00 : 시작
0008 02 00 00 00 1D 00 3A 00 : 1 개의 스캔코드를 매핑할 것, 3A 00를 1D 00로 매핑
0010 00 00 00 00 : 종결
조금 더 복잡한 예
0000 00 00 00 00 00 00 00 00 : 시작
0008 06 00 00 00 51 E0 4D E0 : 5 개의 스캔코드를 매핑할 것, 4D E0를 51 E0로 매핑
0010 49 E0 51 E0 47 E0 70 00 : 51 E0를 49 E0로 매핑, 70 00를 47 E0로 매핑
0018 4F E0 5D E0 4D E0 49 E0 : 5D E0를 4F E0로 매핑, 49 E0를 4D E0로 매핑
0020 00 00 00 00 : 종결
키보드 스캔코드표:
from: http://www.barcodeman.com/altek/mule/scandoc.php
아래 표에서 그림에 해당하는 번호의 키의 XT scancode 값을 사용하면 된다.
(실제 키보드 하드웨어에서 보내는 값은 AT scancode이나 BIOS에서 이를 자동으로 XT로 변경하기 때문에
소프트웨어적으로 보이는 값은 XT scancode라고 한다.)
Key Num | XT | AT |
1 | 29 | 0E |
2 | 02 | 16 |
3 | 03 | 1E |
4 | 04 | 26 |
5 | 05 | 25 |
6 | 06 | 2E |
7 | 07 | 36 |
8 | 08 | 3D |
9 | 09 | 3E |
10 | 0A | 46 |
11 | 0B | 45 |
12 | 0C | 4E |
13 | 0D | 55 |
15 | 0E | 66 |
16 | 0F | 0D |
17 | 10 | 15 |
18 | 11 | 1D |
19 | 12 | 24 |
20 | 13 | 2D |
21 | 14 | 2C |
22 | 15 | 35 |
23 | 16 | 3C |
24 | 17 | 43 |
25 | 18 | 44 |
26 | 19 | 4D |
27 | 1A | 54 |
28 | 1B | 5B |
29 | 2B | 5D |
30 | 3A | 58 |
31 | 1E | 1C |
32 | 1F | 1B |
33 | 20 | 23 |
34 | 21 | 2B |
35 | 22 | 34 |
36 | 23 | 33 |
37 | 24 | 3B |
38 | 25 | 42 |
39 | 26 | 4B |
40 | 27 | 4C |
41 | 28 | 52 |
42 | 2B | 5D |
43 | 1C | 5A |
44 | 2A | 12 |
45 | 56 | 61 |
46 | 2C | 1A |
47 | 2D | 22 |
48 | 2E | 21 |
49 | 2F | 2A |
50 | 30 | 32 |
51 | 31 | 31 |
52 | 32 | 3A |
53 | 33 | 41 |
54 | 34 | 49 |
55 | 35 | 4A |
57 | 36 | 59 |
58 | 1D | 14 |
60 | 38 | 11 |
61 | 39 | 29 |
62 | E038 | E011 |
64 | E01D | E014 |
75 | E052 | E070 |
76 | E053 | E071 |
79 | E04B | E06B |
80 | E047 | E06C |
81 | E04F | E069 |
83 | E048 | E075 |
84 | E050 | E072 |
85 | E049 | E07D |
86 | E051 | E07A |
89 | E04D | E074 |
90 | 45 | 77 |
91 | 47 | 6C |
92 | 4B | 6B |
93 | 4F | 69 |
95 | E035 | E04A |
96 | 48 | 75 |
97 | 4C | 73 |
98 | 50 | 72 |
99 | 52 | 70 |
100 | 37 | 7C |
101 | 49 | 7D |
102 | 4D | 74 |
103 | 51 | 7A |
104 | 53 | 71 |
105 | 4A | 7B |
106 | 4E | 79 |
108 | E01C | E05A |
110 | 01 | 76 |
112 | 3B | 05 |
113 | 3C | 06 |
114 | 3D | 04 |
115 | 3E | 0C |
116 | 3F | 03 |
117 | 40 | 0B |
118 | 41 | 83 |
119 | 42 | 0A |
120 | 43 | 01 |
121 | 44 | 09 |
122 | 57 | 78 |
123 | 58 | 07 |
124 | E02AE037 | E012E07C |
125 | 46 | 7E |
126 | E11D45E1 | 1477F014 |
9DC5 | F077 |
여기에 없는 키의 경우 프로그램을 이용하여 찾을 수 있다.
from: http://www.yahoworld.com/keybdmap.htm
설치하고 실행해서 키를 누르면 아래와 같이 뜨는데, 0xXX 에 해당하는 숫자가 앞자리이고,
오른쪽 칸이 비어있으면 00, 뭔가 나오면 그 뒤에 0을 붙인 것이 뒷자리가 된다.