]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - usb_keycodes.h
add error handling to ps2_mouse
[max/tmk_keyboard.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
36 #ifndef USB_KEYCODES_H
37 #define USB_KEYCODES_H
38
39 #define IS_ERROR(code) (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED)
40 #define IS_KEY(code) (KB_A <= (code) && (code) <= KP_HEXADECIMAL)
41 #define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI)
42 #define IS_FN(code) (FN_0 <= (code) && (code) <= FN_7)
43 #define IS_MOUSE(code) (MS_UP <= (code) && (code) <= MS_WH_RIGHT)
44 #define IS_MOUSE_MOVE(code) (MS_UP <= (code) && (code) <= MS_RIGHT)
45 #define IS_MOUSE_BUTTON(code) (MS_BTN1 <= (code) && (code) <= MS_BTN5)
46 #define IS_MOUSE_WHEEL(code) (MS_WH_UP <= (code) && (code) <= MS_WH_RIGHT)
47
48 #define MOD_BIT(code) (1<<((code) & 0x07))
49 #define FN_BIT(code) (1<<((code) - FN_0))
50
51
52 // short names
53 #define KB_LCTL KB_LCTRL
54 #define KB_RCTL KB_RCTRL
55 #define KB_LSFT KB_LSHIFT
56 #define KB_RSFT KB_RSHIFT
57 #define KB_ESC  KB_ESCAPE
58 #define KB_BSPC KB_BSPACE
59 #define KB_ENT  KB_ENTER
60 #define KB_DEL  KB_DELETE
61 #define KB_INS  KB_INSERT
62 #define KB_CAPS KB_CAPSLOCK
63 #define KB_RGHT KB_RIGHT
64 #define KB_PGDN KB_PGDOWN
65 #define KB_PSCR KB_PSCREEN
66 #define KB_SLCK KB_SCKLOCK
67 #define KB_BRK  KB_BREAK
68 #define KB_SPC  KB_SPACE
69 #define KB_MINS KB_MINUS
70 #define KB_EQL  KB_EQUAL
71 #define KB_GRV  KB_GRAVE
72 #define KB_RBRC KB_RBRACKET
73 #define KB_LBRC KB_LBRACKET
74 #define KB_COMM KB_COMMA
75 #define KB_BSLS KB_BSLASH
76 #define KB_SLSH KB_SLASH
77 #define KB_SCLN KB_SCOLON
78 #define KB_QUOT KB_QUOTE
79 #define KB_PWR  KB_POWER
80 #define KB_VOLU KB_VOLUP
81 #define KB_VOLD KB_VOLDOWN
82 #define KP_SLSH KP_SLASH
83 #define KP_ASTR KP_ASTERISK
84 #define KP_MINS KP_MINUS
85 #define MS_RGHT MS_RIGHT
86 #define MS_WH_U MS_WH_UP
87 #define MS_WH_D MS_WH_DOWN
88 #define MS_WH_L MS_WH_LEFT
89 #define MS_WH_R MS_WH_RIGHT
90
91
92 enum keycodes {
93     KB_NO = 0,
94     KB_ROLL_OVER,
95     KB_POST_FAIL,
96     KB_UNDEFINED,
97     KB_A,
98     KB_B,
99     KB_C,
100     KB_D,
101     KB_E,
102     KB_F,
103     KB_G,
104     KB_H,
105     KB_I,
106     KB_J,
107     KB_K,
108     KB_L,
109     KB_M,       /* 0x10 */
110     KB_N,
111     KB_O,
112     KB_P,
113     KB_Q,
114     KB_R,
115     KB_S,
116     KB_T,
117     KB_U,
118     KB_V,
119     KB_W,
120     KB_X,
121     KB_Y,
122     KB_Z,
123     KB_1,
124     KB_2,
125     KB_3,       /* 0x20 */
126     KB_4,
127     KB_5,
128     KB_6,
129     KB_7,
130     KB_8,
131     KB_9,
132     KB_0,
133     KB_ENTER,
134     KB_ESCAPE,
135     KB_BSPACE,
136     KB_TAB,
137     KB_SPACE,
138     KB_MINUS,
139     KB_EQUAL,
140     KB_LBRACKET,          /* [ */
141     KB_RBRACKET,          /* ] */
142     KB_BSLASH,            /* \ (and |) */
143     KB_NONUS_HASH,        /* Non-US # and ~ */
144     KB_SCOLON,            /* ; (and :) */
145     KB_QUOTE,             /* ' and " */
146     KB_GRAVE,             /* Grave accent and tilde */
147     KB_COMMA,             /* , and < */
148     KB_DOT,               /* . and > */
149     KB_SLASH,             /* / and ? */
150     KB_CAPSLOCK,
151     KB_F1,
152     KB_F2,
153     KB_F3,
154     KB_F4,
155     KB_F5,
156     KB_F6,
157     KB_F7,      /* 0x40 */
158     KB_F8,
159     KB_F9,
160     KB_F10,
161     KB_F11,
162     KB_F12,
163     KB_PSCREEN,
164     KB_SCKLOCK,
165     KB_BREAK,
166     KB_INSERT,
167     KB_HOME,
168     KB_PGUP,
169     KB_DELETE,
170     KB_END,
171     KB_PGDOWN,
172     KB_RIGHT,
173     KB_LEFT,    /* 0x50 */
174     KB_DOWN,
175     KB_UP,
176     KB_NUMLOCK,
177     KP_SLASH,
178     KP_ASTERISK,
179     KP_MINUS,
180     KP_PLUS,
181     KP_ENTER,
182     KP_1,
183     KP_2,
184     KP_3,
185     KP_4,
186     KP_5,
187     KP_6,
188     KP_7,
189     KP_8,       /* 0x60 */
190     KP_9,
191     KP_0,
192     KP_DOT,
193     KB_NONUS_BSLASH,      /* Non-US \ and | */
194     KB_APPLICATION,
195     KB_POWER,
196     KP_EQUAL,
197     KB_F13,
198     KB_F14,
199     KB_F15,
200     KB_F16,
201     KB_F17,
202     KB_F18,
203     KB_F19,
204     KB_F20,
205     KB_F21,     /* 0x70 */
206     KB_F22,
207     KB_F23,
208     KB_F24,
209     KB_EXECUTE,
210     KB_HELP,
211     KB_MENU,
212     KB_SELECT,
213     KB_STOP,
214     KB_AGAIN,
215     KB_UNDO,
216     KB_CUT,
217     KB_COPY,
218     KB_PASTE,
219     KB_FIND,
220     KB_MUTE,
221     KB_VOLUP,   /* 0x80 */
222     KB_VOLDOWN,
223     KB_LOCKING_CAPS,      /* locking Caps Lock */
224     KB_LOCKING_NUM,       /* locking Num Lock */
225     KB_LOCKING_SCROLL,    /* locking Scroll Lock */
226     KP_COMMA,
227     KP_EQUAL_AS400,       /* equal sign on AS/400 */
228     KB_INT1,
229     KB_INT2,
230     KB_INT3,
231     KB_INT4,
232     KB_INT5,
233     KB_INT6,
234     KB_INT7,
235     KB_INT8,
236     KB_INT9,
237     KB_LANG1,    /* 0x90 */
238     KB_LANG2,
239     KB_LANG3,
240     KB_LANG4,
241     KB_LANG5,
242     KB_LANG6,
243     KB_LANG7,
244     KB_LANG8,
245     KB_LANG9,
246     KB_ALT_ERASE,
247     KB_SYSREQ,
248     KB_CANCEL,
249     KB_CLEAR,
250     KB_PRIOR,
251     KB_RETURN,
252     KB_SEPARATOR,
253     KB_OUT,
254     KB_OPER,
255     KB_CLEAR_AGAIN,
256     KB_CRSEL,
257     KB_EXSEL,
258
259     KP_00 = 0xB0,
260     KP_000,
261     KB_THOUSANDS_SEPARATOR,
262     KB_DECIMAL_SEPARATOR,
263     CURRENCY_UNIT,
264     CURRENCY_SUB_UNIT,
265     KP_LPAREN,
266     KP_RPAREN,
267     KP_LCBRACKET,         /* { */
268     KP_RCBRACKET,         /* } */
269     KP_TAB,
270     KP_BSPACE,
271     KP_A,
272     KP_B,
273     KP_C,
274     KP_D,
275     KP_E,
276     KP_F,
277     KP_XOR,
278     KP_HAT,
279     KP_PERC,
280     KP_LT,
281     KP_GT,
282     KP_AND,
283     KP_LAZYAND,
284     KP_OR,
285     KP_LAZYOR,
286     KP_COLON,
287     KP_HASH,
288     KP_SPACE,
289     KP_ATMARK,
290     KP_EXCLAMATION,
291     KP_MEM_STORE,
292     KP_MEM_RECALL,
293     KP_MEM_CLEAR,
294     KP_MEM_ADD,
295     KP_MEM_SUB,
296     KP_MEM_MUL,
297     KP_MEM_DIV,
298     KP_PLUS_MINUS,
299     KP_CLEAR,
300     KP_CLEAR_ENTRY,
301     KP_BINARY,
302     KP_OCTAL,
303     KP_DECIMAL,
304     KP_HEXADECIMAL,
305
306     /* modifiers */
307     KB_LCTRL = 0xE0,    /* 0x01 */
308     KB_LSHIFT,          /* 0x02 */
309     KB_LALT,            /* 0x04 */
310     KB_LGUI,            /* 0x08 */
311     KB_RCTRL,           /* 0x10 */
312     KB_RSHIFT,          /* 0x20 */
313     KB_RALT,            /* 0x40 */
314     KB_RGUI,            /* 0x80 */
315
316     /* extensions for internal use */
317     FN_0 = 0xE8,
318     FN_1,
319     FN_2,
320     FN_3,
321     FN_4,
322     FN_5,
323     FN_6,
324     FN_7,
325     MS_UP = 0xF0,
326     MS_DOWN,
327     MS_LEFT,
328     MS_RIGHT,
329     MS_BTN1 = 0xF4,
330     MS_BTN2,
331     MS_BTN3,
332     MS_BTN4,
333     MS_BTN5,
334     MS_WH_UP,
335     MS_WH_DOWN,
336     MS_WH_LEFT,
337     MS_WH_RIGHT,
338 };
339
340 #endif /* USB_KEYCODES_H */