1. USB키보드의 Key Code
- USB 키보드는 84키, 101키 104키 등이 있고 널리 사용 되는 것은 104키 키보드 입니다. 키의 개 수는 다르지만 키보드에 표기되어 있는 문자가 OS에서 동일하게 인식되기 위해서 각각의 키들은 고유한 Key Code 를 가지고 있습니다.
- 영문 키보드를 기준으로 본다면, 알파넷 A 의 Key Code는 십진수로 4, Hex코드로 04입니다. Spacebar는 십진수 44, Hex코드 2C를 가지고 있습니다.
- 하단 Keyboard/Keypad의 Key Codes를 참고해주세요
- 물리적 키가 OS로 보내는 Key Code를 다른 Key Code로 교체해서 OS에서 물리적 키에 원하는 Key Code를 부여할 수 있습니다.
- 예를 들어, 오른쪽 Alt 키에 대부분의 키보드에 실제로 존재하지 않는 F12~ 이상의 Key Code를 부여한 후 맥 OS에서 입력도구 전환 단축키로 할당하는 것이 가능합니다.
- 또한, USB Key Codes에는 볼륨조절, 복사, 붙여넣기 등의 Key Code 가 존재하기에 다향한 기능을 키보드에 부여할 수 있습니다.
- 맥 OS에서 키 매핑은 hidutil 을 통해 가능합니다.
- 또는 plist 파일을 생성하여 LaunchAgents 폴더에 넣는 방법도 있습니다.
- plist 생성은 '이곳'을 참고해주세요.
2. 키보드 매핑을 통한 단축키 활용
- 각각의 키들은 맥OS에 내장되어 있는 'hidutil' the command-line tool을 통해 재매핑 될 수 있습니다.
- 매핑시 키 값은 0x700000000 형태의 hex 값을 부여해 주어야 합니다. 하단의 표에서 찾아볼 수 있는 hex 값으로 예를 들어 본다면 F3 키는 hex 값이 3C 이니 매핑 키 값은 0x70000003C 가 됩니다.
- hidutil 의 키매핑 명령어는 hidutil property --set {매핑키 배열} 입니다.
- 매핑키 배열은 [ ] 로 감싸고 여러 개라면 ,(comma) 로 구분합니다.
- 필수 키값은 원래 Key Code를 나타내는 HIDKeyboardModifierMappingSrc 와 대체할 Key Code를 나타내는 HIDKeyboardModifierMappingDst 입니다.
123456789101112131415$ hidutil property --set'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":hex value1,"HIDKeyboardModifierMappingDst":hex value2},{"HIDKeyboardModifierMappingSrc":hex value1,"HIDKeyboardModifierMappingDst":hex value2}]}'cs - F3번은 볼륨 내리기, F4번은 볼륨 올리기, 오른쪽 Alt키는 F18번 키를 할당하는 명령어는 아래와 같습니다.
123456789101112131415161718$ hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc": 0x7000000E6,"HIDKeyboardModifierMappingDst": 0x70000006D},{"HIDKeyboardModifierMappingSrc": 0x70000003D,"HIDKeyboardModifierMappingDst": 0x700000080},{"HIDKeyboardModifierMappingSrc": 0x70000003C,"HIDKeyboardModifierMappingDst": 0x700000081}]}'cs
- 사용된 키값은 Keyboard F3 0x70000003C → Keyboard Volume Down 0x700000081,
Keyboard F4 0x70000003D → Keyboard Volume Up 0x700000080,
Keyboard Right Alt 0x7000000E6 → Keyboard F18 0x70000006D 입니다. - 오른쪽 Alt키를 F18에 매핑한 이유는 아래 게시글에서 확인해주세요.
↓↓↓
💡 [mac] 오른쪽 Alt 키를 한영키로 사용하기
3. Automator를 통한 응용프로그램 제작
- hidutil 명령어를 Automator 로 응용프로그램으로 만들겠습니다. OS를 재설치하더라고 응용프로그램만 가지고 있다면 본인의 키매핑을 유지할 수 있습니다.
- Automator 어플리케이션을 실행 > 응용프로그램 선택
- [보관함] > [유틸리티] > [쉘 스크립트 실행] 선택
- [스크립트 작성] > [실행] > [결과 확인]
- 2번 내용을 참고하여 스크립트를 작성합니다.
- 우측 상단 실행을 눌러 하단 로그 결과를 확인합니다.
- 파일 형식을 응용프로그램으로 저장합니다.
4. 로그인 항목에 등록하여 부팅시 자동실행하기
[참고] Keyboard/Keypad의 Key Codes
(Dec) | (Hex) | Usage Name | Position |
0 | 00 | Reserved (no event indicated)9 | N/A |
1 | 01 | Keyboard ErrorRoIIOver> | N/A |
2 | 02 | Keyboard POSTFaiI | N/A |
3 | 03 | Keyboard ErrorUndefined> | N/A |
4 | 04 | Keyboard a and A4 | 31 |
5 | 05 | Keyboard b and B | 50 |
6 | 06 | Keyboard c and C4 | 48 |
7 | 07 | Keyboard d and D | 33 |
8 | 08 | Keyboard e and E | 19 |
9 | 09 | Keyboard f and F | 34 |
10 | 0A | Keyboard g and G | 35 |
11 | 0B | Keyboard h and H | 36 |
12 | 0C | Keyboard i and I | 24 |
13 | 0D | Keyboard j and J | 37 |
14 | 0E | Keyboard k and K | 38 |
15 | OF | Keyboard I and L | 39 |
16 | 10 | Keyboard m and M4 | 52 |
17 | 11 | Keyboard n and N | 51 |
18 | 12 | Keyboard o and | 25 |
19 | 13 | Keyboard p and 4 | 26 |
20 | 14 | Keyboard q and Q4 | 17 |
21 | 15 | Keyboard r and R | 20 |
22 | 16 | Keyboard s and S4 | 32 |
23 | 17 | Keyboard t and T | 21 |
24 | 18 | Keyboard u and U | 23 |
25 | 19 | Keyboard v and V | 49 |
26 | 1A | Keyboard w and W4 | 18 |
27 | 1B | Keyboard x and X4 | 47 |
28 | 1C | Keyboard y and 4 | 22 |
29 | 1D | Keyboard z and Z4 | 46 |
30 | 1E | Keyboard 1 and !4 | 2 |
31 | 1F | Keyboard 2 and @4 | 3 |
32 | 20 | Keyboard 3 and #4 | 4 |
33 | 21 | Keyboard 4 and $4 | 5 |
34 | 22 | Keyboard 5 and %4 | 6 |
35 | 23 | Keyboard 6 and ^4 | 7 |
36 | 24 | Keyboard 7 and @4 | 8 |
37 | 25 | Keyboard 8 and ”4 | 9 |
38 | 26 | Keyboard 9 and (4 | 10 |
39 | 27 | Keyboard 0 and )4 | 11 |
40 | 28 | Keyboard Return (ENTER)5 | 43 |
41 | 29 | Keyboard ESCAPE | 110 |
42 | 2A | Keyboard DELETE (Backspace )13 | 15 |
43 | 2B | Keyboard Tab | 16 |
44 | 2C | Keyboard Spacebar | 61 |
45 | 2D | Keyboard - and (underscore )4 | 12 |
46 | 2E | Keyboard = and +4 | 13 |
47 | 2F | Keyboard [ and (4 | 27 |
48 | 30 | Keyboard ] and )4 | 28 |
49 | 31 | Keyboard \ and I | 29 |
50 | 32 | Keyboard Non-US # and -2 | 42 |
51 | 33 | Keyboard ; and -4 | 40 |
52 | 34 | Keyboard and “4 | 41 |
53 | 35 | Keyboard Grave Accent and Tilde4 | 1 |
54 | 36 | Keyboard, and <4 | 53 |
55 | 37 | Keyboard . and >4 | 54 |
56 | 38 | Keyboard / and '74 | 55 |
57 | 39 | Keyboard Caps Lock11 | 30 |
58 | 3A | Keyboard F1 | 112 |
59 | 3B | Keyboard F2 | 113 |
60 | 3C | Keyboard F3 | 114 |
61 | 3D | Keyboard F4 | 115 |
62 | 3E | Keyboard F5 | 116 |
63 | 3F | Keyboard F6 | 117 |
64 | 40 | Keyboard F7 | 118 |
65 | 41 | Keyboard F8 | 119 |
66 | 42 | Keyboard F9 | 120 |
67 | 43 | Keyboard F10 | 121 |
68 | 44 | Keyboard F11 | 122 |
69 | 45 | Keyboard F12 | 123 |
70 | 46 | Keyboard PrintScreen1 | 124 |
71 | 47 | Keyboard Scroll Lock11 | 125 |
72 | 48 | Keyboard Pause1 | 126 |
73 | 49 | Keyboard Insept1 | 75 |
74 | 4A | Keyboard Home1 | 80 |
75 | 4B | Keyboard PageUp1 | 85 |
76 | 4C | Keyboard Delete Forward1;14 | 76 |
77 | 4D | Keyboard End1 | 81 |
78 | 4E | Keyboard PageDown1 | 86 |
79 | 4F | Keyboard RightArrow1 | 89 |
80 | 50 | Keyboard LeftArrow1 | 79 |
81 | 51 | Keyboard DownArrow 1 | 84 |
82 | 52 | Keyboard UpArrow1 | 83 |
83 | 53 | Keypad Num Lock and CIear11 | 90 |
84 | 54 | Keypad /1 | 95 |
85 | 55 | Keypad * | 100 |
86 | 56 | Keypad - | 105 |
87 | 57 | Keypad + | 106 |
88 | 58 | Keypad ENTERS | 108 |
89 | 59 | Keypad 1 and End | 93 |
90 | 5A | Keypad 2 and Down Arrow | 98 |
91 | 5B | Keypad 3 and PageDn | 103 |
92 | 5C | Keypad 4 and Left Arrow | 92 |
93 | 5D | Keypad 5 | 97 |
94 | 5E | Keypad 6 and Right Arrow | 102 |
95 | 5F | Keypad 7 and Home | 91 |
96 | 60 | Keypad 8 and Up Arrow | 96 |
97 | 61 | Keypad 9 and PageUp | 101 |
98 | 62 | Keypad 0 and Insert | 99 |
99 | 63 | Keypad . and Delete | 104 |
100 | 64 | Keyboard Non-US \ and I3;6 | 45 |
101 | 65 | Keyboard Application10 | 129 |
102 | 66 | Keyboard Power |
|
103 | 67 | Keypad = |
|
104 | 68 | Keyboard F13 |
|
105 | 69 | Keyboard F14 |
|
106 | 6A | Keyboard F15 |
|
107 | 6B | Keyboard F16 |
|
108 | 6C | Keyboard F17 |
|
109 | 6D | Keyboard F18 |
|
110 | 6E | Keyboard F19 |
|
111 | 6F | Keyboard F20 |
|
112 | 70 | Keyboard F21 |
|
113 | 71 | Keyboard F22 |
|
114 | 72 | Keyboard F23 |
|
115 | 73 | Keyboard F24 |
|
116 | 74 | Keyboard Execute |
|
117 | 75 | Keyboard Help |
|
118 | 76 | Keyboard Menu |
|
119 | 77 | Keyboard Select |
|
120 | 78 | Keyboard Stop |
|
121 | 79 | Keyboard Again |
|
122 | 7A | Keyboard Undo |
|
123 | 7B | Keyboard Cut |
|
124 | 7C | Keyboard Copy |
|
125 | 7D | Keyboard Paste |
|
126 | 7E | Keyboard Find |
|
127 | 7F | Keyboard Mute |
|
128 | 80 | Keyboard Volume Up |
|
129 | 81 | Keyboard Volume Down |
|
130 | 82 | Keyboard Locking Caps Lock12 |
|
131 | 83 | Keyboard Locking Num Lock12 |
|
132 | 84 | Keyboard Locking Scroll Lock12 |
|
133 | 85 | Keypad Comma27 | 107 |
134 | 86 | Keypad Equal Sign29 |
|
135 | 87 | Keyboard InternationaI115,28 | 56 |
136 | 88 | Keyboard International216 |
|
137 | 89 | Keyboard International317 |
|
138 | 8A | Keyboard International418 |
|
139 | 8B | Keyboard International519 |
|
140 | 8C | Keyboard International620 |
|
141 | 8D | Keyboard International721 |
|
142 | 8E | Keyboard International822 |
|
143 | 8F | Keyboard International922 |
|
144 | 90 | Keyboard LANG125 |
|
145 | 91 | Keyboard LANG226 |
|
146 | 92 | Keyboard LANG330 |
|
147 | 93 | Keyboard LANG431 |
|
148 | 94 | Keyboard LANG532 |
|
149 | 95 | Keyboard LANG68 |
|
150 | 96 | Keyboard LANG78 |
|
151 | 97 | Keyboard LANG88 |
|
152 | 98 | Keyboard LANG98 |
|
153 | 99 | Keyboard Alternate Erase7 |
|
154 | 9A | Keyboard SysReq/Attention1 |
|
155 | 9B | Keyboard Cancel |
|
156 | 9C | Keyboard Clear |
|
157 | 9D | Keyboard Prior |
|
158 | 9E | Keyboard Return |
|
159 | 9F | Keyboard Separator |
|
160 | A0 | Keyboard Out |
|
161 | A1 | Keyboard Oper |
|
162 | A2 | Keyboard Clear/Again |
|
163 | A3 | Keyboard CrSeI/Props |
|
164 | A4 | Keyboard ExSeI |
|
165-175 | AS-AF | Reserved |
|
176 | B0 | Keypad 00 |
|
177 | B1 | Keypad 000 |
|
178 | B2 | Thousands Separator 33 |
|
179 | B3 | Decimal Separator 33 |
|
180 | B4 | Currency Unit 34 |
|
181 | B5 | Currency Sub-unit 34 |
|
182 | B6 | Keypad ( |
|
183 | B7 | Keypad ) |
|
184 | B8 | Keypad { |
|
185 | B9 | Keypad ) |
|
186 | BA | Keypad Tab |
|
187 | BB | Keypad Backspace |
|
188 | BC | Keypad A |
|
189 | BD | Keypad B |
|
190 | BE | Keypad C |
|
191 | BF | Keypad D |
|
192 | C0 | Keypad E |
|
193 | C1 | Keypad F |
|
194 | C2 | Keypad XOR |
|
195 | C3 | Keypad ^ |
|
196 | C4 | Keypad % |
|
197 | C5 | Keypad < |
|
198 | C6 | Keypad > |
|
199 | C7 | Keypad & |
|
200 | C8 | Keypad && |
|
201 | C9 | Keypad I |
|
202 | CA | Keypad II |
|
203 | CB | Keypad : |
|
204 | CC | Keypad # |
|
205 | CD | Keypad Space |
|
206 | CE | Keypad @ |
|
207 | CF | Keypad ! |
|
208 | D0 | Keypad Memory Store |
|
209 | D1 | Keypad Memory Recall |
|
210 | D2 | Keypad Memory Clear |
|
211 | D3 | Keypad Memory Add |
|
212 | D4 | Keypad Memory Subtract |
|
213 | D5 | Keypad Memory Multiply |
|
214 | D6 | Keypad Memory Divide |
|
215 | D7 | Keypad +/- |
|
216 | D8 | Keypad Clear |
|
217 | D9 | Keypad Clear Entry |
|
218 | DA | Keypad Binary |
|
219 | DB | Keypad Octal |
|
220 | DC | Keypad Decimal |
|
221 | DD | Keypad Hexadecimal |
|
222-223 | DE-DF | Reserved |
|
224 | E0 | Keyboard LeftControl | 58 |
225 | E1 | Keyboard LeftShift | 44 |
226 | E2 | Keyboard LeftAlt | 60 |
227 | E3 | Keyboard Left GUI10;23 | 127 |
228 | E4 | Keyboard RightControl | 64 |
229 | E5 | Keyboard RightShift | 57 |
230 | E6 | Keyboard RightAlt | 62 |
231 | E7 | Keyboard Right GUI10;24 | 128 |
232-65535 | E8-FFFF | Reserved |
|
0 댓글