2012-10-09 05:36:13 +00:00
/*
Copyright 2011 , 2012 Jun Wako < wakojun @ gmail . com >
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 < http : //www.gnu.org/licenses/>.
*/
/*
* 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)
# define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL)
# define IS_MOD(code) (KC_LCTRL <= (code) && (code) <= KC_RGUI)
2013-01-31 08:50:53 +00:00
# define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31)
2012-10-16 18:27:25 +00:00
# define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2)
2012-10-09 05:36:13 +00:00
# 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)
2012-10-16 18:27:25 +00:00
# define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2)
2012-10-09 05:36:13 +00:00
2013-01-31 08:50:53 +00:00
# define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF))
2012-10-09 05:36:13 +00:00
# define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_WFAV)
# define IS_SYSTEM(code) (KC_POWER <= (code) && (code) <= KC_WAKE)
# define MOD_BIT(code) (1<<MOD_INDEX(code))
# define MOD_INDEX(code) ((code) & 0x07)
# define FN_BIT(code) (1<<FN_INDEX(code))
# define FN_INDEX(code) ((code) - KC_FN0)
2012-12-15 17:32:07 +00:00
# define FN_MIN KC_FN0
2013-01-27 06:57:07 +00:00
# define FN_MAX KC_FN31
2012-10-09 05:36:13 +00:00
/*
* Short names for ease of definition of keymap
*/
# define KC_LCTL KC_LCTRL
# define KC_RCTL KC_RCTRL
# define KC_LSFT KC_LSHIFT
# define KC_RSFT KC_RSHIFT
# define KC_ESC KC_ESCAPE
# define KC_BSPC KC_BSPACE
# define KC_ENT KC_ENTER
# define KC_DEL KC_DELETE
# define KC_INS KC_INSERT
# define KC_CAPS KC_CAPSLOCK
# define KC_RGHT KC_RIGHT
# define KC_PGDN KC_PGDOWN
# define KC_PSCR KC_PSCREEN
# define KC_SLCK KC_SCKLOCK
# define KC_PAUS KC_PAUSE
# define KC_BRK KC_PAUSE
# define KC_NLCK KC_NUMLOCK
# define KC_SPC KC_SPACE
# define KC_MINS KC_MINUS
# define KC_EQL KC_EQUAL
# define KC_GRV KC_GRAVE
# define KC_RBRC KC_RBRACKET
# define KC_LBRC KC_LBRACKET
# define KC_COMM KC_COMMA
# define KC_BSLS KC_BSLASH
# define KC_SLSH KC_SLASH
# define KC_SCLN KC_SCOLON
# define KC_QUOT KC_QUOTE
# define KC_APP KC_APPLICATION
# define KC_NUHS KC_NONUS_HASH
# define KC_NUBS KC_NONUS_BSLASH
# define KC_ERAS KC_ALT_ERASE,
# define KC_CLR KC_CLEAR
/* Japanese specific */
# define KC_ZKHK KC_GRAVE
# define KC_RO KC_INT1
# define KC_KANA KC_INT2
# define KC_JYEN KC_INT3
# define KC_HENK KC_INT4
# define KC_MHEN KC_INT5
/* Keypad */
# define KC_P1 KC_KP_1
# define KC_P2 KC_KP_2
# define KC_P3 KC_KP_3
# define KC_P4 KC_KP_4
# define KC_P5 KC_KP_5
# define KC_P6 KC_KP_6
# define KC_P7 KC_KP_7
# define KC_P8 KC_KP_8
# define KC_P9 KC_KP_9
# define KC_P0 KC_KP_0
# define KC_PDOT KC_KP_DOT
# define KC_PCMM KC_KP_COMMA
# define KC_PSLS KC_KP_SLASH
# define KC_PAST KC_KP_ASTERISK
# define KC_PMNS KC_KP_MINUS
# define KC_PPLS KC_KP_PLUS
# define KC_PEQL KC_KP_EQUAL
# define KC_PENT KC_KP_ENTER
/* Mousekey */
# define KC_MS_U KC_MS_UP
# define KC_MS_D KC_MS_DOWN
# define KC_MS_L KC_MS_LEFT
# define KC_MS_R KC_MS_RIGHT
# define KC_BTN1 KC_MS_BTN1
# define KC_BTN2 KC_MS_BTN2
# define KC_BTN3 KC_MS_BTN3
# define KC_BTN4 KC_MS_BTN4
# define KC_BTN5 KC_MS_BTN5
# define KC_WH_U KC_MS_WH_UP
# define KC_WH_D KC_MS_WH_DOWN
# define KC_WH_L KC_MS_WH_LEFT
# define KC_WH_R KC_MS_WH_RIGHT
2012-10-16 18:27:25 +00:00
# define KC_ACL0 KC_MS_ACCEL0
# define KC_ACL1 KC_MS_ACCEL1
# define KC_ACL2 KC_MS_ACCEL2
2012-10-09 05:36:13 +00:00
/* Sytem Control */
# define KC_PWR KC_SYSTEM_POWER
# define KC_SLEP KC_SYSTEM_SLEEP
# define KC_WAKE KC_SYSTEM_WAKE
/* Consumer Page */
# define KC_MUTE KC_AUDIO_MUTE
# define KC_VOLU KC_AUDIO_VOL_UP
# define KC_VOLD KC_AUDIO_VOL_DOWN
# define KC_MNXT KC_MEDIA_NEXT_TRACK
# define KC_MPRV KC_MEDIA_PREV_TRACK
# define KC_MSTP KC_MEDIA_STOP
# define KC_MPLY KC_MEDIA_PLAY_PAUSE
# define KC_MSEL KC_MEDIA_SELECT
# define KC_MAIL KC_MAIL
# define KC_CALC KC_CALCULATOR
# define KC_MYCM KC_MY_COMPUTER
# define KC_WSCH KC_WWW_SEARCH
# define KC_WHOM KC_WWW_HOME
# define KC_WBAK KC_WWW_BACK
# define KC_WFWD KC_WWW_FORWARD
# define KC_WSTP KC_WWW_STOP
# define KC_WREF KC_WWW_REFRESH
# define KC_WFAV KC_WWW_FAVORITES
/* USB HID Keyboard/Keypad Usage(0x07) */
enum hid_keyboard_keypad_usage {
KC_NO = 0x00 ,
KC_ROLL_OVER ,
KC_POST_FAIL ,
KC_UNDEFINED ,
KC_A ,
KC_B ,
KC_C ,
KC_D ,
KC_E ,
KC_F ,
KC_G ,
KC_H ,
KC_I ,
KC_J ,
KC_K ,
KC_L ,
KC_M , /* 0x10 */
KC_N ,
KC_O ,
KC_P ,
KC_Q ,
KC_R ,
KC_S ,
KC_T ,
KC_U ,
KC_V ,
KC_W ,
KC_X ,
KC_Y ,
KC_Z ,
KC_1 ,
KC_2 ,
KC_3 , /* 0x20 */
KC_4 ,
KC_5 ,
KC_6 ,
KC_7 ,
KC_8 ,
KC_9 ,
KC_0 ,
KC_ENTER ,
KC_ESCAPE ,
KC_BSPACE ,
KC_TAB ,
KC_SPACE ,
KC_MINUS ,
KC_EQUAL ,
KC_LBRACKET ,
KC_RBRACKET , /* 0x30 */
KC_BSLASH , /* \ (and |) */
KC_NONUS_HASH , /* Non-US # and ~ */
KC_SCOLON , /* ; (and :) */
KC_QUOTE , /* ' and " */
KC_GRAVE , /* Grave accent and tilde */
KC_COMMA , /* , and < */
KC_DOT , /* . and > */
KC_SLASH , /* / and ? */
KC_CAPSLOCK ,
KC_F1 ,
KC_F2 ,
KC_F3 ,
KC_F4 ,
KC_F5 ,
KC_F6 ,
KC_F7 , /* 0x40 */
KC_F8 ,
KC_F9 ,
KC_F10 ,
KC_F11 ,
KC_F12 ,
KC_PSCREEN ,
KC_SCKLOCK ,
KC_PAUSE ,
KC_INSERT ,
KC_HOME ,
KC_PGUP ,
KC_DELETE ,
KC_END ,
KC_PGDOWN ,
KC_RIGHT ,
KC_LEFT , /* 0x50 */
KC_DOWN ,
KC_UP ,
KC_NUMLOCK ,
KC_KP_SLASH ,
KC_KP_ASTERISK ,
KC_KP_MINUS ,
KC_KP_PLUS ,
KC_KP_ENTER ,
KC_KP_1 ,
KC_KP_2 ,
KC_KP_3 ,
KC_KP_4 ,
KC_KP_5 ,
KC_KP_6 ,
KC_KP_7 ,
KC_KP_8 , /* 0x60 */
KC_KP_9 ,
KC_KP_0 ,
KC_KP_DOT ,
KC_NONUS_BSLASH , /* Non-US \ and | */
KC_APPLICATION ,
KC_POWER ,
KC_KP_EQUAL ,
KC_F13 ,
KC_F14 ,
KC_F15 ,
KC_F16 ,
KC_F17 ,
KC_F18 ,
KC_F19 ,
KC_F20 ,
KC_F21 , /* 0x70 */
KC_F22 ,
KC_F23 ,
KC_F24 ,
KC_EXECUTE ,
KC_HELP ,
KC_MENU ,
KC_SELECT ,
KC_STOP ,
KC_AGAIN ,
KC_UNDO ,
KC_CUT ,
KC_COPY ,
KC_PASTE ,
KC_FIND ,
KC__MUTE ,
KC__VOLUP , /* 0x80 */
KC__VOLDOWN ,
KC_LOCKING_CAPS , /* locking Caps Lock */
KC_LOCKING_NUM , /* locking Num Lock */
KC_LOCKING_SCROLL , /* locking Scroll Lock */
KC_KP_COMMA ,
KC_KP_EQUAL_AS400 , /* equal sign on AS/400 */
KC_INT1 ,
KC_INT2 ,
KC_INT3 ,
KC_INT4 ,
KC_INT5 ,
KC_INT6 ,
KC_INT7 ,
KC_INT8 ,
KC_INT9 ,
KC_LANG1 , /* 0x90 */
KC_LANG2 ,
KC_LANG3 ,
KC_LANG4 ,
KC_LANG5 ,
KC_LANG6 ,
KC_LANG7 ,
KC_LANG8 ,
KC_LANG9 ,
KC_ALT_ERASE ,
KC_SYSREQ ,
KC_CANCEL ,
KC_CLEAR ,
KC_PRIOR ,
KC_RETURN ,
KC_SEPARATOR ,
KC_OUT , /* 0xA0 */
KC_OPER ,
KC_CLEAR_AGAIN ,
KC_CRSEL ,
KC_EXSEL , /* 0xA4 */
/* NOTE: 0xA5-DF are used for internal special purpose */
#if 0
/* NOTE: Following codes(0xB0-DD) are not used. Leave them for reference. */
KC_KP_00 = 0xB0 ,
KC_KP_000 ,
KC_THOUSANDS_SEPARATOR ,
KC_DECIMAL_SEPARATOR ,
KC_CURRENCY_UNIT ,
KC_CURRENCY_SUB_UNIT ,
KC_KP_LPAREN ,
KC_KP_RPAREN ,
KC_KP_LCBRACKET , /* { */
KC_KP_RCBRACKET , /* } */
KC_KP_TAB ,
KC_KP_BSPACE ,
KC_KP_A ,
KC_KP_B ,
KC_KP_C ,
KC_KP_D ,
KC_KP_E , /* 0xC0 */
KC_KP_F ,
KC_KP_XOR ,
KC_KP_HAT ,
KC_KP_PERC ,
KC_KP_LT ,
KC_KP_GT ,
KC_KP_AND ,
KC_KP_LAZYAND ,
KC_KP_OR ,
KC_KP_LAZYOR ,
KC_KP_COLON ,
KC_KP_HASH ,
KC_KP_SPACE ,
KC_KP_ATMARK ,
KC_KP_EXCLAMATION ,
KC_KP_MEM_STORE , /* 0xD0 */
KC_KP_MEM_RECALL ,
KC_KP_MEM_CLEAR ,
KC_KP_MEM_ADD ,
KC_KP_MEM_SUB ,
KC_KP_MEM_MUL ,
KC_KP_MEM_DIV ,
KC_KP_PLUS_MINUS ,
KC_KP_CLEAR ,
KC_KP_CLEAR_ENTRY ,
KC_KP_BINARY ,
KC_KP_OCTAL ,
KC_KP_DECIMAL ,
KC_KP_HEXADECIMAL , /* 0xDD */
# endif
/* Modifiers */
KC_LCTRL = 0xE0 ,
KC_LSHIFT ,
KC_LALT ,
KC_LGUI ,
KC_RCTRL ,
KC_RSHIFT ,
KC_RALT ,
KC_RGUI ,
/* NOTE: 0xE8-FF are used for internal special purpose */
} ;
/* Special keycodes */
/* 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 ,
2013-01-27 06:57:07 +00:00
KC_SYSTEM_WAKE ,
2012-10-09 05:36:13 +00:00
/* Consumer Page */
2013-01-27 06:57:07 +00:00
KC_AUDIO_MUTE ,
2012-10-09 05:36:13 +00:00
KC_AUDIO_VOL_UP ,
KC_AUDIO_VOL_DOWN ,
KC_MEDIA_NEXT_TRACK ,
KC_MEDIA_PREV_TRACK ,
KC_MEDIA_STOP ,
KC_MEDIA_PLAY_PAUSE ,
KC_MEDIA_SELECT ,
KC_MAIL ,
KC_CALCULATOR ,
KC_MY_COMPUTER ,
KC_WWW_SEARCH ,
KC_WWW_HOME ,
KC_WWW_BACK ,
KC_WWW_FORWARD ,
KC_WWW_STOP ,
2013-01-27 06:57:07 +00:00
KC_WWW_REFRESH ,
KC_WWW_FAVORITES , /* 0xB9 */
2012-10-09 05:36:13 +00:00
/* Layer Switching */
2013-01-27 06:57:07 +00:00
KC_FN0 = 0xC0 ,
2012-10-09 05:36:13 +00:00
KC_FN1 ,
KC_FN2 ,
KC_FN3 ,
KC_FN4 ,
KC_FN5 ,
KC_FN6 ,
2013-01-27 06:57:07 +00:00
KC_FN7 ,
KC_FN8 ,
KC_FN9 ,
KC_FN10 ,
KC_FN11 ,
KC_FN12 ,
KC_FN13 ,
KC_FN14 ,
KC_FN15 ,
KC_FN16 = 0xD0 ,
KC_FN17 ,
KC_FN18 ,
KC_FN19 ,
KC_FN20 ,
KC_FN21 ,
KC_FN22 ,
KC_FN23 ,
KC_FN24 ,
KC_FN25 ,
KC_FN26 ,
KC_FN27 ,
KC_FN28 ,
KC_FN29 ,
KC_FN30 ,
KC_FN31 , /* 0xDF */
/**************************************/
/* 0xE0-E7 for Modifiers. DO NOT USE. */
/**************************************/
2012-10-09 05:36:13 +00:00
/* Mousekey */
KC_MS_UP = 0xF0 ,
KC_MS_DOWN ,
KC_MS_LEFT ,
KC_MS_RIGHT ,
KC_MS_BTN1 ,
KC_MS_BTN2 ,
KC_MS_BTN3 ,
KC_MS_BTN4 ,
2012-10-16 18:27:25 +00:00
KC_MS_BTN5 , /* 0xF8 */
2012-10-09 05:36:13 +00:00
/* Mousekey wheel */
KC_MS_WH_UP ,
KC_MS_WH_DOWN ,
KC_MS_WH_LEFT ,
KC_MS_WH_RIGHT , /* 0xFC */
2012-10-16 18:27:25 +00:00
/* Mousekey accel */
KC_MS_ACCEL0 ,
KC_MS_ACCEL1 ,
KC_MS_ACCEL2 /* 0xFF */
2012-10-09 05:36:13 +00:00
} ;
# endif /* KEYCODE_H */