2 * Key codes from HID Keyboard/Keypad Page
3 * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
5 * Based on Keyboard Upgrade v0.3.0 http://github.com/rhomann/kbupgrade
8 * Keyboard Upgrade -- Firmware for homebrew computer keyboard controllers.
9 * Copyright (C) 2009 Robert Homann
11 * Based on RUMP (http://mg8.org/rump/), Copyright (C) 2008 Chris Lee
13 * Based on c64key (http://symlink.dk/projects/c64key/),
14 * Copyright (C) 2006-2007 Mikkel Holm Olsen
16 * Based on HID-Test by Christian Starkjohann, Objective Development
18 * This file is part of the Keyboard Upgrade package.
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.
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.
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,
36 #ifndef USB_KEYCODES_H
37 #define USB_KEYCODES_H
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)
48 #define MOD_BIT(code) (1<<((code) & 0x07))
49 #define FN_BIT(code) (1<<((code) - FN_0))
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_PWR KB_POWER
79 #define KP_SLSH KP_SLASH
80 #define KP_ASTR KP_ASTERISK
81 #define KP_MINS KP_MINUS
82 #define MS_RGHT MS_RIGHT
83 #define MS_WH_U MS_WH_UP
84 #define MS_WH_D MS_WH_DOWN
85 #define MS_WH_L MS_WH_LEFT
86 #define MS_WH_R MS_WH_RIGHT
139 KB_BSLASH, /* \ (and |) */
140 KB_NONUS_HASH, /* Non-US # and ~ */
141 KB_SCOLON, /* ; (and :) */
142 KB_QUOTE, /* ' and " */
143 KB_GRAVE, /* Grave accent and tilde */
144 KB_COMMA, /* , and < */
145 KB_DOT, /* . and > */
146 KB_SLASH, /* / and ? */
190 KB_NONUS_BSLASH, /* Non-US \ and | */
220 KB_LOCKING_CAPS, /* locking Caps Lock */
221 KB_LOCKING_NUM, /* locking Num Lock */
222 KB_LOCKING_SCROLL, /* locking Scroll Lock */
224 KP_EQUAL_AS400, /* equal sign on AS/400 */
258 KB_THOUSANDS_SEPARATOR,
259 KB_DECIMAL_SEPARATOR,
264 KP_LCBRACKET, /* { */
265 KP_RCBRACKET, /* } */
304 KB_LCTRL = 0xE0, /* 0x01 */
305 KB_LSHIFT, /* 0x02 */
309 KB_RSHIFT, /* 0x20 */
313 /* extensions for internal use */
337 #endif /* USB_KEYCODES_H */