]> git.donarmstrong.com Git - qmk_firmware.git/blob - usb_keycodes.h
PS/2: request to resend when error is occured.
[qmk_firmware.git] / usb_keycodes.h
1 /* 
2  * Key codes from HID Keyboard/Keypad Page
3  * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
4  *
5  * Based on Keyboard Upgrade v0.3.0 http://github.com/rhomann/kbupgrade
6  */
7 /*
8  * Keyboard Upgrade -- Firmware for homebrew computer keyboard controllers.
9  * Copyright (C) 2009  Robert Homann
10  *
11  * Based on RUMP (http://mg8.org/rump/), Copyright (C) 2008  Chris Lee
12  *
13  * Based on c64key (http://symlink.dk/projects/c64key/),
14  * Copyright (C) 2006-2007  Mikkel Holm Olsen
15  *
16  * Based on HID-Test by Christian Starkjohann, Objective Development
17  *
18  * This file is part of the Keyboard Upgrade package.
19  *
20  * This program is free software; you can redistribute it and/or modify
21  * it under the terms of the GNU General Public License as published by
22  * the Free Software Foundation; either version 2 of the License, or
23  * (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful, but
26  * WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28  * GNU General Public License for more details.
29  *
30  * You should have received a copy of the GNU General Public License
31  * along with the Keyboard Upgrade package; if not, write to the
32  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
33  * MA  02110-1301  USA
34  */
35 #ifndef USB_KEYCODES_H
36 #define USB_KEYCODES_H
37
38
39 #define IS_ERROR(code)           (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED)
40 #define IS_KEY(code)             (KB_A         <= (code) && (code) <= KB_KP_HEXADECIMAL)
41 #define IS_MOD(code)             (KB_LCTRL     <= (code) && (code) <= KB_RGUI)
42 #define IS_FN(code)              (KB_FN0       <= (code) && (code) <= KB_FN7)
43 #define IS_MOUSEKEY(code)        (KB_MS_UP     <= (code) && (code) <= KB_MS_WH_RIGHT)
44 #define IS_MOUSEKEY_MOVE(code)   (KB_MS_UP     <= (code) && (code) <= KB_MS_RIGHT)
45 #define IS_MOUSEKEY_BUTTON(code) (KB_MS_BTN1   <= (code) && (code) <= KB_MS_BTN5)
46 #define IS_MOUSEKEY_WHEEL(code)  (KB_MS_WH_UP  <= (code) && (code) <= KB_MS_WH_RIGHT)
47
48 #define MOD_BIT(code) (1<<((code) & 0x07))
49 #define FN_BIT(code)  (1<<((code) - KB_FN0))
50
51
52 //
53 // Short names
54 //
55 #define KB_LCTL KB_LCTRL
56 #define KB_RCTL KB_RCTRL
57 #define KB_LSFT KB_LSHIFT
58 #define KB_RSFT KB_RSHIFT
59 #define KB_ESC  KB_ESCAPE
60 #define KB_BSPC KB_BSPACE
61 #define KB_ENT  KB_ENTER
62 #define KB_DEL  KB_DELETE
63 #define KB_INS  KB_INSERT
64 #define KB_CAPS KB_CAPSLOCK
65 #define KB_RGHT KB_RIGHT
66 #define KB_PGDN KB_PGDOWN
67 #define KB_PSCR KB_PSCREEN
68 #define KB_SLCK KB_SCKLOCK
69 #define KB_BRK  KB_BREAK
70 #define KB_NLCK KB_NUMLOCK
71 #define KB_SPC  KB_SPACE
72 #define KB_MINS KB_MINUS
73 #define KB_EQL  KB_EQUAL
74 #define KB_GRV  KB_GRAVE
75 #define KB_RBRC KB_RBRACKET
76 #define KB_LBRC KB_LBRACKET
77 #define KB_COMM KB_COMMA
78 #define KB_BSLS KB_BSLASH
79 #define KB_SLSH KB_SLASH
80 #define KB_SCLN KB_SCOLON
81 #define KB_QUOT KB_QUOTE
82 #define KB_PWR  KB_POWER
83 #define KB_VOLU KB_VOLUP
84 #define KB_VOLD KB_VOLDOWN
85 #define KB_APP  KB_APPLICATION
86 #define KB_NUHS KB_NONUS_HASH
87 #define KB_NUBS KB_NONUS_BSLASH
88 // for Japanese
89 #define KB_RO   KB_INT1
90 #define KB_KANA KB_INT2
91 #define KB_JYEN KB_INT3
92 #define KB_HENK KB_INT4
93 #define KB_MHEN KB_INT5
94 #define KB_ZEHA KB_GRAVE
95 // Keypad
96 #define KB_P1   KB_KP_1
97 #define KB_P2   KB_KP_2
98 #define KB_P3   KB_KP_3
99 #define KB_P4   KB_KP_4
100 #define KB_P5   KB_KP_5
101 #define KB_P6   KB_KP_6
102 #define KB_P7   KB_KP_7
103 #define KB_P8   KB_KP_8
104 #define KB_P9   KB_KP_9
105 #define KB_P0   KB_KP_0
106 #define KB_PDOT KB_KP_DOT
107 #define KB_PSLS KB_KP_SLASH
108 #define KB_PAST KB_KP_ASTERISK
109 #define KB_PMNS KB_KP_MINUS
110 #define KB_PPLS KB_KP_PLUS
111 #define KB_PEQL KB_KP_EQUAL
112 #define KB_PENT KB_KP_ENTER
113 // Mousekey
114 #define KB_MS_U KB_MS_UP
115 #define KB_MS_D KB_MS_DOWN
116 #define KB_MS_L KB_MS_LEFT
117 #define KB_MS_R KB_MS_RIGHT
118 #define KB_BTN1 KB_MS_BTN1
119 #define KB_BTN2 KB_MS_BTN2
120 #define KB_BTN3 KB_MS_BTN3
121 #define KB_BTN4 KB_MS_BTN4
122 #define KB_BTN5 KB_MS_BTN5
123 #define KB_WH_U KB_MS_WH_UP
124 #define KB_WH_D KB_MS_WH_DOWN
125 #define KB_WH_L KB_MS_WH_LEFT
126 #define KB_WH_R KB_MS_WH_RIGHT
127
128
129 enum keycodes {
130     KB_NO = 0,
131     KB_ROLL_OVER,
132     KB_POST_FAIL,
133     KB_UNDEFINED,
134     KB_A,
135     KB_B,
136     KB_C,
137     KB_D,
138     KB_E,
139     KB_F,
140     KB_G,
141     KB_H,
142     KB_I,
143     KB_J,
144     KB_K,
145     KB_L,
146     KB_M,       /* 0x10 */
147     KB_N,
148     KB_O,
149     KB_P,
150     KB_Q,
151     KB_R,
152     KB_S,
153     KB_T,
154     KB_U,
155     KB_V,
156     KB_W,
157     KB_X,
158     KB_Y,
159     KB_Z,
160     KB_1,
161     KB_2,
162     KB_3,       /* 0x20 */
163     KB_4,
164     KB_5,
165     KB_6,
166     KB_7,
167     KB_8,
168     KB_9,
169     KB_0,
170     KB_ENTER,
171     KB_ESCAPE,
172     KB_BSPACE,
173     KB_TAB,
174     KB_SPACE,
175     KB_MINUS,
176     KB_EQUAL,
177     KB_LBRACKET,          /* [ */
178     KB_RBRACKET,          /* ] */
179     KB_BSLASH,            /* \ (and |) */
180     KB_NONUS_HASH,        /* Non-US # and ~ */
181     KB_SCOLON,            /* ; (and :) */
182     KB_QUOTE,             /* ' and " */
183     KB_GRAVE,             /* Grave accent and tilde */
184     KB_COMMA,             /* , and < */
185     KB_DOT,               /* . and > */
186     KB_SLASH,             /* / and ? */
187     KB_CAPSLOCK,
188     KB_F1,
189     KB_F2,
190     KB_F3,
191     KB_F4,
192     KB_F5,
193     KB_F6,
194     KB_F7,      /* 0x40 */
195     KB_F8,
196     KB_F9,
197     KB_F10,
198     KB_F11,
199     KB_F12,
200     KB_PSCREEN,
201     KB_SCKLOCK,
202     KB_BREAK,
203     KB_INSERT,
204     KB_HOME,
205     KB_PGUP,
206     KB_DELETE,
207     KB_END,
208     KB_PGDOWN,
209     KB_RIGHT,
210     KB_LEFT,    /* 0x50 */
211     KB_DOWN,
212     KB_UP,
213     KB_NUMLOCK,
214     KB_KP_SLASH,
215     KB_KP_ASTERISK,
216     KB_KP_MINUS,
217     KB_KP_PLUS,
218     KB_KP_ENTER,
219     KB_KP_1,
220     KB_KP_2,
221     KB_KP_3,
222     KB_KP_4,
223     KB_KP_5,
224     KB_KP_6,
225     KB_KP_7,
226     KB_KP_8,       /* 0x60 */
227     KB_KP_9,
228     KB_KP_0,
229     KB_KP_DOT,
230     KB_NONUS_BSLASH,      /* Non-US \ and | */
231     KB_APPLICATION,
232     KB_POWER,
233     KB_KP_EQUAL,
234     KB_F13,
235     KB_F14,
236     KB_F15,
237     KB_F16,
238     KB_F17,
239     KB_F18,
240     KB_F19,
241     KB_F20,
242     KB_F21,     /* 0x70 */
243     KB_F22,
244     KB_F23,
245     KB_F24,
246     KB_EXECUTE,
247     KB_HELP,
248     KB_MENU,
249     KB_SELECT,
250     KB_STOP,
251     KB_AGAIN,
252     KB_UNDO,
253     KB_CUT,
254     KB_COPY,
255     KB_PASTE,
256     KB_FIND,
257     KB_MUTE,
258     KB_VOLUP,   /* 0x80 */
259     KB_VOLDOWN,
260     KB_LOCKING_CAPS,      /* locking Caps Lock */
261     KB_LOCKING_NUM,       /* locking Num Lock */
262     KB_LOCKING_SCROLL,    /* locking Scroll Lock */
263     KB_KP_COMMA,
264     KB_KP_EQUAL_AS400,       /* equal sign on AS/400 */
265     KB_INT1,
266     KB_INT2,
267     KB_INT3,
268     KB_INT4,
269     KB_INT5,
270     KB_INT6,
271     KB_INT7,
272     KB_INT8,
273     KB_INT9,
274     KB_LANG1,    /* 0x90 */
275     KB_LANG2,
276     KB_LANG3,
277     KB_LANG4,
278     KB_LANG5,
279     KB_LANG6,
280     KB_LANG7,
281     KB_LANG8,
282     KB_LANG9,
283     KB_ALT_ERASE,
284     KB_SYSREQ,
285     KB_CANCEL,
286     KB_CLEAR,
287     KB_PRIOR,
288     KB_RETURN,
289     KB_SEPARATOR,
290     KB_OUT,
291     KB_OPER,
292     KB_CLEAR_AGAIN,
293     KB_CRSEL,
294     KB_EXSEL,
295
296     KB_KP_00 = 0xB0,
297     KB_KP_000,
298     KB_THOUSANDS_SEPARATOR,
299     KB_DECIMAL_SEPARATOR,
300     KB_CURRENCY_UNIT,
301     KB_CURRENCY_SUB_UNIT,
302     KB_KP_LPAREN,
303     KB_KP_RPAREN,
304     KB_KP_LCBRACKET,         /* { */
305     KB_KP_RCBRACKET,         /* } */
306     KB_KP_TAB,
307     KB_KP_BSPACE,
308     KB_KP_A,
309     KB_KP_B,
310     KB_KP_C,
311     KB_KP_D,
312     KB_KP_E,
313     KB_KP_F,
314     KB_KP_XOR,
315     KB_KP_HAT,
316     KB_KP_PERC,
317     KB_KP_LT,
318     KB_KP_GT,
319     KB_KP_AND,
320     KB_KP_LAZYAND,
321     KB_KP_OR,
322     KB_KP_LAZYOR,
323     KB_KP_COLON,
324     KB_KP_HASH,
325     KB_KP_SPACE,
326     KB_KP_ATMARK,
327     KB_KP_EXCLAMATION,
328     KB_KP_MEM_STORE,
329     KB_KP_MEM_RECALL,
330     KB_KP_MEM_CLEAR,
331     KB_KP_MEM_ADD,
332     KB_KP_MEM_SUB,
333     KB_KP_MEM_MUL,
334     KB_KP_MEM_DIV,
335     KB_KP_PLUS_MINUS,
336     KB_KP_CLEAR,
337     KB_KP_CLEAR_ENTRY,
338     KB_KP_BINARY,
339     KB_KP_OCTAL,
340     KB_KP_DECIMAL,
341     KB_KP_HEXADECIMAL,
342
343     /* modifiers */
344     KB_LCTRL = 0xE0,    /* 0x01 */
345     KB_LSHIFT,          /* 0x02 */
346     KB_LALT,            /* 0x04 */
347     KB_LGUI,            /* 0x08 */
348     KB_RCTRL,           /* 0x10 */
349     KB_RSHIFT,          /* 0x20 */
350     KB_RALT,            /* 0x40 */
351     KB_RGUI,            /* 0x80 */
352
353     /* extensions for internal use */
354     KB_FN0 = 0xE8,
355     KB_FN1,
356     KB_FN2,
357     KB_FN3,
358     KB_FN4,
359     KB_FN5,
360     KB_FN6,
361     KB_FN7,
362     // Mousekey move
363     KB_MS_UP = 0xF0,
364     KB_MS_DOWN,
365     KB_MS_LEFT,
366     KB_MS_RIGHT,
367     // Mousekey buttons
368     KB_MS_BTN1 = 0xF4,
369     KB_MS_BTN2,
370     KB_MS_BTN3,
371     KB_MS_BTN4,
372     KB_MS_BTN5,
373     // Mousekey wheel
374     KB_MS_WH_UP,
375     KB_MS_WH_DOWN,
376     KB_MS_WH_LEFT,
377     KB_MS_WH_RIGHT,
378 };
379
380 #endif /* USB_KEYCODES_H */