ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers keyboard.h Source File

keyboard.h

00001 /* ----------------------------------------------------------------------------
00002  * USB Keyboard Key Codes (usage page 0x07)
00003  *
00004  * Taken from [the HID Usage Tables pdf][1], Section 10,
00005  * which can be found on [the HID Page][2] at <http://www.usb.org>
00006  *
00007  * - `Boot Keyboard Req.` indicates that the usage code is one that should be
00008  *   supported by the listed types of keyboards (104-key, ...) on boot
00009  *
00010  * - `KEY_` indicates a Keyboard key
00011  * - `KEYPAD_` indicates a Keypad key
00012  * - Multiple names concatenated in CamelCase indicate a single value
00013  * - Multiple names separated by `_`s indicate shifted or alternate values
00014  *
00015  * [1]: http://www.usb.org/developers/hidpage/Hut1_12v2.pdf
00016  * [2]: http://www.usb.org/developers/hidpage#HID_Usage
00017  * ----------------------------------------------------------------------------
00018  * Copyright (c) 2012 Ben Blazak <benblazak.dev@gmail.com>
00019  * Released under The MIT License (MIT) (see "license.md")
00020  * Project located at <https://github.com/benblazak/ergodox-firmware>
00021  * ------------------------------------------------------------------------- */
00022 
00023 
00024 #ifndef USB_USAGE_PAGE_KEYBOARD_h
00025     #define USB_USAGE_PAGE_KEYBOARD_h
00026 // ----------------------------------------------------------------------------
00027 // ----------------------------------------------------------------------------
00028 
00029 
00030 //      Name                        ID    // PC Mac Unix  Boot Keyboard Req.
00031 //      --------------------------- ----     -- --- ----  ---------------------
00032 
00033 //      (Reserved)                  0x00  // √  √   √     84/101/104
00034 
00035 #define KEY_ErrorRollOver           0x01  // √  √   √     84/101/104
00036 #define KEY_POSTFail                0x02  // √  √   √     84/101/104
00037 #define KEY_ErrorUndefined          0x03  // √  √   √     84/101/104
00038 #define KEY_a_A                     0x04  // √  √   √     84/101/104
00039 #define KEY_b_B                     0x05  // √  √   √     84/101/104
00040 #define KEY_c_C                     0x06  // √  √   √     84/101/104
00041 #define KEY_d_D                     0x07  // √  √   √     84/101/104
00042 #define KEY_e_E                     0x08  // √  √   √     84/101/104
00043 #define KEY_f_F                     0x09  // √  √   √     84/101/104
00044 #define KEY_g_G                     0x0A  // √  √   √     84/101/104
00045 #define KEY_h_H                     0x0B  // √  √   √     84/101/104
00046 #define KEY_i_I                     0x0C  // √  √   √     84/101/104
00047 #define KEY_j_J                     0x0D  // √  √   √     84/101/104
00048 #define KEY_k_K                     0x0E  // √  √   √     84/101/104
00049 #define KEY_l_L                     0x0F  // √  √   √     84/101/104
00050 #define KEY_m_M                     0x10  // √  √   √     84/101/104
00051 #define KEY_n_N                     0x11  // √  √   √     84/101/104
00052 #define KEY_o_O                     0x12  // √  √   √     84/101/104
00053 #define KEY_p_P                     0x13  // √  √   √     84/101/104
00054 #define KEY_q_Q                     0x14  // √  √   √     84/101/104
00055 #define KEY_r_R                     0x15  // √  √   √     84/101/104
00056 #define KEY_s_S                     0x16  // √  √   √     84/101/104
00057 #define KEY_t_T                     0x17  // √  √   √     84/101/104
00058 #define KEY_u_U                     0x18  // √  √   √     84/101/104
00059 #define KEY_v_V                     0x19  // √  √   √     84/101/104
00060 #define KEY_w_W                     0x1A  // √  √   √     84/101/104
00061 #define KEY_x_X                     0x1B  // √  √   √     84/101/104
00062 #define KEY_y_Y                     0x1C  // √  √   √     84/101/104
00063 #define KEY_z_Z                     0x1D  // √  √   √     84/101/104
00064 #define KEY_1_Exclamation           0x1E  // √  √   √     84/101/104
00065 #define KEY_2_At                    0x1F  // √  √   √     84/101/104
00066 #define KEY_3_Pound                 0x20  // √  √   √     84/101/104
00067 #define KEY_4_Dollar                0x21  // √  √   √     84/101/104
00068 #define KEY_5_Percent               0x22  // √  √   √     84/101/104
00069 #define KEY_6_Caret                 0x23  // √  √   √     84/101/104
00070 #define KEY_7_Ampersand             0x24  // √  √   √     84/101/104
00071 #define KEY_8_Asterisk              0x25  // √  √   √     84/101/104
00072 #define KEY_9_LeftParenthesis       0x26  // √  √   √     84/101/104
00073 #define KEY_0_RightParenthesis      0x27  // √  √   √     84/101/104
00074 #define KEY_ReturnEnter             0x28  // √  √   √     84/101/104
00075 #define KEY_Escape                  0x29  // √  √   √     84/101/104
00076 #define KEY_DeleteBackspace         0x2A  // √  √   √     84/101/104
00077 #define KEY_Tab                     0x2B  // √  √   √     84/101/104
00078 #define KEY_Spacebar                0x2C  // √  √   √     84/101/104
00079 #define KEY_Dash_Underscore         0x2D  // √  √   √     84/101/104
00080 #define KEY_Equal_Plus              0x2E  // √  √   √     84/101/104
00081 #define KEY_LeftBracket_LeftBrace   0x2F  // √  √   √     84/101/104
00082 #define KEY_RightBracket_RightBrace 0x30  // √  √   √     84/101/104
00083 #define KEY_Backslash_Pipe          0x31  // √  √   √     84/101/104
00084 #define KEY_NonUS_Pound_Tilde       0x32  // √  √   √     84/101/104
00085 #define KEY_Semicolon_Colon         0x33  // √  √   √     84/101/104
00086 #define KEY_SingleQuote_DoubleQuote 0x34  // √  √   √     84/101/104
00087 #define KEY_GraveAccent_Tilde       0x35  // √  √   √     84/101/104
00088 #define KEY_Comma_LessThan          0x36  // √  √   √     84/101/104
00089 #define KEY_Period_GreaterThan      0x37  // √  √   √     84/101/104
00090 #define KEY_Slash_Question          0x38  // √  √   √     84/101/104
00091 #define KEY_CapsLock                0x39  // √  √   √     84/101/104
00092 #define KEY_F1                      0x3A  // √  √   √     84/101/104
00093 #define KEY_F2                      0x3B  // √  √   √     84/101/104
00094 #define KEY_F3                      0x3C  // √  √   √     84/101/104
00095 #define KEY_F4                      0x3D  // √  √   √     84/101/104
00096 #define KEY_F5                      0x3E  // √  √   √     84/101/104
00097 #define KEY_F6                      0x3F  // √  √   √     84/101/104
00098 #define KEY_F7                      0x40  // √  √   √     84/101/104
00099 #define KEY_F8                      0x41  // √  √   √     84/101/104
00100 #define KEY_F9                      0x42  // √  √   √     84/101/104
00101 #define KEY_F10                     0x43  // √  √   √     84/101/104
00102 #define KEY_F11                     0x44  // √  √   √        101/104
00103 #define KEY_F12                     0x45  // √  √   √        101/104
00104 #define KEY_PrintScreen             0x46  // √  √   √        101/104
00105 #define KEY_ScrollLock              0x47  // √  √   √     84/101/104
00106 #define KEY_Pause                   0x48  // √  √   √        101/104
00107 #define KEY_Insert                  0x49  // √  √   √        101/104
00108 #define KEY_Home                    0x4A  // √  √   √        101/104
00109 #define KEY_PageUp                  0x4B  // √  √   √        101/104
00110 #define KEY_DeleteForward           0x4C  // √  √   √        101/104
00111 #define KEY_End                     0x4D  // √  √   √        101/104
00112 #define KEY_PageDown                0x4E  // √  √   √        101/104
00113 #define KEY_RightArrow              0x4F  // √  √   √        101/104
00114 #define KEY_LeftArrow               0x50  // √  √   √        101/104
00115 #define KEY_DownArrow               0x51  // √  √   √        101/104
00116 #define KEY_UpArrow                 0x52  // √  √   √        101/104
00117 
00118 #define KEYPAD_NumLock_Clear        0x53  // √  √   √        101/104
00119 #define KEYPAD_Slash                0x54  // √  √   √        101/104
00120 #define KEYPAD_Asterisk             0x55  // √  √   √     84/101/104
00121 #define KEYPAD_Minus                0x56  // √  √   √     84/101/104
00122 #define KEYPAD_Plus                 0x57  // √  √   √     84/101/104
00123 #define KEYPAD_ENTER                0x58  // √  √   √        101/104
00124 #define KEYPAD_1_End                0x59  // √  √   √     84/101/104
00125 #define KEYPAD_2_DownArrow          0x5A  // √  √   √     84/101/104
00126 #define KEYPAD_3_PageDown           0x5B  // √  √   √     84/101/104
00127 #define KEYPAD_4_LeftArrow          0x5C  // √  √   √     84/101/104
00128 #define KEYPAD_5                    0x5D  // √  √   √     84/101/104
00129 #define KEYPAD_6_RightArrow         0x5E  // √  √   √     84/101/104
00130 #define KEYPAD_7_Home               0x5F  // √  √   √     84/101/104
00131 #define KEYPAD_8_UpArrow            0x60  // √  √   √     84/101/104
00132 #define KEYPAD_9_PageUp             0x61  // √  √   √     84/101/104
00133 #define KEYPAD_0_Insert             0x62  // √  √   √     84/101/104
00134 #define KEYPAD_Period_Delete        0x63  // √  √   √     84/101/104
00135 
00136 #define KEY_NonUS_Backslash_Pipe    0x64  // √  √   √     84/101/104
00137 #define KEY_Application             0x65  // √  -   √            104
00138 #define KEY_Power                   0x66  // -  √   √     -
00139 
00140 #define KEYPAD_Equal                0x67  // -  √   -     -
00141 
00142 #define KEY_F13                     0x68  // -  √   -     -
00143 #define KEY_F14                     0x69  // -  √   -     -
00144 #define KEY_F15                     0x6A  // -  √   -     -
00145 #define KEY_F16                     0x6B  // -  -   -     -
00146 #define KEY_F17                     0x6C  // -  -   -     -
00147 #define KEY_F18                     0x6D  // -  -   -     -
00148 #define KEY_F19                     0x6E  // -  -   -     -
00149 #define KEY_F20                     0x6F  // -  -   -     -
00150 #define KEY_F21                     0x70  // -  -   -     -
00151 #define KEY_F22                     0x71  // -  -   -     -
00152 #define KEY_F23                     0x72  // -  -   -     -
00153 #define KEY_F24                     0x73  // -  -   -     -
00154 #define KEY_Execute                 0x74  // -  -   √     -
00155 #define KEY_Help                    0x75  // -  -   √     -
00156 #define KEY_Menu                    0x76  // -  -   √     -
00157 #define KEY_Select                  0x77  // -  -   √     -
00158 #define KEY_Stop                    0x78  // -  -   √     -
00159 #define KEY_Again                   0x79  // -  -   √     -
00160 #define KEY_Undo                    0x7A  // -  -   √     -
00161 #define KEY_Cut                     0x7B  // -  -   √     -
00162 #define KEY_Copy                    0x7C  // -  -   √     -
00163 #define KEY_Paste                   0x7D  // -  -   √     -
00164 #define KEY_Find                    0x7E  // -  -   √     -
00165 #define KEY_Mute                    0x7F  // -  -   √     -
00166 #define KEY_VolumeUp                0x80  // -  -   √     -
00167 #define KEY_VolumeDown              0x81  // -  -   √     -
00168 #define KEY_LockingCapsLock         0x82  // -  -   √     -
00169 #define KEY_LockingNumLock          0x83  // -  -   √     -
00170 #define KEY_LockingScrollLock       0x84  // -  -   √     -
00171 
00172 #define KEYPAD_Comma                0x85  // -  -   -     -
00173 #define KEYPAD_EqualSign            0x86  // -  -   -     -
00174 
00175 #define KEY_International1          0x87  // -  -   -     -
00176 #define KEY_International2          0x88  // -  -   -     -
00177 #define KEY_International3          0x89  // -  -   -     -
00178 #define KEY_International4          0x8A  // -  -   -     -
00179 #define KEY_International5          0x8B  // -  -   -     -
00180 #define KEY_International6          0x8C  // -  -   -     -
00181 #define KEY_International7          0x8D  // -  -   -     -
00182 #define KEY_International8          0x8E  // -  -   -     -
00183 #define KEY_International9          0x8F  // -  -   -     -
00184 #define KEY_LANG1                   0x90  // -  -   -     -
00185 #define KEY_LANG2                   0x91  // -  -   -     -
00186 #define KEY_LANG3                   0x92  // -  -   -     -
00187 #define KEY_LANG4                   0x93  // -  -   -     -
00188 #define KEY_LANG5                   0x94  // -  -   -     -
00189 #define KEY_LANG6                   0x95  // -  -   -     -
00190 #define KEY_LANG7                   0x96  // -  -   -     -
00191 #define KEY_LANG8                   0x97  // -  -   -     -
00192 #define KEY_LANG9                   0x98  // -  -   -     -
00193 #define KEY_AlternateErase          0x99  // -  -   -     -
00194 #define KEY_SysReq_Attention        0x9A  // -  -   -     -
00195 #define KEY_Cancel                  0x9B  // -  -   -     -
00196 #define KEY_Clear                   0x9C  // -  -   -     -
00197 #define KEY_Prior                   0x9D  // -  -   -     -
00198 #define KEY_Return                  0x9E  // -  -   -     -
00199 #define KEY_Separator               0x9F  // -  -   -     -
00200 #define KEY_Out                     0xA0  // -  -   -     -
00201 #define KEY_Oper                    0xA1  // -  -   -     -
00202 #define KEY_Clear_Again             0xA2  // -  -   -     -
00203 #define KEY_CrSel_Props             0xA3  // -  -   -     -
00204 #define KEY_ExSel                   0xA4  // -  -   -     -
00205 
00206 //      (Reserved)            0xA5..0xAF  // -  -   -     -
00207 
00208 #define KEYPAD_00                   0xB0  // -  -   -     -
00209 #define KEYPAD_000                  0xB1  // -  -   -     -
00210 
00211 #define KEY_ThousandsSeparator      0xB2  // -  -   -     -
00212 #define KEY_DecimalSeparator        0xB3  // -  -   -     -
00213 #define KEY_CurrencyUnit            0xB4  // -  -   -     -
00214 #define KEY_CurrencySubunit         0xB5  // -  -   -     -
00215 
00216 #define KEYPAD_LeftParenthesis      0xB6  // -  -   -     -
00217 #define KEYPAD_RightParenthesis     0xB7  // -  -   -     -
00218 #define KEYPAD_LeftBrace            0xB8  // -  -   -     -
00219 #define KEYPAD_RightBrace           0xB9  // -  -   -     -
00220 
00221 #define KEYPAD_Tab                  0xBA  // -  -   -     -
00222 #define KEYPAD_Backspace            0xBB  // -  -   -     -
00223 #define KEYPAD_A                    0xBC  // -  -   -     -
00224 #define KEYPAD_B                    0xBD  // -  -   -     -
00225 #define KEYPAD_C                    0xBE  // -  -   -     -
00226 #define KEYPAD_D                    0xBF  // -  -   -     -
00227 #define KEYPAD_E                    0xC0  // -  -   -     -
00228 #define KEYPAD_F                    0xC1  // -  -   -     -
00229 #define KEYPAD_XOR                  0xC2  // -  -   -     -
00230 #define KEYPAD_Caret                0xC3  // -  -   -     -
00231 #define KEYPAD_Percent              0xC4  // -  -   -     -
00232 #define KEYPAD_LessThan             0xC5  // -  -   -     -
00233 #define KEYPAD_GreaterThan          0xC6  // -  -   -     -
00234 #define KEYPAD_Ampersand            0xC7  // -  -   -     -
00235 #define KEYPAD_AmpersandAmpersand   0xC8  // -  -   -     -
00236 #define KEYPAD_Pipe                 0xC9  // -  -   -     -
00237 #define KEYPAD_PipePipe             0xCA  // -  -   -     -
00238 #define KEYPAD_Colon                0xCB  // -  -   -     -
00239 #define KEYPAD_Pound                0xCC  // -  -   -     -
00240 #define KEYPAD_Space                0xCD  // -  -   -     -
00241 #define KEYPAD_At                   0xCE  // -  -   -     -
00242 #define KEYPAD_Exclamation          0xCF  // -  -   -     -
00243 #define KEYPAD_MemoryStore          0xD0  // -  -   -     -
00244 #define KEYPAD_MemoryRecall         0xD1  // -  -   -     -
00245 #define KEYPAD_MemoryClear          0xD2  // -  -   -     -
00246 #define KEYPAD_MemoryAdd            0xD3  // -  -   -     -
00247 #define KEYPAD_MemorySubtract       0xD4  // -  -   -     -
00248 #define KEYPAD_MemoryMultiply       0xD5  // -  -   -     -
00249 #define KEYPAD_MemoryDivide         0xD6  // -  -   -     -
00250 #define KEYPAD_PlusMinus            0xD7  // -  -   -     -
00251 #define KEYPAD_Clear                0xD8  // -  -   -     -
00252 #define KEYPAD_ClearEntry           0xD9  // -  -   -     -
00253 #define KEYPAD_Binary               0xDA  // -  -   -     -
00254 #define KEYPAD_Octal                0xDB  // -  -   -     -
00255 #define KEYPAD_Decimal              0xDC  // -  -   -     -
00256 #define KEYPAD_Hexadecimal          0xDD  // -  -   -     -
00257 
00258 //     (Reserved)             0xDE..0xDF  // -  -   -     -
00259 
00260 #define KEY_LeftControl             0xE0  // √  √   √     84/101/104
00261 #define KEY_LeftShift               0xE1  // √  √   √     84/101/104
00262 #define KEY_LeftAlt                 0xE2  // √  √   √     84/101/104
00263 #define KEY_LeftGUI                 0xE3  // √  √   √            104
00264 #define KEY_RightControl            0xE4  // √  √   √        101/104
00265 #define KEY_RightShift              0xE5  // √  √   √     84/101/104
00266 #define KEY_RightAlt                0xE6  // √  √   √        101/104
00267 #define KEY_RightGUI                0xE7  // √  √   √            104
00268 
00269 //     (Reserved)           0xE8..0xFFFF  // -  -   -     -
00270 
00271 // Media key codes are not real scan codes, they must be translated to a 16
00272 //  bit number by the consumer key key function
00273 #define MEDIAKEY_PLAY_PAUSE     0x00
00274 #define MEDIAKEY_STOP           0x01
00275 #define MEDIAKEY_PREV_TRACK     0x02
00276 #define MEDIAKEY_NEXT_TRACK     0x03
00277 #define MEDIAKEY_AUDIO_MUTE     0x04
00278 #define MEDIAKEY_AUDIO_VOL_UP   0x05
00279 #define MEDIAKEY_AUDIO_VOL_DOWN 0x06
00280 
00281 
00282 // ----------------------------------------------------------------------------
00283 // ----------------------------------------------------------------------------
00284 #endif
00285