/* Copyright 2011,2012,2020 Jun Wako 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 this program. If not, see . */ /* * Keycodes based on HID Usage Keyboard/Keypad Page(0x07) plus special codes * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf */ #ifndef KEYCODE_H #define KEYCODE_H #define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED) #define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF) #ifndef ACTIONMAP_ENABLE #define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL) #else #define IS_KEY(code) ((KC_A <= (code) && (code) <= KC_EXSEL) || \ (KC_KP_00 <= (code) && (code) <= KC_KP_HEXADECIMAL)) #endif #define IS_MOD(code) (KC_LCTRL <= (code) && (code) <= KC_RGUI) #define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF)) #define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE) #define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_BRIGHTNESS_DEC) #define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31) #define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) #define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) #define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN5) #define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT) #define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2) #define MOD_BIT(code) (1< KC_SLASH, // 38 / and ? KC_CAPSLOCK, // 39 KC_F1, // 3A KC_F2, // 3B KC_F3, // 3C KC_F4, // 3D KC_F5, // 3E KC_F6, // 3F KC_F7, // 40 KC_F8, // 41 KC_F9, // 42 KC_F10, // 43 KC_F11, // 44 KC_F12, // 45 KC_PSCREEN, // 46 KC_SCROLLLOCK, // 47 KC_PAUSE, // 48 KC_INSERT, // 49 KC_HOME, // 4A KC_PGUP, // 4B KC_DELETE, // 4C KC_END, // 4D KC_PGDOWN, // 4E KC_RIGHT, // 4F KC_LEFT, // 50 KC_DOWN, // 51 KC_UP, // 52 KC_NUMLOCK, // 53 KC_KP_SLASH, // 54 KC_KP_ASTERISK, // 55 KC_KP_MINUS, // 56 KC_KP_PLUS, // 57 KC_KP_ENTER, // 58 KC_KP_1, // 59 KC_KP_2, // 5A KC_KP_3, // 5B KC_KP_4, // 5C KC_KP_5, // 5D KC_KP_6, // 5E KC_KP_7, // 5F KC_KP_8, // 60 KC_KP_9, // 61 KC_KP_0, // 62 KC_KP_DOT, // 63 KC_NONUS_BSLASH, // 64 Non-US \ and | (Typically near the Left-Shift key) */ KC_APPLICATION, // 65 KC_POWER, // 66 KC_KP_EQUAL, // 67 KC_F13, // 68 KC_F14, // 69 KC_F15, // 6A KC_F16, // 6B KC_F17, // 6C KC_F18, // 6D KC_F19, // 6E KC_F20, // 6F KC_F21, // 70 KC_F22, // 71 KC_F23, // 72 KC_F24, // 73 KC_EXECUTE, // 74 KC_HELP, // 75 KC_MENU, // 76 KC_SELECT, // 77 KC_STOP, // 78 KC_AGAIN, // 79 KC_UNDO, // 7A KC_CUT, // 7B KC_COPY, // 7C KC_PASTE, // 7D KC_FIND, // 7E KC__MUTE, // 7F KC__VOLUP, // 80 KC__VOLDOWN, // 81 KC_LOCKING_CAPS, // 82 locking Caps Lock */ KC_LOCKING_NUM, // 83 locking Num Lock */ KC_LOCKING_SCROLL, // 84 locking Scroll Lock */ KC_KP_COMMA, // 85 KC_KP_EQUAL_AS400, // 86 equal sign on AS/400 */ KC_INT1, // 87 KC_INT2, // 88 KC_INT3, // 89 KC_INT4, // 8A KC_INT5, // 8B KC_INT6, // 8C KC_INT7, // 8D KC_INT8, // 8E KC_INT9, // 8F KC_LANG1, // 90 KC_LANG2, // 91 KC_LANG3, // 92 KC_LANG4, // 93 KC_LANG5, // 94 KC_LANG6, // 95 KC_LANG7, // 96 KC_LANG8, // 97 KC_LANG9, // 98 KC_ALT_ERASE, // 99 KC_SYSREQ, // 9A KC_CANCEL, // 9B KC_CLEAR, // 9C KC_PRIOR, // 9D KC_RETURN, // 9E KC_SEPARATOR, // 9F KC_OUT, // A0 KC_OPER, // A1 KC_CLEAR_AGAIN, // A2 KC_CRSEL, // A3 KC_EXSEL, // A4 /* NOTE: Following code range(0xB0-DD) are shared with special codes of 8-bit keymap */ KC_KP_00 = 0xB0, KC_KP_000, // B1 KC_THOUSANDS_SEPARATOR, // B2 KC_DECIMAL_SEPARATOR, // B3 KC_CURRENCY_UNIT, // B4 KC_CURRENCY_SUB_UNIT, // B5 KC_KP_LPAREN, // B6 KC_KP_RPAREN, // B7 KC_KP_LCBRACKET, // B8 { KC_KP_RCBRACKET, // B9 } KC_KP_TAB, // BA KC_KP_BSPACE, // BB KC_KP_A, // BC KC_KP_B, // BD KC_KP_C, // BE KC_KP_D, // BF KC_KP_E, // C0 KC_KP_F, // C1 KC_KP_XOR, // C2 KC_KP_HAT, // C3 KC_KP_PERC, // C4 KC_KP_LT, // C5 KC_KP_GT, // C6 KC_KP_AND, // C7 KC_KP_LAZYAND, // C8 KC_KP_OR, // C9 KC_KP_LAZYOR, // CA KC_KP_COLON, // CB KC_KP_HASH, // CC KC_KP_SPACE, // CD KC_KP_ATMARK, // CE KC_KP_EXCLAMATION, // CF KC_KP_MEM_STORE, // D0 KC_KP_MEM_RECALL, // D1 KC_KP_MEM_CLEAR, // D2 KC_KP_MEM_ADD, // D3 KC_KP_MEM_SUB, // D4 KC_KP_MEM_MUL, // D5 KC_KP_MEM_DIV, // D6 KC_KP_PLUS_MINUS, // D7 KC_KP_CLEAR, // D8 KC_KP_CLEAR_ENTRY, // D9 KC_KP_BINARY, // DA KC_KP_OCTAL, // DB KC_KP_DECIMAL, // DC KC_KP_HEXADECIMAL, // DD /* Modifiers */ KC_LCTRL = 0xE0, KC_LSHIFT, // E1 KC_LALT, // E2 KC_LGUI, // E3 KC_RCTRL, // E4 KC_RSHIFT, // E5 KC_RALT, // E6 KC_RGUI, // E7 }; /* Special keycodes for 8-bit keymap NOTE: 0xA5-DF and 0xE8-FF are used for internal special purpose */ enum internal_special_keycodes { /* System Control */ KC_SYSTEM_POWER = 0xA5, KC_SYSTEM_SLEEP, // A6 KC_SYSTEM_WAKE, // A7 /* Media Control */ KC_AUDIO_MUTE, // A8 KC_AUDIO_VOL_UP, // A9 KC_AUDIO_VOL_DOWN, // AA KC_MEDIA_NEXT_TRACK, // AB KC_MEDIA_PREV_TRACK, // AC KC_MEDIA_FAST_FORWARD, // AD KC_MEDIA_REWIND, // AE KC_MEDIA_STOP, // AF KC_MEDIA_PLAY_PAUSE, // B0 KC_MEDIA_EJECT, // B1 KC_MEDIA_SELECT, // B2 KC_MAIL, // B3 KC_CALCULATOR, // B4 KC_MY_COMPUTER, // B5 KC_WWW_SEARCH, // B6 KC_WWW_HOME, // B7 KC_WWW_BACK, // B8 KC_WWW_FORWARD, // B9 KC_WWW_STOP, // BA KC_WWW_REFRESH, // BB KC_WWW_FAVORITES, // BC KC_BRIGHTNESS_INC, // BD KC_BRIGHTNESS_DEC, // BE /* Jump to bootloader */ KC_BOOTLOADER, // BF /* Fn key */ KC_FN0, // C0 KC_FN1, // C1 KC_FN2, // C2 KC_FN3, // C3 KC_FN4, // C4 KC_FN5, // C5 KC_FN6, // C6 KC_FN7, // C7 KC_FN8, // C8 KC_FN9, // C9 KC_FN10, // CA KC_FN11, // CB KC_FN12, // CC KC_FN13, // CD KC_FN14, // CE KC_FN15, // CF KC_FN16, // D0 KC_FN17, // D1 KC_FN18, // D2 KC_FN19, // D3 KC_FN20, // D4 KC_FN21, // D5 KC_FN22, // D6 KC_FN23, // D7 KC_FN24, // D8 KC_FN25, // D9 KC_FN26, // DA KC_FN27, // DB KC_FN28, // DC KC_FN29, // DD KC_FN30, // DE KC_FN31, // DF /**************************************/ /* 0xE0-E7 for Modifiers. DO NOT USE. */ /**************************************/ /* Mousekey */ KC_MS_UP = 0xF0, KC_MS_DOWN, // F1 KC_MS_LEFT, // F2 KC_MS_RIGHT, // F3 KC_MS_BTN1, // F4 KC_MS_BTN2, // F5 KC_MS_BTN3, // F6 KC_MS_BTN4, // F7 KC_MS_BTN5, // F8 /* Mousekey wheel */ KC_MS_WH_UP, // F9 KC_MS_WH_DOWN, // FA KC_MS_WH_LEFT, // FB KC_MS_WH_RIGHT, // FC /* Mousekey accel */ KC_MS_ACCEL0, // FD KC_MS_ACCEL1, // FE KC_MS_ACCEL2 // FF }; #endif /* KEYCODE_H */