keyboard.h (6727B)
1 #pragma once 2 3 /* 4 * Keycodes based on HID Keyboard/Keypad Usage Page (0x07) plus media keys 5 * from Generic Desktop Page (0x01) and Consumer Page (0x0C) 6 * 7 * See https://web.archive.org/web/20060218214400/http://www.usb.org/developers/devclass_docs/Hut1_12.pdf 8 * or http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (older) 9 */ 10 11 #define IS_ANY_KC(code) (KC_A <= (code) && (code) <= 0xFF) 12 #define IS_ERROR_KC(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED) 13 #define IS_KEY_KC(code) (KC_A <= (code) && (code) <= KC_EXSEL) 14 #define IS_MOD_KC(code) (KC_LEFT_CTRL <= (code) && (code) <= KC_RIGHT_GUI) 15 16 #define MOD_INDEX(code) ((code) & 0b111) 17 #define MOD_BIT(code) (1 << MOD_INDEX(code)) 18 19 /* Transparent */ 20 #define KC_TRANSPARENT 0x01 21 #define KC_TRNS KC_TRANSPARENT 22 23 /* Punctuation */ 24 #define KC_ENT KC_ENTER 25 #define KC_ESC KC_ESCAPE 26 #define KC_BSPC KC_BACKSPACE 27 #define KC_SPC KC_SPACE 28 #define KC_MINS KC_MINUS 29 #define KC_EQL KC_EQUAL 30 #define KC_LBRC KC_LEFT_BRACKET 31 #define KC_RBRC KC_RIGHT_BRACKET 32 #define KC_BSLS KC_BACKSLASH 33 #define KC_NUHS KC_NONUS_HASH 34 #define KC_SCLN KC_SEMICOLON 35 #define KC_QUOT KC_QUOTE 36 #define KC_GRV KC_GRAVE 37 #define KC_COMM KC_COMMA 38 #define KC_SLSH KC_SLASH 39 #define KC_NUBS KC_NONUS_BACKSLASH 40 41 /* Lock Keys */ 42 #define KC_CAPS KC_CAPS_LOCK 43 #define KC_SCRL KC_SCROLL_LOCK 44 #define KC_NUM KC_NUM_LOCK 45 #define KC_LCAP KC_LOCKING_CAPS_LOCK 46 #define KC_LNUM KC_LOCKING_NUM_LOCK 47 #define KC_LSCR KC_LOCKING_SCROLL_LOCK 48 49 /* Commands */ 50 #define KC_PSCR KC_PRINT_SCREEN 51 #define KC_PAUS KC_PAUSE 52 #define KC_BRK KC_PAUSE 53 #define KC_INS KC_INSERT 54 #define KC_PGUP KC_PAGE_UP 55 #define KC_DEL KC_DELETE 56 #define KC_PGDN KC_PAGE_DOWN 57 #define KC_RGHT KC_RIGHT 58 #define KC_APP KC_APPLICATION 59 #define KC_EXEC KC_EXECUTE 60 #define KC_SLCT KC_SELECT 61 #define KC_AGIN KC_AGAIN 62 #define KC_PSTE KC_PASTE 63 #define KC_ERAS KC_ALTERNATE_ERASE 64 #define KC_SYRQ KC_SYSTEM_REQUEST 65 #define KC_CNCL KC_CANCEL 66 #define KC_CLR KC_CLEAR 67 #define KC_PRIR KC_PRIOR 68 #define KC_RETN KC_RETURN 69 #define KC_SEPR KC_SEPARATOR 70 #define KC_CLAG KC_CLEAR_AGAIN 71 #define KC_CRSL KC_CRSEL 72 #define KC_EXSL KC_EXSEL 73 74 /* Keypad */ 75 #define KC_PSLS KC_KP_SLASH 76 #define KC_PAST KC_KP_ASTERISK 77 #define KC_PMNS KC_KP_MINUS 78 #define KC_PPLS KC_KP_PLUS 79 #define KC_PENT KC_KP_ENTER 80 #define KC_P1 KC_KP_1 81 #define KC_P2 KC_KP_2 82 #define KC_P3 KC_KP_3 83 #define KC_P4 KC_KP_4 84 #define KC_P5 KC_KP_5 85 #define KC_P6 KC_KP_6 86 #define KC_P7 KC_KP_7 87 #define KC_P8 KC_KP_8 88 #define KC_P9 KC_KP_9 89 #define KC_P0 KC_KP_0 90 #define KC_PDOT KC_KP_DOT 91 #define KC_PEQL KC_KP_EQUAL 92 #define KC_PCMM KC_KP_COMMA 93 94 /* Language Specific */ 95 #define KC_INT1 KC_INTERNATIONAL_1 96 #define KC_INT2 KC_INTERNATIONAL_2 97 #define KC_INT3 KC_INTERNATIONAL_3 98 #define KC_INT4 KC_INTERNATIONAL_4 99 #define KC_INT5 KC_INTERNATIONAL_5 100 #define KC_INT6 KC_INTERNATIONAL_6 101 #define KC_INT7 KC_INTERNATIONAL_7 102 #define KC_INT8 KC_INTERNATIONAL_8 103 #define KC_INT9 KC_INTERNATIONAL_9 104 #define KC_LNG1 KC_LANGUAGE_1 105 #define KC_LNG2 KC_LANGUAGE_2 106 #define KC_LNG3 KC_LANGUAGE_3 107 #define KC_LNG4 KC_LANGUAGE_4 108 #define KC_LNG5 KC_LANGUAGE_5 109 #define KC_LNG6 KC_LANGUAGE_6 110 #define KC_LNG7 KC_LANGUAGE_7 111 #define KC_LNG8 KC_LANGUAGE_8 112 #define KC_LNG9 KC_LANGUAGE_9 113 114 /* Modifiers */ 115 #define KC_LCTL KC_LEFT_CTRL 116 #define KC_LSFT KC_LEFT_SHIFT 117 #define KC_LALT KC_LEFT_ALT 118 #define KC_LOPT KC_LEFT_ALT 119 #define KC_LGUI KC_LEFT_GUI 120 #define KC_LCMD KC_LEFT_GUI 121 #define KC_LWIN KC_LEFT_GUI 122 #define KC_RCTL KC_RIGHT_CTRL 123 #define KC_RSFT KC_RIGHT_SHIFT 124 #define KC_RALT KC_RIGHT_ALT 125 #define KC_ALGR KC_RIGHT_ALT 126 #define KC_ROPT KC_RIGHT_ALT 127 #define KC_RGUI KC_RIGHT_GUI 128 #define KC_RCMD KC_RIGHT_GUI 129 #define KC_RWIN KC_RIGHT_GUI 130 131 /* Keyboard/Keypad Page (0x07) */ 132 enum hid_keyboard { 133 KC_NO = 0x00, 134 KC_ROLL_OVER, 135 KC_POST_FAIL, 136 KC_UNDEFINED, 137 KC_A, 138 KC_B, 139 KC_C, 140 KC_D, 141 KC_E, 142 KC_F, 143 KC_G, 144 KC_H, 145 KC_I, 146 KC_J, 147 KC_K, 148 KC_L, 149 KC_M, // 0x10 150 KC_N, 151 KC_O, 152 KC_P, 153 KC_Q, 154 KC_R, 155 KC_S, 156 KC_T, 157 KC_U, 158 KC_V, 159 KC_W, 160 KC_X, 161 KC_Y, 162 KC_Z, 163 KC_1, 164 KC_2, 165 KC_3, // 0x20 166 KC_4, 167 KC_5, 168 KC_6, 169 KC_7, 170 KC_8, 171 KC_9, 172 KC_0, 173 KC_ENTER, 174 KC_ESCAPE, 175 KC_BACKSPACE, 176 KC_TAB, 177 KC_SPACE, 178 KC_MINUS, 179 KC_EQUAL, 180 KC_LEFT_BRACKET, 181 KC_RIGHT_BRACKET, // 0x30 182 KC_BACKSLASH, 183 KC_NONUS_HASH, 184 KC_SEMICOLON, 185 KC_QUOTE, 186 KC_GRAVE, 187 KC_COMMA, 188 KC_DOT, 189 KC_SLASH, 190 KC_CAPS_LOCK, 191 KC_F1, 192 KC_F2, 193 KC_F3, 194 KC_F4, 195 KC_F5, 196 KC_F6, 197 KC_F7, // 0x40 198 KC_F8, 199 KC_F9, 200 KC_F10, 201 KC_F11, 202 KC_F12, 203 KC_PRINT_SCREEN, 204 KC_SCROLL_LOCK, 205 KC_PAUSE, 206 KC_INSERT, 207 KC_HOME, 208 KC_PAGE_UP, 209 KC_DELETE, 210 KC_END, 211 KC_PAGE_DOWN, 212 KC_RIGHT, 213 KC_LEFT, // 0x50 214 KC_DOWN, 215 KC_UP, 216 KC_NUM_LOCK, 217 KC_KP_SLASH, 218 KC_KP_ASTERISK, 219 KC_KP_MINUS, 220 KC_KP_PLUS, 221 KC_KP_ENTER, 222 KC_KP_1, 223 KC_KP_2, 224 KC_KP_3, 225 KC_KP_4, 226 KC_KP_5, 227 KC_KP_6, 228 KC_KP_7, 229 KC_KP_8, // 0x60 230 KC_KP_9, 231 KC_KP_0, 232 KC_KP_DOT, 233 KC_NONUS_BACKSLASH, 234 KC_APPLICATION, 235 KC_KB_POWER, 236 KC_KP_EQUAL, 237 KC_F13, 238 KC_F14, 239 KC_F15, 240 KC_F16, 241 KC_F17, 242 KC_F18, 243 KC_F19, 244 KC_F20, 245 KC_F21, // 0x70 246 KC_F22, 247 KC_F23, 248 KC_F24, 249 KC_EXECUTE, 250 KC_HELP, 251 KC_MENU, 252 KC_SELECT, 253 KC_STOP, 254 KC_AGAIN, 255 KC_UNDO, 256 KC_CUT, 257 KC_COPY, 258 KC_PASTE, 259 KC_FIND, 260 KC_KB_MUTE, 261 KC_KB_VOLUME_UP, // 0x80 262 KC_KB_VOLUME_DOWN, 263 KC_LOCKING_CAPS_LOCK, 264 KC_LOCKING_NUM_LOCK, 265 KC_LOCKING_SCROLL_LOCK, 266 KC_KP_COMMA, 267 KC_KP_EQUAL_AS400, 268 KC_INTERNATIONAL_1, 269 KC_INTERNATIONAL_2, 270 KC_INTERNATIONAL_3, 271 KC_INTERNATIONAL_4, 272 KC_INTERNATIONAL_5, 273 KC_INTERNATIONAL_6, 274 KC_INTERNATIONAL_7, 275 KC_INTERNATIONAL_8, 276 KC_INTERNATIONAL_9, 277 KC_LANGUAGE_1, // 0x90 278 KC_LANGUAGE_2, 279 KC_LANGUAGE_3, 280 KC_LANGUAGE_4, 281 KC_LANGUAGE_5, 282 KC_LANGUAGE_6, 283 KC_LANGUAGE_7, 284 KC_LANGUAGE_8, 285 KC_LANGUAGE_9, 286 KC_ALTERNATE_ERASE, 287 KC_SYSTEM_REQUEST, 288 KC_CANCEL, 289 KC_CLEAR, 290 KC_PRIOR, 291 KC_RETURN, 292 KC_SEPARATOR, 293 KC_OUT, // 0xA0 294 KC_OPER, 295 KC_CLEAR_AGAIN, 296 KC_CRSEL, 297 KC_EXSEL, 298 299 #if 0 300 /* These keycodes are present in the HID spec, but are 301 * nonfunctional on modern OSes */ 302 303 KC_KP_00 = 0xB0, 304 KC_KP_000, 305 KC_THOUSANDS_SEPARATOR, 306 KC_DECIMAL_SEPARATOR, 307 KC_CURRENCY_UNIT, 308 KC_CURRENCY_SUB_UNIT, 309 KC_KP_LEFT_PARENTHESIS, 310 KC_KP_RIGHT_PARENTHESIS, 311 KC_KP_LEFT_BRACE, 312 KC_KP_RIGHT_BRACE, 313 KC_KP_TAB, 314 KC_KP_BACKSPACE, 315 KC_KP_A, 316 KC_KP_B, 317 KC_KP_C, 318 KC_KP_D, 319 KC_KP_E, //0xC0 320 KC_KP_F, 321 KC_KP_XOR, 322 KC_KP_HAT, 323 KC_KP_PERCENT, 324 KC_KP_LESS_THAN, 325 KC_KP_GREATER_THAN, 326 KC_KP_AND, 327 KC_KP_LAZY_AND, 328 KC_KP_OR, 329 KC_KP_LAZY_OR, 330 KC_KP_COLON, 331 KC_KP_HASH, 332 KC_KP_SPACE, 333 KC_KP_AT, 334 KC_KP_EXCLAMATION, 335 KC_KP_MEM_STORE, //0xD0 336 KC_KP_MEM_RECALL, 337 KC_KP_MEM_CLEAR, 338 KC_KP_MEM_ADD, 339 KC_KP_MEM_SUB, 340 KC_KP_MEM_MUL, 341 KC_KP_MEM_DIV, 342 KC_KP_PLUS_MINUS, 343 KC_KP_CLEAR, 344 KC_KP_CLEAR_ENTRY, 345 KC_KP_BINARY, 346 KC_KP_OCTAL, 347 KC_KP_DECIMAL, 348 KC_KP_HEXADECIMAL, 349 #endif 350 351 /* Modifiers */ 352 KC_LEFT_CTRL = 0xE0, 353 KC_LEFT_SHIFT, 354 KC_LEFT_ALT, 355 KC_LEFT_GUI, 356 KC_RIGHT_CTRL, 357 KC_RIGHT_SHIFT, 358 KC_RIGHT_ALT, 359 KC_RIGHT_GUI 360 };