OpenCore  1.0.4
OpenCore Bootloader
1.0.4
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
AppleKeyMap.c
Go to the documentation of this file.
1
19#include <AppleMacEfi.h>
20
21#include <Library/DebugLib.h>
22
23#include "AppleEventInternal.h"
24
25// APPLE_KEY_DESCRIPTOR
26typedef struct {
28 EFI_INPUT_KEY InputKey;
29 EFI_INPUT_KEY ShiftedInputKey;
31
32// gAppleHidUsbKbUsageKeyMap
35 {
37 { SCAN_NULL, L'a' },
38 { SCAN_NULL, L'A' }
39 },
40 {
42 { SCAN_NULL, L'b' },
43 { SCAN_NULL, L'B' }
44 },
45 {
47 { SCAN_NULL, L'c' },
48 { SCAN_NULL, L'C' }
49 },
50 {
52 { SCAN_NULL, L'd' },
53 { SCAN_NULL, L'D' }
54 },
55 {
57 { SCAN_NULL, L'e' },
58 { SCAN_NULL, L'E' }
59 },
60 {
62 { SCAN_NULL, L'f' },
63 { SCAN_NULL, L'F' }
64 },
65 {
67 { SCAN_NULL, L'g' },
68 { SCAN_NULL, L'G' }
69 },
70 {
72 { SCAN_NULL, L'h' },
73 { SCAN_NULL, L'H' }
74 },
75 {
77 { SCAN_NULL, L'i' },
78 { SCAN_NULL, L'I' }
79 },
80 {
82 { SCAN_NULL, L'j' },
83 { SCAN_NULL, L'J' }
84 },
85 {
87 { SCAN_NULL, L'k' },
88 { SCAN_NULL, L'K' }
89 },
90 {
92 { SCAN_NULL, L'l' },
93 { SCAN_NULL, L'L' }
94 },
95 {
97 { SCAN_NULL, L'm' },
98 { SCAN_NULL, L'M' }
99 },
100 {
102 { SCAN_NULL, L'n' },
103 { SCAN_NULL, L'N' }
104 },
105 {
107 { SCAN_NULL, L'o' },
108 { SCAN_NULL, L'O' }
109 },
110 {
112 { SCAN_NULL, L'p' },
113 { SCAN_NULL, L'P' }
114 },
115 {
117 { SCAN_NULL, L'q' },
118 { SCAN_NULL, L'Q' }
119 },
120 {
122 { SCAN_NULL, L'r' },
123 { SCAN_NULL, L'R' }
124 },
125 {
127 { SCAN_NULL, L's' },
128 { SCAN_NULL, L'S' }
129 },
130 {
132 { SCAN_NULL, L't' },
133 { SCAN_NULL, L'T' }
134 },
135 {
137 { SCAN_NULL, L'u' },
138 { SCAN_NULL, L'U' }
139 },
140 {
142 { SCAN_NULL, L'v' },
143 { SCAN_NULL, L'V' }
144 },
145 {
147 { SCAN_NULL, L'w' },
148 { SCAN_NULL, L'W' }
149 },
150 {
152 { SCAN_NULL, L'x' },
153 { SCAN_NULL, L'X' }
154 },
155 {
157 { SCAN_NULL, L'y' },
158 { SCAN_NULL, L'Y' }
159 },
160 {
162 { SCAN_NULL, L'z' },
163 { SCAN_NULL, L'Z' }
164 },
165 {
167 { SCAN_NULL, L'1' },
168 { SCAN_NULL, L'!' }
169 },
170 {
172 { SCAN_NULL, L'2' },
173 { SCAN_NULL, L'@' }
174 },
175 {
177 { SCAN_NULL, L'3' },
178 { SCAN_NULL, L'#' }
179 },
180 {
182 { SCAN_NULL, L'4' },
183 { SCAN_NULL, L'$' }
184 },
185 {
187 { SCAN_NULL, L'5' },
188 { SCAN_NULL, L'%' }
189 },
190 {
192 { SCAN_NULL, L'6' },
193 { SCAN_NULL, L'^' }
194 },
195 {
197 { SCAN_NULL, L'7' },
198 { SCAN_NULL, L'&' }
199 },
200 {
202 { SCAN_NULL, L'8' },
203 { SCAN_NULL, L'*' }
204 },
205 {
207 { SCAN_NULL, L'9' },
208 { SCAN_NULL, L'(' }
209 },
210 {
212 { SCAN_NULL, L'0' },
213 { SCAN_NULL, L')' }
214 },
215 {
217 { SCAN_NULL, CHAR_CARRIAGE_RETURN },
218 { SCAN_NULL, CHAR_CARRIAGE_RETURN }
219 },
220 {
222 { SCAN_ESC, CHAR_NULL },
223 { SCAN_ESC, CHAR_NULL }
224 },
225 {
227 { SCAN_NULL, CHAR_BACKSPACE },
228 { SCAN_NULL, CHAR_BACKSPACE }
229 },
230 {
232 { SCAN_NULL, CHAR_TAB },
233 { SCAN_NULL, CHAR_TAB }
234 },
235 {
237 { SCAN_NULL, L' ' },
238 { SCAN_NULL, L' ' }
239 },
240 {
242 { SCAN_NULL, L'-' },
243 { SCAN_NULL, L'_' }
244 },
245 {
247 { SCAN_NULL, L'=' },
248 { SCAN_NULL, L'+' }
249 },
250 {
252 { SCAN_NULL, L'[' },
253 { SCAN_NULL, L'{' }
254 },
255 {
257 { SCAN_NULL, L']' },
258 { SCAN_NULL, L'}' }
259 },
260 {
262 { SCAN_NULL, L'\\' },
263 { SCAN_NULL, L'|' }
264 },
265 {
267 { SCAN_NULL, L';' },
268 { SCAN_NULL, L':' }
269 },
270 {
272 { SCAN_NULL, L'\'' },
273 { SCAN_NULL, L'"' }
274 },
275 {
277 { SCAN_NULL, L'`' },
278 { SCAN_NULL, L'~' }
279 },
280 {
282 { SCAN_NULL, L',' },
283 { SCAN_NULL, L'<' }
284 },
285 {
287 { SCAN_NULL, L'.' },
288 { SCAN_NULL, L'>' }
289 },
290 {
292 { SCAN_NULL, L'/' },
293 { SCAN_NULL, L'?' }
294 },
295 // BUG: AppleHidUsbKbUsageKeyCLock is missing.
296 {
298 { SCAN_F1, CHAR_NULL },
299 { SCAN_F1, CHAR_NULL }
300 },
301 {
303 { SCAN_F2, CHAR_NULL },
304 { SCAN_F2, CHAR_NULL }
305 },
306 {
308 { SCAN_F3, CHAR_NULL },
309 { SCAN_F3, CHAR_NULL }
310 },
311 {
313 { SCAN_F4, CHAR_NULL },
314 { SCAN_F4, CHAR_NULL }
315 },
316 {
318 { SCAN_F5, CHAR_NULL },
319 { SCAN_F5, CHAR_NULL }
320 },
321 {
323 { SCAN_F6, CHAR_NULL },
324 { SCAN_F6, CHAR_NULL }
325 },
326 {
328 { SCAN_F7, CHAR_NULL },
329 { SCAN_F7, CHAR_NULL }
330 },
331 {
333 { SCAN_F8, CHAR_NULL },
334 { SCAN_F8, CHAR_NULL }
335 },
336 {
338 { SCAN_F9, CHAR_NULL },
339 { SCAN_F9, CHAR_NULL }
340 },
341 {
343 { SCAN_F10, CHAR_NULL },
344 { SCAN_F10, CHAR_NULL }
345 },
346 {
348 { SCAN_F11, CHAR_NULL },
349 { SCAN_F11, CHAR_NULL }
350 },
351 {
353 { SCAN_F12, CHAR_NULL },
354 { SCAN_F12, CHAR_NULL }
355 },
356 // BUG: AppleHidUsbKbUsageKeyPrint, AppleHidUsbKbUsageKeySLock, AppleHidUsbKbUsageKeyPause missing.
357 {
359 { SCAN_INSERT, CHAR_NULL },
360 { SCAN_INSERT, CHAR_NULL }
361 },
362 {
364 { SCAN_HOME, CHAR_NULL },
365 { SCAN_HOME, CHAR_NULL }
366 },
367 {
369 { SCAN_PAGE_UP, CHAR_NULL },
370 { SCAN_PAGE_UP, CHAR_NULL }
371 },
372 {
374 { SCAN_DELETE, CHAR_NULL },
375 { SCAN_DELETE, CHAR_NULL }
376 },
377 {
379 { SCAN_END, CHAR_NULL },
380 { SCAN_END, CHAR_NULL }
381 },
382 {
384 { SCAN_PAGE_DOWN, CHAR_NULL },
385 { SCAN_PAGE_DOWN, CHAR_NULL }
386 },
387 {
389 { SCAN_RIGHT, CHAR_NULL },
390 { SCAN_RIGHT, CHAR_NULL }
391 },
392 {
394 { SCAN_LEFT, CHAR_NULL },
395 { SCAN_LEFT, CHAR_NULL }
396 },
397 {
399 { SCAN_DOWN, CHAR_NULL },
400 { SCAN_DOWN, CHAR_NULL }
401 },
402 {
404 { SCAN_UP, CHAR_NULL },
405 { SCAN_UP, CHAR_NULL }
406 },
407 // BUG: UsbHidUsageIdKbKpPadKeyNLck is missing.
408 {
410 { AppleScanKeypadSlash, L'/' },
411 { AppleScanKeypadSlash, L'/' }
412 },
413 {
415 { AppleScanKeypadAsterisk, L'*' },
417 },
418 {
420 { AppleScanKeypadMinus, L'-' },
421 { AppleScanKeypadMinus, L'-' }
422 },
423 {
425 { AppleScanKeypadPlus, L'+' },
426 { AppleScanKeypadPlus, L'+' }
427 },
428 {
430 { AppleScanKeypadEnter, CHAR_CARRIAGE_RETURN },
431 { AppleScanKeypadEnter, CHAR_CARRIAGE_RETURN }
432 },
433 {
435 { AppleScanKeypadOne, L'1' },
436 { AppleScanKeypadOne, L'1' }
437 },
438 {
440 { AppleScanKeypadTwo, L'2' },
441 { AppleScanKeypadTwo, L'2' }
442 },
443 {
445 { AppleScanKeypadThree, L'3' },
446 { AppleScanKeypadThree, L'3' }
447 },
448 {
450 { AppleScanKeypadFour, L'4' },
451 { AppleScanKeypadFour, L'4' }
452 },
453 {
455 { AppleScanKeypadFive, L'5' },
456 { AppleScanKeypadFive, L'5' }
457 },
458 {
460 { AppleScanKeypadSix, L'6' },
461 { AppleScanKeypadSix, L'6' }
462 },
463 {
465 { AppleScanKeypadSeven, L'7' },
466 { AppleScanKeypadSeven, L'7' }
467 },
468 {
470 { AppleScanKeypadEight, L'8' },
471 { AppleScanKeypadEight, L'8' }
472 },
473 {
475 { AppleScanKeypadNine, L'9' },
476 { AppleScanKeypadNine, L'9' }
477 },
478 {
480 { AppleScanKeypadIns, L'0' },
481 { AppleScanKeypadIns, L'0' }
482 },
483 {
485 { AppleScanKeypadDel, L'.' },
486 { AppleScanKeypadDel, L'.' }
487 },
488 {
490 { AppleScanKeypadEquals, L'=' },
491 { AppleScanKeypadEquals, L'=' }
492 }
493};
494
495// EventInputKeyFromAppleKeyCode
496VOID
499 OUT EFI_INPUT_KEY *InputKey,
500 IN BOOLEAN Shifted
501 )
502{
503 UINTN Index;
505
506 DEBUG ((DEBUG_VERBOSE, "EventInputKeyFromAppleKeyCode\n"));
507
508 Key = &mAppleKeyMap[0];
509
510 for (Index = 0; Index < ARRAY_SIZE (mAppleKeyMap); ++Index) {
511 if (Key->AppleKeyCode == AppleKeyCode) {
512 *InputKey = (Shifted ? Key->ShiftedInputKey : Key->InputKey);
513
514 return;
515 }
516
517 ++Key;
518 }
519
520 InputKey->ScanCode = SCAN_NULL;
521 InputKey->UnicodeChar = CHAR_NULL;
522}
@ AppleHidUsbKbUsageKeyPadMinus
Definition AppleHid.h:189
@ AppleHidUsbKbUsageKeyComma
Definition AppleHid.h:157
@ AppleHidUsbKbUsageKeyF11
Definition AppleHid.h:171
@ AppleHidUsbKbUsageKeyEnter
Definition AppleHid.h:143
@ AppleHidUsbKbUsageKeySpaceBar
Definition AppleHid.h:147
@ AppleHidUsbKbUsageKeyO
Definition AppleHid.h:121
@ AppleHidUsbKbUsageKeyPgUp
Definition AppleHid.h:178
@ AppleHidUsbKbUsageKeyThree
Definition AppleHid.h:135
@ AppleHidUsbKbUsageKeyRightBracket
Definition AppleHid.h:151
@ AppleHidUsbKbUsageKeyEquals
Definition AppleHid.h:149
@ AppleHidUsbKbUsageKeyPadAsterisk
Definition AppleHid.h:188
@ AppleHidUsbKbUsageKeyS
Definition AppleHid.h:125
@ AppleHidUsbKbUsageKeyFive
Definition AppleHid.h:137
@ AppleHidUsbKbUsageKeyI
Definition AppleHid.h:115
@ AppleHidUsbKbUsageKeyIns
Definition AppleHid.h:176
@ AppleHidUsbKbUsageKeyPadSlash
Definition AppleHid.h:187
@ AppleHidUsbKbUsageKeyRightArrow
Definition AppleHid.h:182
@ AppleHidUsbKbUsageKeyF1
Definition AppleHid.h:161
@ AppleHidUsbKbUsageKeyEnd
Definition AppleHid.h:180
@ AppleHidUsbKbUsageKeyTab
Definition AppleHid.h:146
@ AppleHidUsbKbUsageKeyDownArrow
Definition AppleHid.h:184
@ AppleHidUsbKbUsageKeyPadEight
Definition AppleHid.h:199
@ AppleHidUsbKbUsageKeyN
Definition AppleHid.h:120
@ AppleHidUsbKbUsageKeyPadEquals
Definition AppleHid.h:206
@ AppleHidUsbKbUsageKeyUpArrow
Definition AppleHid.h:185
@ AppleHidUsbKbUsageKeyEight
Definition AppleHid.h:140
@ AppleHidUsbKbUsageKeyL
Definition AppleHid.h:118
@ AppleHidUsbKbUsageKeyHome
Definition AppleHid.h:177
@ AppleHidUsbKbUsageKeyA
Definition AppleHid.h:107
@ AppleHidUsbKbUsageKeyPadTwo
Definition AppleHid.h:193
@ AppleHidUsbKbUsageKeySemicolon
Definition AppleHid.h:154
@ AppleHidUsbKbUsageKeyPadSix
Definition AppleHid.h:197
@ AppleHidUsbKbUsageKeyAcute
Definition AppleHid.h:156
@ AppleHidUsbKbUsageKeyPgDn
Definition AppleHid.h:181
@ AppleHidUsbKbUsageKeyH
Definition AppleHid.h:114
@ AppleHidUsbKbUsageKeyPadPlus
Definition AppleHid.h:190
@ AppleHidUsbKbUsageKeyP
Definition AppleHid.h:122
@ AppleHidUsbKbUsageKeyF
Definition AppleHid.h:112
@ AppleHidUsbKbUsageKeyEscape
Definition AppleHid.h:144
@ AppleHidUsbKbUsageKeyC
Definition AppleHid.h:109
@ AppleHidUsbKbUsageKeyF3
Definition AppleHid.h:163
@ AppleHidUsbKbUsageKeyF8
Definition AppleHid.h:168
@ AppleHidUsbKbUsageKeyBackSpace
Definition AppleHid.h:145
@ AppleHidUsbKbUsageKeyJ
Definition AppleHid.h:116
@ AppleHidUsbKbUsageKeyF9
Definition AppleHid.h:169
@ AppleHidUsbKbUsageKeyMinus
Definition AppleHid.h:148
@ AppleHidUsbKbUsageKeyLeftBracket
Definition AppleHid.h:150
@ AppleHidUsbKbUsageKeyF10
Definition AppleHid.h:170
@ AppleHidUsbKbUsageKeyF6
Definition AppleHid.h:166
@ AppleHidUsbKbUsageKeyPadNine
Definition AppleHid.h:200
@ AppleHidUsbKbUsageKeyV
Definition AppleHid.h:128
@ AppleHidUsbKbUsageKeyPadIns
Definition AppleHid.h:201
@ AppleHidUsbKbUsageKeyF2
Definition AppleHid.h:162
@ AppleHidUsbKbUsageKeyB
Definition AppleHid.h:108
@ AppleHidUsbKbUsageKeyF5
Definition AppleHid.h:165
@ AppleHidUsbKbUsageKeySlash
Definition AppleHid.h:159
@ AppleHidUsbKbUsageKeyW
Definition AppleHid.h:129
@ AppleHidUsbKbUsageKeyZ
Definition AppleHid.h:132
@ AppleHidUsbKbUsageKeyR
Definition AppleHid.h:124
@ AppleHidUsbKbUsageKeyTwo
Definition AppleHid.h:134
@ AppleHidUsbKbUsageKeyPadSeven
Definition AppleHid.h:198
@ AppleHidUsbKbUsageKeyM
Definition AppleHid.h:119
@ AppleHidUsbKbUsageKeyPadFive
Definition AppleHid.h:196
@ AppleHidUsbKbUsageKeyY
Definition AppleHid.h:131
@ AppleHidUsbKbUsageKeyPeriod
Definition AppleHid.h:158
@ AppleHidUsbKbUsageKeyD
Definition AppleHid.h:110
@ AppleHidUsbKbUsageKeyOne
Definition AppleHid.h:133
@ AppleHidUsbKbUsageKeyPadThree
Definition AppleHid.h:194
@ AppleHidUsbKbUsageKeyU
Definition AppleHid.h:127
@ AppleHidUsbKbUsageKeySix
Definition AppleHid.h:138
@ AppleHidUsbKbUsageKeyE
Definition AppleHid.h:111
@ AppleHidUsbKbUsageKeyQuotation
Definition AppleHid.h:155
@ AppleHidUsbKbUsageKeyF12
Definition AppleHid.h:172
@ AppleHidUsbKbUsageKeyFour
Definition AppleHid.h:136
@ AppleHidUsbKbUsageKeyPadOne
Definition AppleHid.h:192
@ AppleHidUsbKbUsageKeyPadFour
Definition AppleHid.h:195
@ AppleHidUsbKbUsageKeyX
Definition AppleHid.h:130
@ AppleHidUsbKbUsageKeySeven
Definition AppleHid.h:139
@ AppleHidUsbKbUsageKeyF4
Definition AppleHid.h:164
@ AppleHidUsbKbUsageKeyPadDel
Definition AppleHid.h:202
@ AppleHidUsbKbUsageKeyZero
Definition AppleHid.h:142
@ AppleHidUsbKbUsageKeyT
Definition AppleHid.h:126
@ AppleHidUsbKbUsageKeyDel
Definition AppleHid.h:179
@ AppleHidUsbKbUsageKeyPadEnter
Definition AppleHid.h:191
@ AppleHidUsbKbUsageKeyNine
Definition AppleHid.h:141
@ AppleHidUsbKbUsageKeyBackslash
Definition AppleHid.h:152
@ AppleHidUsbKbUsageKeyQ
Definition AppleHid.h:123
@ AppleHidUsbKbUsageKeyG
Definition AppleHid.h:113
@ AppleHidUsbKbUsageKeyF7
Definition AppleHid.h:167
@ AppleHidUsbKbUsageKeyK
Definition AppleHid.h:117
@ AppleHidUsbKbUsageKeyLeftArrow
Definition AppleHid.h:183
APPLE_HID_USAGE APPLE_KEY_CODE
Definition AppleHid.h:317
@ AppleScanKeypadFive
Definition AppleHid.h:61
@ AppleScanKeypadIns
Definition AppleHid.h:66
@ AppleScanKeypadPlus
Definition AppleHid.h:55
@ AppleScanKeypadDel
Definition AppleHid.h:67
@ AppleScanKeypadSlash
Definition AppleHid.h:52
@ AppleScanKeypadEight
Definition AppleHid.h:64
@ AppleScanKeypadTwo
Definition AppleHid.h:58
@ AppleScanKeypadMinus
Definition AppleHid.h:54
@ AppleScanKeypadFour
Definition AppleHid.h:60
@ AppleScanKeypadEnter
Definition AppleHid.h:56
@ AppleScanKeypadNine
Definition AppleHid.h:65
@ AppleScanKeypadThree
Definition AppleHid.h:59
@ AppleScanKeypadSeven
Definition AppleHid.h:63
@ AppleScanKeypadAsterisk
Definition AppleHid.h:53
@ AppleScanKeypadOne
Definition AppleHid.h:57
@ AppleScanKeypadEquals
Definition AppleHid.h:68
@ AppleScanKeypadSix
Definition AppleHid.h:62
STATIC APPLE_KEY_DESCRIPTOR mAppleKeyMap[]
The default United States key map for Apple keyboards.
Definition AppleKeyMap.c:34
VOID EventInputKeyFromAppleKeyCode(IN APPLE_KEY_CODE AppleKeyCode, OUT EFI_INPUT_KEY *InputKey, IN BOOLEAN Shifted)
#define ARRAY_SIZE(Array)
Definition AppleMacEfi.h:34
APPLE_KEY_CODE AppleKeyCode
Definition OcTypingLib.h:37
APPLE_KEY_CODE AppleKeyCode
Definition AppleKeyMap.c:27
EFI_INPUT_KEY ShiftedInputKey
Definition AppleKeyMap.c:29
EFI_INPUT_KEY InputKey
Definition AppleKeyMap.c:28