/* * Key codes from HID Keyboard/Keypad Page * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf * * Based on Keyboard Upgrade v0.3.0 http://github.com/rhomann/kbupgrade */ /* * Keyboard Upgrade -- Firmware for homebrew computer keyboard controllers. * Copyright (C) 2009 Robert Homann * * Based on RUMP (http://mg8.org/rump/), Copyright (C) 2008 Chris Lee * * Based on c64key (http://symlink.dk/projects/c64key/), * Copyright (C) 2006-2007 Mikkel Holm Olsen * * Based on HID-Test by Christian Starkjohann, Objective Development * * This file is part of the Keyboard Upgrade package. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the Keyboard Upgrade package; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ #ifndef USB_KEYCODES_H #define USB_KEYCODES_H #define IS_ERROR(code) (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED) #define IS_KEY(code) (KB_A <= (code) && (code) <= KP_HEXADECIMAL) #define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI) #define IS_FN(code) (FN_0 <= (code) && (code) <= FN_7) #define IS_MOUSEKEY(code) (MS_UP <= (code) && (code) <= MS_WH_RIGHT) #define IS_MOUSEKEY_MOVE(code) (MS_UP <= (code) && (code) <= MS_RIGHT) #define IS_MOUSEKEY_BUTTON(code) (MS_BTN1 <= (code) && (code) <= MS_BTN5) #define IS_MOUSEKEY_WHEEL(code) (MS_WH_UP <= (code) && (code) <= MS_WH_RIGHT) #define MOD_BIT(code) (1<<((code) & 0x07)) #define FN_BIT(code) (1<<((code) - FN_0)) // short names #define KB_LCTL KB_LCTRL #define KB_RCTL KB_RCTRL #define KB_LSFT KB_LSHIFT #define KB_RSFT KB_RSHIFT #define KB_ESC KB_ESCAPE #define KB_BSPC KB_BSPACE #define KB_ENT KB_ENTER #define KB_DEL KB_DELETE #define KB_INS KB_INSERT #define KB_CAPS KB_CAPSLOCK #define KB_RGHT KB_RIGHT #define KB_PGDN KB_PGDOWN #define KB_PSCR KB_PSCREEN #define KB_SLCK KB_SCKLOCK #define KB_BRK KB_BREAK #define KB_SPC KB_SPACE #define KB_MINS KB_MINUS #define KB_EQL KB_EQUAL #define KB_GRV KB_GRAVE #define KB_RBRC KB_RBRACKET #define KB_LBRC KB_LBRACKET #define KB_COMM KB_COMMA #define KB_BSLS KB_BSLASH #define KB_SLSH KB_SLASH #define KB_SCLN KB_SCOLON #define KB_QUOT KB_QUOTE #define KB_PWR KB_POWER #define KB_VOLU KB_VOLUP #define KB_VOLD KB_VOLDOWN #define KP_SLSH KP_SLASH #define KP_ASTR KP_ASTERISK #define KP_MINS KP_MINUS #define MS_RGHT MS_RIGHT #define MS_WH_U MS_WH_UP #define MS_WH_D MS_WH_DOWN #define MS_WH_L MS_WH_LEFT #define MS_WH_R MS_WH_RIGHT enum keycodes { KB_NO = 0, KB_ROLL_OVER, KB_POST_FAIL, KB_UNDEFINED, KB_A, KB_B, KB_C, KB_D, KB_E, KB_F, KB_G, KB_H, KB_I, KB_J, KB_K, KB_L, KB_M, /* 0x10 */ KB_N, KB_O, KB_P, KB_Q, KB_R, KB_S, KB_T, KB_U, KB_V, KB_W, KB_X, KB_Y, KB_Z, KB_1, KB_2, KB_3, /* 0x20 */ KB_4, KB_5, KB_6, KB_7, KB_8, KB_9, KB_0, KB_ENTER, KB_ESCAPE, KB_BSPACE, KB_TAB, KB_SPACE, KB_MINUS, KB_EQUAL, KB_LBRACKET, /* [ */ KB_RBRACKET, /* ] */ KB_BSLASH, /* \ (and |) */ KB_NONUS_HASH, /* Non-US # and ~ */ KB_SCOLON, /* ; (and :) */ KB_QUOTE, /* ' and " */ KB_GRAVE, /* Grave accent and tilde */ KB_COMMA, /* , and < */ KB_DOT, /* . and > */ KB_SLASH, /* / and ? */ KB_CAPSLOCK, KB_F1, KB_F2, KB_F3, KB_F4, KB_F5, KB_F6, KB_F7, /* 0x40 */ KB_F8, KB_F9, KB_F10, KB_F11, KB_F12, KB_PSCREEN, KB_SCKLOCK, KB_BREAK, KB_INSERT, KB_HOME, KB_PGUP, KB_DELETE, KB_END, KB_PGDOWN, KB_RIGHT, KB_LEFT, /* 0x50 */ KB_DOWN, KB_UP, KB_NUMLOCK, KP_SLASH, KP_ASTERISK, KP_MINUS, KP_PLUS, KP_ENTER, KP_1, KP_2, KP_3, KP_4, KP_5, KP_6, KP_7, KP_8, /* 0x60 */ KP_9, KP_0, KP_DOT, KB_NONUS_BSLASH, /* Non-US \ and | */ KB_APPLICATION, KB_POWER, KP_EQUAL, KB_F13, KB_F14, KB_F15, KB_F16, KB_F17, KB_F18, KB_F19, KB_F20, KB_F21, /* 0x70 */ KB_F22, KB_F23, KB_F24, KB_EXECUTE, KB_HELP, KB_MENU, KB_SELECT, KB_STOP, KB_AGAIN, KB_UNDO, KB_CUT, KB_COPY, KB_PASTE, KB_FIND, KB_MUTE, KB_VOLUP, /* 0x80 */ KB_VOLDOWN, KB_LOCKING_CAPS, /* locking Caps Lock */ KB_LOCKING_NUM, /* locking Num Lock */ KB_LOCKING_SCROLL, /* locking Scroll Lock */ KP_COMMA, KP_EQUAL_AS400, /* equal sign on AS/400 */ KB_INT1, KB_INT2, KB_INT3, KB_INT4, KB_INT5, KB_INT6, KB_INT7, KB_INT8, KB_INT9, KB_LANG1, /* 0x90 */ KB_LANG2, KB_LANG3, KB_LANG4, KB_LANG5, KB_LANG6, KB_LANG7, KB_LANG8, KB_LANG9, KB_ALT_ERASE, KB_SYSREQ, KB_CANCEL, KB_CLEAR, KB_PRIOR, KB_RETURN, KB_SEPARATOR, KB_OUT, KB_OPER, KB_CLEAR_AGAIN, KB_CRSEL, KB_EXSEL, KP_00 = 0xB0, KP_000, KB_THOUSANDS_SEPARATOR, KB_DECIMAL_SEPARATOR, CURRENCY_UNIT, CURRENCY_SUB_UNIT, KP_LPAREN, KP_RPAREN, KP_LCBRACKET, /* { */ KP_RCBRACKET, /* } */ KP_TAB, KP_BSPACE, KP_A, KP_B, KP_C, KP_D, KP_E, KP_F, KP_XOR, KP_HAT, KP_PERC, KP_LT, KP_GT, KP_AND, KP_LAZYAND, KP_OR, KP_LAZYOR, KP_COLON, KP_HASH, KP_SPACE, KP_ATMARK, KP_EXCLAMATION, KP_MEM_STORE, KP_MEM_RECALL, KP_MEM_CLEAR, KP_MEM_ADD, KP_MEM_SUB, KP_MEM_MUL, KP_MEM_DIV, KP_PLUS_MINUS, KP_CLEAR, KP_CLEAR_ENTRY, KP_BINARY, KP_OCTAL, KP_DECIMAL, KP_HEXADECIMAL, /* modifiers */ KB_LCTRL = 0xE0, /* 0x01 */ KB_LSHIFT, /* 0x02 */ KB_LALT, /* 0x04 */ KB_LGUI, /* 0x08 */ KB_RCTRL, /* 0x10 */ KB_RSHIFT, /* 0x20 */ KB_RALT, /* 0x40 */ KB_RGUI, /* 0x80 */ /* extensions for internal use */ FN_0 = 0xE8, FN_1, FN_2, FN_3, FN_4, FN_5, FN_6, FN_7, MS_UP = 0xF0, MS_DOWN, MS_LEFT, MS_RIGHT, MS_BTN1 = 0xF4, MS_BTN2, MS_BTN3, MS_BTN4, MS_BTN5, MS_WH_UP, MS_WH_DOWN, MS_WH_LEFT, MS_WH_RIGHT, }; #endif /* USB_KEYCODES_H */