]> git.gir.st - tmk_keyboard.git/blob - usb_keycodes.h
add audio controls from consumer page(HID)
[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 */
Imprint / Impressum