diff options
Diffstat (limited to 'tmk_core/common/keycode.h')
-rw-r--r-- | tmk_core/common/keycode.h | 489 |
1 files changed, 489 insertions, 0 deletions
diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h new file mode 100644 index 000000000..ac4ef00db --- /dev/null +++ b/tmk_core/common/keycode.h | |||
@@ -0,0 +1,489 @@ | |||
1 | /* | ||
2 | Copyright 2011,2012 Jun Wako <wakojun@gmail.com> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | /* | ||
19 | * Keycodes based on HID Usage Keyboard/Keypad Page(0x07) plus special codes | ||
20 | * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf | ||
21 | */ | ||
22 | #ifndef KEYCODE_H | ||
23 | #define KEYCODE_H | ||
24 | |||
25 | |||
26 | #define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED) | ||
27 | #define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF) | ||
28 | #define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL) | ||
29 | #define IS_MOD(code) (KC_LCTRL <= (code) && (code) <= KC_RGUI) | ||
30 | |||
31 | |||
32 | #define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF)) | ||
33 | #define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE) | ||
34 | #define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_WFAV) | ||
35 | #define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31) | ||
36 | #define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) | ||
37 | #define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) | ||
38 | #define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN5) | ||
39 | #define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT) | ||
40 | #define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2) | ||
41 | |||
42 | #define MOD_BIT(code) (1<<MOD_INDEX(code)) | ||
43 | #define MOD_INDEX(code) ((code) & 0x07) | ||
44 | #define FN_BIT(code) (1<<FN_INDEX(code)) | ||
45 | #define FN_INDEX(code) ((code) - KC_FN0) | ||
46 | #define FN_MIN KC_FN0 | ||
47 | #define FN_MAX KC_FN31 | ||
48 | |||
49 | |||
50 | /* | ||
51 | * Short names for ease of definition of keymap | ||
52 | */ | ||
53 | #define KC_LCTL KC_LCTRL | ||
54 | #define KC_RCTL KC_RCTRL | ||
55 | #define KC_LSFT KC_LSHIFT | ||
56 | #define KC_RSFT KC_RSHIFT | ||
57 | #define KC_ESC KC_ESCAPE | ||
58 | #define KC_BSPC KC_BSPACE | ||
59 | #define KC_ENT KC_ENTER | ||
60 | #define KC_DEL KC_DELETE | ||
61 | #define KC_INS KC_INSERT | ||
62 | #define KC_CAPS KC_CAPSLOCK | ||
63 | #define KC_CLCK KC_CAPSLOCK | ||
64 | #define KC_RGHT KC_RIGHT | ||
65 | #define KC_PGDN KC_PGDOWN | ||
66 | #define KC_PSCR KC_PSCREEN | ||
67 | #define KC_SLCK KC_SCROLLLOCK | ||
68 | #define KC_PAUS KC_PAUSE | ||
69 | #define KC_BRK KC_PAUSE | ||
70 | #define KC_NLCK KC_NUMLOCK | ||
71 | #define KC_SPC KC_SPACE | ||
72 | #define KC_MINS KC_MINUS | ||
73 | #define KC_EQL KC_EQUAL | ||
74 | #define KC_GRV KC_GRAVE | ||
75 | #define KC_RBRC KC_RBRACKET | ||
76 | #define KC_LBRC KC_LBRACKET | ||
77 | #define KC_COMM KC_COMMA | ||
78 | #define KC_BSLS KC_BSLASH | ||
79 | #define KC_SLSH KC_SLASH | ||
80 | #define KC_SCLN KC_SCOLON | ||
81 | #define KC_QUOT KC_QUOTE | ||
82 | #define KC_APP KC_APPLICATION | ||
83 | #define KC_NUHS KC_NONUS_HASH | ||
84 | #define KC_NUBS KC_NONUS_BSLASH | ||
85 | #define KC_LCAP KC_LOCKING_CAPS | ||
86 | #define KC_LNUM KC_LOCKING_NUM | ||
87 | #define KC_LSCR KC_LOCKING_SCROLL | ||
88 | #define KC_ERAS KC_ALT_ERASE, | ||
89 | #define KC_CLR KC_CLEAR | ||
90 | /* Japanese specific */ | ||
91 | #define KC_ZKHK KC_GRAVE | ||
92 | #define KC_RO KC_INT1 | ||
93 | #define KC_KANA KC_INT2 | ||
94 | #define KC_JYEN KC_INT3 | ||
95 | #define KC_HENK KC_INT4 | ||
96 | #define KC_MHEN KC_INT5 | ||
97 | /* Keypad */ | ||
98 | #define KC_P1 KC_KP_1 | ||
99 | #define KC_P2 KC_KP_2 | ||
100 | #define KC_P3 KC_KP_3 | ||
101 | #define KC_P4 KC_KP_4 | ||
102 | #define KC_P5 KC_KP_5 | ||
103 | #define KC_P6 KC_KP_6 | ||
104 | #define KC_P7 KC_KP_7 | ||
105 | #define KC_P8 KC_KP_8 | ||
106 | #define KC_P9 KC_KP_9 | ||
107 | #define KC_P0 KC_KP_0 | ||
108 | #define KC_PDOT KC_KP_DOT | ||
109 | #define KC_PCMM KC_KP_COMMA | ||
110 | #define KC_PSLS KC_KP_SLASH | ||
111 | #define KC_PAST KC_KP_ASTERISK | ||
112 | #define KC_PMNS KC_KP_MINUS | ||
113 | #define KC_PPLS KC_KP_PLUS | ||
114 | #define KC_PEQL KC_KP_EQUAL | ||
115 | #define KC_PENT KC_KP_ENTER | ||
116 | /* Mousekey */ | ||
117 | #define KC_MS_U KC_MS_UP | ||
118 | #define KC_MS_D KC_MS_DOWN | ||
119 | #define KC_MS_L KC_MS_LEFT | ||
120 | #define KC_MS_R KC_MS_RIGHT | ||
121 | #define KC_BTN1 KC_MS_BTN1 | ||
122 | #define KC_BTN2 KC_MS_BTN2 | ||
123 | #define KC_BTN3 KC_MS_BTN3 | ||
124 | #define KC_BTN4 KC_MS_BTN4 | ||
125 | #define KC_BTN5 KC_MS_BTN5 | ||
126 | #define KC_WH_U KC_MS_WH_UP | ||
127 | #define KC_WH_D KC_MS_WH_DOWN | ||
128 | #define KC_WH_L KC_MS_WH_LEFT | ||
129 | #define KC_WH_R KC_MS_WH_RIGHT | ||
130 | #define KC_ACL0 KC_MS_ACCEL0 | ||
131 | #define KC_ACL1 KC_MS_ACCEL1 | ||
132 | #define KC_ACL2 KC_MS_ACCEL2 | ||
133 | /* Sytem Control */ | ||
134 | #define KC_PWR KC_SYSTEM_POWER | ||
135 | #define KC_SLEP KC_SYSTEM_SLEEP | ||
136 | #define KC_WAKE KC_SYSTEM_WAKE | ||
137 | /* Consumer Page */ | ||
138 | #define KC_MUTE KC_AUDIO_MUTE | ||
139 | #define KC_VOLU KC_AUDIO_VOL_UP | ||
140 | #define KC_VOLD KC_AUDIO_VOL_DOWN | ||
141 | #define KC_MNXT KC_MEDIA_NEXT_TRACK | ||
142 | #define KC_MPRV KC_MEDIA_PREV_TRACK | ||
143 | #define KC_MFFD KC_MEDIA_FAST_FORWARD | ||
144 | #define KC_MRWD KC_MEDIA_REWIND | ||
145 | #define KC_MSTP KC_MEDIA_STOP | ||
146 | #define KC_MPLY KC_MEDIA_PLAY_PAUSE | ||
147 | #define KC_MSEL KC_MEDIA_SELECT | ||
148 | #define KC_EJCT KC_MEDIA_EJECT | ||
149 | #define KC_MAIL KC_MAIL | ||
150 | #define KC_CALC KC_CALCULATOR | ||
151 | #define KC_MYCM KC_MY_COMPUTER | ||
152 | #define KC_WSCH KC_WWW_SEARCH | ||
153 | #define KC_WHOM KC_WWW_HOME | ||
154 | #define KC_WBAK KC_WWW_BACK | ||
155 | #define KC_WFWD KC_WWW_FORWARD | ||
156 | #define KC_WSTP KC_WWW_STOP | ||
157 | #define KC_WREF KC_WWW_REFRESH | ||
158 | #define KC_WFAV KC_WWW_FAVORITES | ||
159 | /* Transparent */ | ||
160 | #define KC_TRANSPARENT 1 | ||
161 | #define KC_TRNS KC_TRANSPARENT | ||
162 | |||
163 | |||
164 | |||
165 | /* USB HID Keyboard/Keypad Usage(0x07) */ | ||
166 | enum hid_keyboard_keypad_usage { | ||
167 | KC_NO = 0x00, | ||
168 | KC_ROLL_OVER, | ||
169 | KC_POST_FAIL, | ||
170 | KC_UNDEFINED, | ||
171 | KC_A, | ||
172 | KC_B, | ||
173 | KC_C, | ||
174 | KC_D, | ||
175 | KC_E, | ||
176 | KC_F, | ||
177 | KC_G, | ||
178 | KC_H, | ||
179 | KC_I, | ||
180 | KC_J, | ||
181 | KC_K, | ||
182 | KC_L, | ||
183 | KC_M, /* 0x10 */ | ||
184 | KC_N, | ||
185 | KC_O, | ||
186 | KC_P, | ||
187 | KC_Q, | ||
188 | KC_R, | ||
189 | KC_S, | ||
190 | KC_T, | ||
191 | KC_U, | ||
192 | KC_V, | ||
193 | KC_W, | ||
194 | KC_X, | ||
195 | KC_Y, | ||
196 | KC_Z, | ||
197 | KC_1, | ||
198 | KC_2, | ||
199 | KC_3, /* 0x20 */ | ||
200 | KC_4, | ||
201 | KC_5, | ||
202 | KC_6, | ||
203 | KC_7, | ||
204 | KC_8, | ||
205 | KC_9, | ||
206 | KC_0, | ||
207 | KC_ENTER, | ||
208 | KC_ESCAPE, | ||
209 | KC_BSPACE, | ||
210 | KC_TAB, | ||
211 | KC_SPACE, | ||
212 | KC_MINUS, | ||
213 | KC_EQUAL, | ||
214 | KC_LBRACKET, | ||
215 | KC_RBRACKET, /* 0x30 */ | ||
216 | KC_BSLASH, /* \ (and |) */ | ||
217 | KC_NONUS_HASH, /* Non-US # and ~ */ | ||
218 | KC_SCOLON, /* ; (and :) */ | ||
219 | KC_QUOTE, /* ' and " */ | ||
220 | KC_GRAVE, /* Grave accent and tilde */ | ||
221 | KC_COMMA, /* , and < */ | ||
222 | KC_DOT, /* . and > */ | ||
223 | KC_SLASH, /* / and ? */ | ||
224 | KC_CAPSLOCK, | ||
225 | KC_F1, | ||
226 | KC_F2, | ||
227 | KC_F3, | ||
228 | KC_F4, | ||
229 | KC_F5, | ||
230 | KC_F6, | ||
231 | KC_F7, /* 0x40 */ | ||
232 | KC_F8, | ||
233 | KC_F9, | ||
234 | KC_F10, | ||
235 | KC_F11, | ||
236 | KC_F12, | ||
237 | KC_PSCREEN, | ||
238 | KC_SCROLLLOCK, | ||
239 | KC_PAUSE, | ||
240 | KC_INSERT, | ||
241 | KC_HOME, | ||
242 | KC_PGUP, | ||
243 | KC_DELETE, | ||
244 | KC_END, | ||
245 | KC_PGDOWN, | ||
246 | KC_RIGHT, | ||
247 | KC_LEFT, /* 0x50 */ | ||
248 | KC_DOWN, | ||
249 | KC_UP, | ||
250 | KC_NUMLOCK, | ||
251 | KC_KP_SLASH, | ||
252 | KC_KP_ASTERISK, | ||
253 | KC_KP_MINUS, | ||
254 | KC_KP_PLUS, | ||
255 | KC_KP_ENTER, | ||
256 | KC_KP_1, | ||
257 | KC_KP_2, | ||
258 | KC_KP_3, | ||
259 | KC_KP_4, | ||
260 | KC_KP_5, | ||
261 | KC_KP_6, | ||
262 | KC_KP_7, | ||
263 | KC_KP_8, /* 0x60 */ | ||
264 | KC_KP_9, | ||
265 | KC_KP_0, | ||
266 | KC_KP_DOT, | ||
267 | KC_NONUS_BSLASH, /* Non-US \ and | */ | ||
268 | KC_APPLICATION, | ||
269 | KC_POWER, | ||
270 | KC_KP_EQUAL, | ||
271 | KC_F13, | ||
272 | KC_F14, | ||
273 | KC_F15, | ||
274 | KC_F16, | ||
275 | KC_F17, | ||
276 | KC_F18, | ||
277 | KC_F19, | ||
278 | KC_F20, | ||
279 | KC_F21, /* 0x70 */ | ||
280 | KC_F22, | ||
281 | KC_F23, | ||
282 | KC_F24, | ||
283 | KC_EXECUTE, | ||
284 | KC_HELP, | ||
285 | KC_MENU, | ||
286 | KC_SELECT, | ||
287 | KC_STOP, | ||
288 | KC_AGAIN, | ||
289 | KC_UNDO, | ||
290 | KC_CUT, | ||
291 | KC_COPY, | ||
292 | KC_PASTE, | ||
293 | KC_FIND, | ||
294 | KC__MUTE, | ||
295 | KC__VOLUP, /* 0x80 */ | ||
296 | KC__VOLDOWN, | ||
297 | KC_LOCKING_CAPS, /* locking Caps Lock */ | ||
298 | KC_LOCKING_NUM, /* locking Num Lock */ | ||
299 | KC_LOCKING_SCROLL, /* locking Scroll Lock */ | ||
300 | KC_KP_COMMA, | ||
301 | KC_KP_EQUAL_AS400, /* equal sign on AS/400 */ | ||
302 | KC_INT1, | ||
303 | KC_INT2, | ||
304 | KC_INT3, | ||
305 | KC_INT4, | ||
306 | KC_INT5, | ||
307 | KC_INT6, | ||
308 | KC_INT7, | ||
309 | KC_INT8, | ||
310 | KC_INT9, | ||
311 | KC_LANG1, /* 0x90 */ | ||
312 | KC_LANG2, | ||
313 | KC_LANG3, | ||
314 | KC_LANG4, | ||
315 | KC_LANG5, | ||
316 | KC_LANG6, | ||
317 | KC_LANG7, | ||
318 | KC_LANG8, | ||
319 | KC_LANG9, | ||
320 | KC_ALT_ERASE, | ||
321 | KC_SYSREQ, | ||
322 | KC_CANCEL, | ||
323 | KC_CLEAR, | ||
324 | KC_PRIOR, | ||
325 | KC_RETURN, | ||
326 | KC_SEPARATOR, | ||
327 | KC_OUT, /* 0xA0 */ | ||
328 | KC_OPER, | ||
329 | KC_CLEAR_AGAIN, | ||
330 | KC_CRSEL, | ||
331 | KC_EXSEL, /* 0xA4 */ | ||
332 | |||
333 | /* NOTE: 0xA5-DF are used for internal special purpose */ | ||
334 | |||
335 | #if 0 | ||
336 | /* NOTE: Following codes(0xB0-DD) are not used. Leave them for reference. */ | ||
337 | KC_KP_00 = 0xB0, | ||
338 | KC_KP_000, | ||
339 | KC_THOUSANDS_SEPARATOR, | ||
340 | KC_DECIMAL_SEPARATOR, | ||
341 | KC_CURRENCY_UNIT, | ||
342 | KC_CURRENCY_SUB_UNIT, | ||
343 | KC_KP_LPAREN, | ||
344 | KC_KP_RPAREN, | ||
345 | KC_KP_LCBRACKET, /* { */ | ||
346 | KC_KP_RCBRACKET, /* } */ | ||
347 | KC_KP_TAB, | ||
348 | KC_KP_BSPACE, | ||
349 | KC_KP_A, | ||
350 | KC_KP_B, | ||
351 | KC_KP_C, | ||
352 | KC_KP_D, | ||
353 | KC_KP_E, /* 0xC0 */ | ||
354 | KC_KP_F, | ||
355 | KC_KP_XOR, | ||
356 | KC_KP_HAT, | ||
357 | KC_KP_PERC, | ||
358 | KC_KP_LT, | ||
359 | KC_KP_GT, | ||
360 | KC_KP_AND, | ||
361 | KC_KP_LAZYAND, | ||
362 | KC_KP_OR, | ||
363 | KC_KP_LAZYOR, | ||
364 | KC_KP_COLON, | ||
365 | KC_KP_HASH, | ||
366 | KC_KP_SPACE, | ||
367 | KC_KP_ATMARK, | ||
368 | KC_KP_EXCLAMATION, | ||
369 | KC_KP_MEM_STORE, /* 0xD0 */ | ||
370 | KC_KP_MEM_RECALL, | ||
371 | KC_KP_MEM_CLEAR, | ||
372 | KC_KP_MEM_ADD, | ||
373 | KC_KP_MEM_SUB, | ||
374 | KC_KP_MEM_MUL, | ||
375 | KC_KP_MEM_DIV, | ||
376 | KC_KP_PLUS_MINUS, | ||
377 | KC_KP_CLEAR, | ||
378 | KC_KP_CLEAR_ENTRY, | ||
379 | KC_KP_BINARY, | ||
380 | KC_KP_OCTAL, | ||
381 | KC_KP_DECIMAL, | ||
382 | KC_KP_HEXADECIMAL, /* 0xDD */ | ||
383 | #endif | ||
384 | |||
385 | /* Modifiers */ | ||
386 | KC_LCTRL = 0xE0, | ||
387 | KC_LSHIFT, | ||
388 | KC_LALT, | ||
389 | KC_LGUI, | ||
390 | KC_RCTRL, | ||
391 | KC_RSHIFT, | ||
392 | KC_RALT, | ||
393 | KC_RGUI, | ||
394 | |||
395 | /* NOTE: 0xE8-FF are used for internal special purpose */ | ||
396 | }; | ||
397 | |||
398 | /* Special keycodes */ | ||
399 | /* NOTE: 0xA5-DF and 0xE8-FF are used for internal special purpose */ | ||
400 | enum internal_special_keycodes { | ||
401 | /* System Control */ | ||
402 | KC_SYSTEM_POWER = 0xA5, | ||
403 | KC_SYSTEM_SLEEP, | ||
404 | KC_SYSTEM_WAKE, | ||
405 | |||
406 | /* Media Control */ | ||
407 | KC_AUDIO_MUTE, | ||
408 | KC_AUDIO_VOL_UP, | ||
409 | KC_AUDIO_VOL_DOWN, | ||
410 | KC_MEDIA_NEXT_TRACK, | ||
411 | KC_MEDIA_PREV_TRACK, | ||
412 | KC_MEDIA_STOP, | ||
413 | KC_MEDIA_PLAY_PAUSE, | ||
414 | KC_MEDIA_SELECT, | ||
415 | KC_MEDIA_EJECT, | ||
416 | KC_MAIL, | ||
417 | KC_CALCULATOR, | ||
418 | KC_MY_COMPUTER, | ||
419 | KC_WWW_SEARCH, | ||
420 | KC_WWW_HOME, | ||
421 | KC_WWW_BACK, | ||
422 | KC_WWW_FORWARD, | ||
423 | KC_WWW_STOP, | ||
424 | KC_WWW_REFRESH, | ||
425 | KC_WWW_FAVORITES, | ||
426 | KC_MEDIA_FAST_FORWARD, | ||
427 | KC_MEDIA_REWIND, /* 0xBC */ | ||
428 | |||
429 | /* Fn key */ | ||
430 | KC_FN0 = 0xC0, | ||
431 | KC_FN1, | ||
432 | KC_FN2, | ||
433 | KC_FN3, | ||
434 | KC_FN4, | ||
435 | KC_FN5, | ||
436 | KC_FN6, | ||
437 | KC_FN7, | ||
438 | KC_FN8, | ||
439 | KC_FN9, | ||
440 | KC_FN10, | ||
441 | KC_FN11, | ||
442 | KC_FN12, | ||
443 | KC_FN13, | ||
444 | KC_FN14, | ||
445 | KC_FN15, | ||
446 | |||
447 | KC_FN16 = 0xD0, | ||
448 | KC_FN17, | ||
449 | KC_FN18, | ||
450 | KC_FN19, | ||
451 | KC_FN20, | ||
452 | KC_FN21, | ||
453 | KC_FN22, | ||
454 | KC_FN23, | ||
455 | KC_FN24, | ||
456 | KC_FN25, | ||
457 | KC_FN26, | ||
458 | KC_FN27, | ||
459 | KC_FN28, | ||
460 | KC_FN29, | ||
461 | KC_FN30, | ||
462 | KC_FN31, /* 0xDF */ | ||
463 | |||
464 | /**************************************/ | ||
465 | /* 0xE0-E7 for Modifiers. DO NOT USE. */ | ||
466 | /**************************************/ | ||
467 | |||
468 | /* Mousekey */ | ||
469 | KC_MS_UP = 0xF0, | ||
470 | KC_MS_DOWN, | ||
471 | KC_MS_LEFT, | ||
472 | KC_MS_RIGHT, | ||
473 | KC_MS_BTN1, | ||
474 | KC_MS_BTN2, | ||
475 | KC_MS_BTN3, | ||
476 | KC_MS_BTN4, | ||
477 | KC_MS_BTN5, /* 0xF8 */ | ||
478 | /* Mousekey wheel */ | ||
479 | KC_MS_WH_UP, | ||
480 | KC_MS_WH_DOWN, | ||
481 | KC_MS_WH_LEFT, | ||
482 | KC_MS_WH_RIGHT, /* 0xFC */ | ||
483 | /* Mousekey accel */ | ||
484 | KC_MS_ACCEL0, | ||
485 | KC_MS_ACCEL1, | ||
486 | KC_MS_ACCEL2 /* 0xFF */ | ||
487 | }; | ||
488 | |||
489 | #endif /* KEYCODE_H */ | ||