]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - usb_keycodes.h
fixed a bug on host_system_send().
[tmk_firmware.git] / usb_keycodes.h
index b49ecd5809ce671faf28f6917403d6642960d28a..6cc98682ba3d61832ea6706d7a7f2273d8c25f5a 100644 (file)
@@ -1,55 +1,42 @@
+/*
+Copyright 2011 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/>.
+*/
+
 /* 
- * Key codes from HID Keyboard/Keypad Page
+ * Key codes: HID Keyboard/Keypad Page(0x07)
  * 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_MOUSE(code) (MS_UP <= (code) && (code) <= MS_WH_RIGHT)
-#define IS_MOUSE_MOVE(code) (MS_UP <= (code) && (code) <= MS_RIGHT)
-#define IS_MOUSE_BUTTON(code) (MS_BTN1 <= (code) && (code) <= MS_BTN5)
-#define IS_MOUSE_WHEEL(code) (MS_WH_UP <= (code) && (code) <= MS_WH_RIGHT)
+
+#define IS_ERROR(code)           (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED)
+#define IS_KEY(code)             (KB_A         <= (code) && (code) <= KB_EXSEL)
+#define IS_MOD(code)             (KB_LCTRL     <= (code) && (code) <= KB_RGUI)
+#define IS_FN(code)              (KB_FN0       <= (code) && (code) <= KB_FN7)
+#define IS_MOUSEKEY(code)        (KB_MS_UP     <= (code) && (code) <= KB_MS_WH_RIGHT)
+#define IS_MOUSEKEY_MOVE(code)   (KB_MS_UP     <= (code) && (code) <= KB_MS_RIGHT)
+#define IS_MOUSEKEY_BUTTON(code) (KB_MS_BTN1   <= (code) && (code) <= KB_MS_BTN5)
+#define IS_MOUSEKEY_WHEEL(code)  (KB_MS_WH_UP  <= (code) && (code) <= KB_MS_WH_RIGHT)
 
 #define MOD_BIT(code) (1<<((code) & 0x07))
-#define FN_BIT(code) (1<<((code) - FN_0))
+#define FN_BIT(code)  (1<<((code) - KB_FN0))
 
 
-// short names
+/* Short names */
 #define KB_LCTL KB_LCTRL
 #define KB_RCTL KB_RCTRL
 #define KB_LSFT KB_LSHIFT
@@ -65,6 +52,7 @@
 #define KB_PSCR KB_PSCREEN
 #define KB_SLCK KB_SCKLOCK
 #define KB_BRK  KB_BREAK
+#define KB_NLCK KB_NUMLOCK
 #define KB_SPC  KB_SPACE
 #define KB_MINS KB_MINUS
 #define KB_EQL  KB_EQUAL
 #define KB_SLSH KB_SLASH
 #define KB_SCLN KB_SCOLON
 #define KB_QUOT KB_QUOTE
-#define KB_PWR  KB_POWER
-#define KB_VUP  KB_VOLUP
-#define KB_VDWN 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
+#define KB_APP  KB_APPLICATION
+#define KB_NUHS KB_NONUS_HASH
+#define KB_NUBS KB_NONUS_BSLASH
+/* for Japanese */
+#define KB_ZKHK KB_GRAVE
+#define KB_RO   KB_INT1
+#define KB_KANA KB_INT2
+#define KB_JYEN KB_INT3
+#define KB_HENK KB_INT4
+#define KB_MHEN KB_INT5
+/* Keypad */
+#define KB_P1   KB_KP_1
+#define KB_P2   KB_KP_2
+#define KB_P3   KB_KP_3
+#define KB_P4   KB_KP_4
+#define KB_P5   KB_KP_5
+#define KB_P6   KB_KP_6
+#define KB_P7   KB_KP_7
+#define KB_P8   KB_KP_8
+#define KB_P9   KB_KP_9
+#define KB_P0   KB_KP_0
+#define KB_PDOT KB_KP_DOT
+#define KB_PSLS KB_KP_SLASH
+#define KB_PAST KB_KP_ASTERISK
+#define KB_PMNS KB_KP_MINUS
+#define KB_PPLS KB_KP_PLUS
+#define KB_PEQL KB_KP_EQUAL
+#define KB_PENT KB_KP_ENTER
+/* Mousekey */
+#define KB_MS_U KB_MS_UP
+#define KB_MS_D KB_MS_DOWN
+#define KB_MS_L KB_MS_LEFT
+#define KB_MS_R KB_MS_RIGHT
+#define KB_BTN1 KB_MS_BTN1
+#define KB_BTN2 KB_MS_BTN2
+#define KB_BTN3 KB_MS_BTN3
+#define KB_BTN4 KB_MS_BTN4
+#define KB_BTN5 KB_MS_BTN5
+#define KB_WH_U KB_MS_WH_UP
+#define KB_WH_D KB_MS_WH_DOWN
+#define KB_WH_L KB_MS_WH_LEFT
+#define KB_WH_R KB_MS_WH_RIGHT
+/* Sytem Control & Consumer usage */
+#define KB_PWR  KB_SYSTEM_POWER
+#define KB_SLEP KB_SYSTEM_SLEEP
+#define KB_WAKE KB_SYSTEM_WAKE
+#define KB_MUTE KB_AUDIO_MUTE
+#define KB_VOLU KB_AUDIO_VOL_UP
+#define KB_VOLD KB_AUDIO_VOL_DOWN
+#define KB_MNXT KB_MEDIA_NEXT_TRACK
+#define KB_MPRV KB_MEDIA_PREV_TRACK
+#define KB_MSTP KB_MEDIA_STOP
+#define KB_MPLY KB_MEDIA_PLAY_PAUSE
+#define KB_MSEL KB_MEDIA_SELECT
+#define KB_MAIL KB_MAIL
+#define KB_CALC KB_CALCULATOR
+#define KB_MYCM KB_MY_COMPUTER
+#define KB_WSCH KB_WWW_SEARCH
+#define KB_WHOM KB_WWW_HOME
+#define KB_WBAK KB_WWW_BACK
+#define KB_WFWD KB_WWW_FORWARD
+#define KB_WSTP KB_WWW_STOP
+#define KB_WREF KB_WWW_REFRESH
+#define KB_WFAV KB_WWW_FAVORITES
+
+
+/* Special keycode */
+enum special_keycodes {
+    /* System Control */
+    KB_SYSTEM_POWER = 0xB0,
+    KB_SYSTEM_SLEEP,
+    KB_SYSTEM_WAKE,
+
+    /* Consumer Page */
+    KB_AUDIO_MUTE,
+    KB_AUDIO_VOL_UP,
+    KB_AUDIO_VOL_DOWN,
+    KB_MEDIA_NEXT_TRACK,
+    KB_MEDIA_PREV_TRACK,
+    KB_MEDIA_STOP,
+    KB_MEDIA_PLAY_PAUSE,
+    KB_MEDIA_SELECT,
+    KB_MAIL,
+    KB_CALCULATOR,
+    KB_MY_COMPUTER,
+    KB_WWW_SEARCH,
+    KB_WWW_HOME,
+    KB_WWW_BACK,        /* 0xC0 */
+    KB_WWW_FORWARD,
+    KB_WWW_STOP,
+    KB_WWW_REFRESH,
+    KB_WWW_FAVORITES,
 
+    /* reserve 0xE0-E7 for Modifiers */
+
+    /* Layer Switching */
+    KB_FN0 = 0xE8,
+    KB_FN1,
+    KB_FN2,
+    KB_FN3,
+    KB_FN4,
+    KB_FN5,
+    KB_FN6,
+    KB_FN7,
+
+    /* Mousekey */
+    KB_MS_UP = 0xF0,
+    KB_MS_DOWN,
+    KB_MS_LEFT,
+    KB_MS_RIGHT,
+    KB_MS_BTN1,
+    KB_MS_BTN2,
+    KB_MS_BTN3,
+    KB_MS_BTN4,
+    KB_MS_BTN5,
+    /* Mousekey wheel */
+    KB_MS_WH_UP,
+    KB_MS_WH_DOWN,
+    KB_MS_WH_LEFT,
+    KB_MS_WH_RIGHT,
+};
 
 enum keycodes {
     KB_NO = 0,
@@ -106,7 +203,7 @@ enum keycodes {
     KB_J,
     KB_K,
     KB_L,
-    KB_M,       /* 0x10 */
+    KB_M,               /* 0x10 */
     KB_N,
     KB_O,
     KB_P,
@@ -122,7 +219,7 @@ enum keycodes {
     KB_Z,
     KB_1,
     KB_2,
-    KB_3,       /* 0x20 */
+    KB_3,               /* 0x20 */
     KB_4,
     KB_5,
     KB_6,
@@ -137,16 +234,16 @@ enum keycodes {
     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_LBRACKET,
+    KB_RBRACKET,        /* 0x30 */
+    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,
@@ -154,7 +251,7 @@ enum keycodes {
     KB_F4,
     KB_F5,
     KB_F6,
-    KB_F7,      /* 0x40 */
+    KB_F7,              /* 0x40 */
     KB_F8,
     KB_F9,
     KB_F10,
@@ -170,30 +267,30 @@ enum keycodes {
     KB_END,
     KB_PGDOWN,
     KB_RIGHT,
-    KB_LEFT,    /* 0x50 */
+    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_KP_SLASH,
+    KB_KP_ASTERISK,
+    KB_KP_MINUS,
+    KB_KP_PLUS,
+    KB_KP_ENTER,
+    KB_KP_1,
+    KB_KP_2,
+    KB_KP_3,
+    KB_KP_4,
+    KB_KP_5,
+    KB_KP_6,
+    KB_KP_7,
+    KB_KP_8,            /* 0x60 */
+    KB_KP_9,
+    KB_KP_0,
+    KB_KP_DOT,
+    KB_NONUS_BSLASH,    /* Non-US \ and | */
     KB_APPLICATION,
     KB_POWER,
-    KP_EQUAL,
+    KB_KP_EQUAL,
     KB_F13,
     KB_F14,
     KB_F15,
@@ -202,7 +299,7 @@ enum keycodes {
     KB_F18,
     KB_F19,
     KB_F20,
-    KB_F21,     /* 0x70 */
+    KB_F21,             /* 0x70 */
     KB_F22,
     KB_F23,
     KB_F24,
@@ -217,14 +314,14 @@ enum keycodes {
     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__MUTE,
+    KB__VOLUP,          /* 0x80 */
+    KB__VOLDOWN,
+    KB_LOCKING_CAPS,    /* locking Caps Lock */
+    KB_LOCKING_NUM,     /* locking Num Lock */
+    KB_LOCKING_SCROLL,  /* locking Scroll Lock */
+    KB_KP_COMMA,
+    KB_KP_EQUAL_AS400,  /* equal sign on AS/400 */
     KB_INT1,
     KB_INT2,
     KB_INT3,
@@ -234,7 +331,7 @@ enum keycodes {
     KB_INT7,
     KB_INT8,
     KB_INT9,
-    KB_LANG1,    /* 0x90 */
+    KB_LANG1,           /* 0x90 */
     KB_LANG2,
     KB_LANG3,
     KB_LANG4,
@@ -250,91 +347,73 @@ enum keycodes {
     KB_PRIOR,
     KB_RETURN,
     KB_SEPARATOR,
-    KB_OUT,
+    KB_OUT,             /* 0xA0 */
     KB_OPER,
     KB_CLEAR_AGAIN,
     KB_CRSEL,
     KB_EXSEL,
 
-    KP_00 = 0xB0,
-    KP_000,
+    /* NOTE: 0xB0-DF are used as special_keycodes */
+#if 0
+    KB_KP_00 = 0xB0,
+    KB_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,
+    KB_CURRENCY_UNIT,
+    KB_CURRENCY_SUB_UNIT,
+    KB_KP_LPAREN,
+    KB_KP_RPAREN,
+    KB_KP_LCBRACKET,    /* { */
+    KB_KP_RCBRACKET,    /* } */
+    KB_KP_TAB,
+    KB_KP_BSPACE,
+    KB_KP_A,
+    KB_KP_B,
+    KB_KP_C,
+    KB_KP_D,
+    KB_KP_E,            /* 0xC0 */
+    KB_KP_F,
+    KB_KP_XOR,
+    KB_KP_HAT,
+    KB_KP_PERC,
+    KB_KP_LT,
+    KB_KP_GT,
+    KB_KP_AND,
+    KB_KP_LAZYAND,
+    KB_KP_OR,
+    KB_KP_LAZYOR,
+    KB_KP_COLON,
+    KB_KP_HASH,
+    KB_KP_SPACE,
+    KB_KP_ATMARK,
+    KB_KP_EXCLAMATION,
+    KB_KP_MEM_STORE,    /* 0xD0 */
+    KB_KP_MEM_RECALL,
+    KB_KP_MEM_CLEAR,
+    KB_KP_MEM_ADD,
+    KB_KP_MEM_SUB,
+    KB_KP_MEM_MUL,
+    KB_KP_MEM_DIV,
+    KB_KP_PLUS_MINUS,
+    KB_KP_CLEAR,
+    KB_KP_CLEAR_ENTRY,
+    KB_KP_BINARY,
+    KB_KP_OCTAL,
+    KB_KP_DECIMAL,
+    KB_KP_HEXADECIMAL,
+#endif
 
-    /* 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 */
+    /* Modifiers */
+    KB_LCTRL = 0xE0,
+    KB_LSHIFT,
+    KB_LALT,
+    KB_LGUI,
+    KB_RCTRL,
+    KB_RSHIFT,
+    KB_RALT,
+    KB_RGUI,
 
-    /* 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,
+    /* NOTE: 0xE8-FF are used as special_keycodes */
 };
 
 #endif /* USB_KEYCODES_H */