Acorn Electron keyboard scanner, turns an old Acorn Electron into a USB keyboard.

Dependencies:   USBDevice mbed

Committer:
IH
Date:
Wed Jun 18 07:42:47 2014 +0000
Revision:
2:9352b1232e6d
Parent:
0:9fd3dad2dc25
Head comment added about keyboard layouts

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IH 0:9fd3dad2dc25 1 #ifndef USB_HID_KEYBOARD_H
IH 0:9fd3dad2dc25 2 #define USB_HID_KEYBOARD_H
IH 0:9fd3dad2dc25 3
IH 0:9fd3dad2dc25 4 /* Placed in the public domain by its author, Ian Harvey */
IH 0:9fd3dad2dc25 5
IH 0:9fd3dad2dc25 6 /* Modifier key bit values */
IH 0:9fd3dad2dc25 7
IH 0:9fd3dad2dc25 8 #define MODBIT_LEFT_CTRL 0x01
IH 0:9fd3dad2dc25 9 #define MODBIT_LEFT_SHIFT 0x02
IH 0:9fd3dad2dc25 10 #define MODBIT_LEFT_ALT 0x04
IH 0:9fd3dad2dc25 11 #define MODBIT_LEFT_GUI 0x08
IH 0:9fd3dad2dc25 12 #define MODBIT_RIGHT_CTRL 0x10
IH 0:9fd3dad2dc25 13 #define MODBIT_RIGHT_SHIFT 0x20
IH 0:9fd3dad2dc25 14 #define MODBIT_RIGHT_ALT 0x40
IH 0:9fd3dad2dc25 15 #define MODBIT_RIGHT_GUI 0x80
IH 0:9fd3dad2dc25 16
IH 0:9fd3dad2dc25 17 /* From USB HID Usage Tables Version 1.12, Section 10 */
IH 0:9fd3dad2dc25 18
IH 0:9fd3dad2dc25 19 #define KEY_NONE 0
IH 0:9fd3dad2dc25 20 #define KEY_ErrorRollOver 1
IH 0:9fd3dad2dc25 21 #define KEY_POSTFail 2
IH 0:9fd3dad2dc25 22 #define KEY_ErrorUndefined 3
IH 0:9fd3dad2dc25 23 #define KEY_A 4
IH 0:9fd3dad2dc25 24 #define KEY_B 5
IH 0:9fd3dad2dc25 25 #define KEY_C 6
IH 0:9fd3dad2dc25 26 #define KEY_D 7
IH 0:9fd3dad2dc25 27 #define KEY_E 8
IH 0:9fd3dad2dc25 28 #define KEY_F 9
IH 0:9fd3dad2dc25 29 #define KEY_G 10
IH 0:9fd3dad2dc25 30 #define KEY_H 11
IH 0:9fd3dad2dc25 31 #define KEY_I 12
IH 0:9fd3dad2dc25 32 #define KEY_J 13
IH 0:9fd3dad2dc25 33 #define KEY_K 14
IH 0:9fd3dad2dc25 34 #define KEY_L 15
IH 0:9fd3dad2dc25 35 #define KEY_M 16
IH 0:9fd3dad2dc25 36 #define KEY_N 17
IH 0:9fd3dad2dc25 37 #define KEY_O 18
IH 0:9fd3dad2dc25 38 #define KEY_P 19
IH 0:9fd3dad2dc25 39 #define KEY_Q 20
IH 0:9fd3dad2dc25 40 #define KEY_R 21
IH 0:9fd3dad2dc25 41 #define KEY_S 22
IH 0:9fd3dad2dc25 42 #define KEY_T 23
IH 0:9fd3dad2dc25 43 #define KEY_U 24
IH 0:9fd3dad2dc25 44 #define KEY_V 25
IH 0:9fd3dad2dc25 45 #define KEY_W 26
IH 0:9fd3dad2dc25 46 #define KEY_X 27
IH 0:9fd3dad2dc25 47 #define KEY_Y 28
IH 0:9fd3dad2dc25 48 #define KEY_Z 29
IH 0:9fd3dad2dc25 49 #define KEY_1 30
IH 0:9fd3dad2dc25 50 #define KEY_2 31
IH 0:9fd3dad2dc25 51 #define KEY_3 32
IH 0:9fd3dad2dc25 52 #define KEY_4 33
IH 0:9fd3dad2dc25 53 #define KEY_5 34
IH 0:9fd3dad2dc25 54 #define KEY_6 35
IH 0:9fd3dad2dc25 55 #define KEY_7 36
IH 0:9fd3dad2dc25 56 #define KEY_8 37
IH 0:9fd3dad2dc25 57 #define KEY_9 38
IH 0:9fd3dad2dc25 58 #define KEY_0 39
IH 0:9fd3dad2dc25 59
IH 0:9fd3dad2dc25 60 #define KEY_ENTER 40
IH 0:9fd3dad2dc25 61 #define KEY_ESC 41
IH 0:9fd3dad2dc25 62 #define KEY_BACKSPACE 42
IH 0:9fd3dad2dc25 63 #define KEY_TAB 43
IH 0:9fd3dad2dc25 64 #define KEY_SPACE 44
IH 0:9fd3dad2dc25 65 #define KEY_MINUS 45 /* And underscore */
IH 0:9fd3dad2dc25 66 #define KEY_EQUALS 46 /* And plus */
IH 0:9fd3dad2dc25 67 #define KEY_OPEN_SQUARE 47 /* And open-curly-bracket */
IH 0:9fd3dad2dc25 68 #define KEY_CLOSE_SQUARE 48 /* And close-curly-bracket */
IH 0:9fd3dad2dc25 69 #define KEY_BACKSLASH 49
IH 0:9fd3dad2dc25 70 #define KEY_HASH_TILDE 50
IH 0:9fd3dad2dc25 71 #define KEY_SEMICOLON 51
IH 0:9fd3dad2dc25 72 #define KEY_SINGLE_QUOTE 52
IH 0:9fd3dad2dc25 73 #define KEY_BACKTICK_TILDE 53
IH 0:9fd3dad2dc25 74 #define KEY_COMMA 54 /* And less-than */
IH 0:9fd3dad2dc25 75 #define KEY_PERIOD 55 /* And greater-than */
IH 0:9fd3dad2dc25 76 #define KEY_SLASH 56 /* And question-mark */
IH 0:9fd3dad2dc25 77 #define KEY_CAPS_LOCK 57
IH 0:9fd3dad2dc25 78
IH 0:9fd3dad2dc25 79 #define KEY_F1 58
IH 0:9fd3dad2dc25 80 #define KEY_F2 59
IH 0:9fd3dad2dc25 81 #define KEY_F3 60
IH 0:9fd3dad2dc25 82 #define KEY_F4 61
IH 0:9fd3dad2dc25 83 #define KEY_F5 62
IH 0:9fd3dad2dc25 84 #define KEY_F6 63
IH 0:9fd3dad2dc25 85 #define KEY_F7 64
IH 0:9fd3dad2dc25 86 #define KEY_F8 65
IH 0:9fd3dad2dc25 87 #define KEY_F9 66
IH 0:9fd3dad2dc25 88 #define KEY_F10 67
IH 0:9fd3dad2dc25 89 #define KEY_F11 68
IH 0:9fd3dad2dc25 90 #define KEY_F12 69
IH 0:9fd3dad2dc25 91
IH 0:9fd3dad2dc25 92 #define KEY_PRINT_SCREEN 70
IH 0:9fd3dad2dc25 93 #define KEY_SCROLL_LOCK 71
IH 0:9fd3dad2dc25 94 #define KEY_PAUSE 72
IH 0:9fd3dad2dc25 95 #define KEY_INSERT 73
IH 0:9fd3dad2dc25 96 #define KEY_HOME 74
IH 0:9fd3dad2dc25 97 #define KEY_PAGE_UP 75
IH 0:9fd3dad2dc25 98 #define KEY_DELETE 76 /* i.e. forward delete */
IH 0:9fd3dad2dc25 99 #define KEY_END 77
IH 0:9fd3dad2dc25 100 #define KEY_PAGE_DOWN 78
IH 0:9fd3dad2dc25 101 #define KEY_RIGHT_ARROW 79
IH 0:9fd3dad2dc25 102 #define KEY_LEFT_ARROW 80
IH 0:9fd3dad2dc25 103 #define KEY_DOWN_ARROW 81
IH 0:9fd3dad2dc25 104 #define KEY_UP_ARROW 82
IH 0:9fd3dad2dc25 105
IH 0:9fd3dad2dc25 106 /* TODO: keypad codes */
IH 0:9fd3dad2dc25 107
IH 0:9fd3dad2dc25 108 #define KEY_LEFT_CTRL 0xE0
IH 0:9fd3dad2dc25 109 #define KEY_LEFT_SHIFT 0xE1
IH 0:9fd3dad2dc25 110 #define KEY_LEFT_ALT 0xE2
IH 0:9fd3dad2dc25 111 #define KEY_LEFT_GUI 0xE3
IH 0:9fd3dad2dc25 112 #define KEY_RIGHT_CTRL 0xE4
IH 0:9fd3dad2dc25 113 #define KEY_RIGHT_SHIFT 0xE5
IH 0:9fd3dad2dc25 114 #define KEY_RIGHT_ALT 0xE6
IH 0:9fd3dad2dc25 115 #define KEY_RIGHT_GUI 0xE7
IH 0:9fd3dad2dc25 116
IH 0:9fd3dad2dc25 117 #define KEY_MODIFIERS_START 0xE0
IH 0:9fd3dad2dc25 118 #define KEY_MODIFIERS_END 0xE7
IH 0:9fd3dad2dc25 119 #define IS_MODIFIER(key) ((key) >= KEY_MODIFIERS_START && (key) <= KEY_MODIFIERS_END)
IH 0:9fd3dad2dc25 120 #define MODIFIER_BIT(key) (1 << ((key)-KEY_MODIFIERS_START))
IH 0:9fd3dad2dc25 121
IH 0:9fd3dad2dc25 122
IH 0:9fd3dad2dc25 123
IH 0:9fd3dad2dc25 124 #endif /* USB_HID_KEYBOARD_H */
IH 0:9fd3dad2dc25 125 #ifndef USB_HID_KEYBOARD_H
IH 0:9fd3dad2dc25 126 #define USB_HID_KEYBOARD_H
IH 0:9fd3dad2dc25 127
IH 0:9fd3dad2dc25 128 /* Modifier key bit values */
IH 0:9fd3dad2dc25 129
IH 0:9fd3dad2dc25 130 #define MODBIT_LEFT_CTRL 0x01
IH 0:9fd3dad2dc25 131 #define MODBIT_LEFT_SHIFT 0x02
IH 0:9fd3dad2dc25 132 #define MODBIT_LEFT_ALT 0x04
IH 0:9fd3dad2dc25 133 #define MODBIT_LEFT_GUI 0x08
IH 0:9fd3dad2dc25 134 #define MODBIT_RIGHT_CTRL 0x10
IH 0:9fd3dad2dc25 135 #define MODBIT_RIGHT_SHIFT 0x20
IH 0:9fd3dad2dc25 136 #define MODBIT_RIGHT_ALT 0x40
IH 0:9fd3dad2dc25 137 #define MODBIT_RIGHT_GUI 0x80
IH 0:9fd3dad2dc25 138
IH 0:9fd3dad2dc25 139 /* From USB HID Usage Tables Version 1.12, Section 10 */
IH 0:9fd3dad2dc25 140
IH 0:9fd3dad2dc25 141 #define KEY_NONE 0
IH 0:9fd3dad2dc25 142 #define KEY_ErrorRollOver 1
IH 0:9fd3dad2dc25 143 #define KEY_POSTFail 2
IH 0:9fd3dad2dc25 144 #define KEY_ErrorUndefined 3
IH 0:9fd3dad2dc25 145 #define KEY_A 4
IH 0:9fd3dad2dc25 146 #define KEY_B 5
IH 0:9fd3dad2dc25 147 #define KEY_C 6
IH 0:9fd3dad2dc25 148 #define KEY_D 7
IH 0:9fd3dad2dc25 149 #define KEY_E 8
IH 0:9fd3dad2dc25 150 #define KEY_F 9
IH 0:9fd3dad2dc25 151 #define KEY_G 10
IH 0:9fd3dad2dc25 152 #define KEY_H 11
IH 0:9fd3dad2dc25 153 #define KEY_I 12
IH 0:9fd3dad2dc25 154 #define KEY_J 13
IH 0:9fd3dad2dc25 155 #define KEY_K 14
IH 0:9fd3dad2dc25 156 #define KEY_L 15
IH 0:9fd3dad2dc25 157 #define KEY_M 16
IH 0:9fd3dad2dc25 158 #define KEY_N 17
IH 0:9fd3dad2dc25 159 #define KEY_O 18
IH 0:9fd3dad2dc25 160 #define KEY_P 19
IH 0:9fd3dad2dc25 161 #define KEY_Q 20
IH 0:9fd3dad2dc25 162 #define KEY_R 21
IH 0:9fd3dad2dc25 163 #define KEY_S 22
IH 0:9fd3dad2dc25 164 #define KEY_T 23
IH 0:9fd3dad2dc25 165 #define KEY_U 24
IH 0:9fd3dad2dc25 166 #define KEY_V 25
IH 0:9fd3dad2dc25 167 #define KEY_W 26
IH 0:9fd3dad2dc25 168 #define KEY_X 27
IH 0:9fd3dad2dc25 169 #define KEY_Y 28
IH 0:9fd3dad2dc25 170 #define KEY_Z 29
IH 0:9fd3dad2dc25 171 #define KEY_1 30
IH 0:9fd3dad2dc25 172 #define KEY_2 31
IH 0:9fd3dad2dc25 173 #define KEY_3 32
IH 0:9fd3dad2dc25 174 #define KEY_4 33
IH 0:9fd3dad2dc25 175 #define KEY_5 34
IH 0:9fd3dad2dc25 176 #define KEY_6 35
IH 0:9fd3dad2dc25 177 #define KEY_7 36
IH 0:9fd3dad2dc25 178 #define KEY_8 37
IH 0:9fd3dad2dc25 179 #define KEY_9 38
IH 0:9fd3dad2dc25 180 #define KEY_0 39
IH 0:9fd3dad2dc25 181
IH 0:9fd3dad2dc25 182 #define KEY_ENTER 40
IH 0:9fd3dad2dc25 183 #define KEY_ESC 41
IH 0:9fd3dad2dc25 184 #define KEY_BACKSPACE 42
IH 0:9fd3dad2dc25 185 #define KEY_TAB 43
IH 0:9fd3dad2dc25 186 #define KEY_SPACE 44
IH 0:9fd3dad2dc25 187 #define KEY_MINUS 45 /* And underscore */
IH 0:9fd3dad2dc25 188 #define KEY_EQUALS 46 /* And plus */
IH 0:9fd3dad2dc25 189 #define KEY_OPEN_SQUARE 47 /* And open-curly-bracket */
IH 0:9fd3dad2dc25 190 #define KEY_CLOSE_SQUARE 48 /* And close-curly-bracket */
IH 0:9fd3dad2dc25 191 #define KEY_BACKSLASH 49
IH 0:9fd3dad2dc25 192 #define KEY_HASH_TILDE 50
IH 0:9fd3dad2dc25 193 #define KEY_SEMICOLON 51
IH 0:9fd3dad2dc25 194 #define KEY_SINGLE_QUOTE 52
IH 0:9fd3dad2dc25 195 #define KEY_BACKTICK_TILDE 53
IH 0:9fd3dad2dc25 196 #define KEY_COMMA 54 /* And less-than */
IH 0:9fd3dad2dc25 197 #define KEY_PERIOD 55 /* And greater-than */
IH 0:9fd3dad2dc25 198 #define KEY_SLASH 56 /* And question-mark */
IH 0:9fd3dad2dc25 199 #define KEY_CAPS_LOCK 57
IH 0:9fd3dad2dc25 200
IH 0:9fd3dad2dc25 201 #define KEY_F1 58
IH 0:9fd3dad2dc25 202 #define KEY_F2 59
IH 0:9fd3dad2dc25 203 #define KEY_F3 60
IH 0:9fd3dad2dc25 204 #define KEY_F4 61
IH 0:9fd3dad2dc25 205 #define KEY_F5 62
IH 0:9fd3dad2dc25 206 #define KEY_F6 63
IH 0:9fd3dad2dc25 207 #define KEY_F7 64
IH 0:9fd3dad2dc25 208 #define KEY_F8 65
IH 0:9fd3dad2dc25 209 #define KEY_F9 66
IH 0:9fd3dad2dc25 210 #define KEY_F10 67
IH 0:9fd3dad2dc25 211 #define KEY_F11 68
IH 0:9fd3dad2dc25 212 #define KEY_F12 69
IH 0:9fd3dad2dc25 213
IH 0:9fd3dad2dc25 214 #define KEY_PRINT_SCREEN 70
IH 0:9fd3dad2dc25 215 #define KEY_SCROLL_LOCK 71
IH 0:9fd3dad2dc25 216 #define KEY_PAUSE 72
IH 0:9fd3dad2dc25 217 #define KEY_INSERT 73
IH 0:9fd3dad2dc25 218 #define KEY_HOME 74
IH 0:9fd3dad2dc25 219 #define KEY_PAGE_UP 75
IH 0:9fd3dad2dc25 220 #define KEY_DELETE 76 /* i.e. forward delete */
IH 0:9fd3dad2dc25 221 #define KEY_END 77
IH 0:9fd3dad2dc25 222 #define KEY_PAGE_DOWN 78
IH 0:9fd3dad2dc25 223 #define KEY_RIGHT_ARROW 79
IH 0:9fd3dad2dc25 224 #define KEY_LEFT_ARROW 80
IH 0:9fd3dad2dc25 225 #define KEY_DOWN_ARROW 81
IH 0:9fd3dad2dc25 226 #define KEY_UP_ARROW 82
IH 0:9fd3dad2dc25 227
IH 0:9fd3dad2dc25 228 /* TODO: keypad codes */
IH 0:9fd3dad2dc25 229
IH 0:9fd3dad2dc25 230 #define KEY_LEFT_CTRL 0xE0
IH 0:9fd3dad2dc25 231 #define KEY_LEFT_SHIFT 0xE1
IH 0:9fd3dad2dc25 232 #define KEY_LEFT_ALT 0xE2
IH 0:9fd3dad2dc25 233 #define KEY_LEFT_GUI 0xE3
IH 0:9fd3dad2dc25 234 #define KEY_RIGHT_CTRL 0xE4
IH 0:9fd3dad2dc25 235 #define KEY_RIGHT_SHIFT 0xE5
IH 0:9fd3dad2dc25 236 #define KEY_RIGHT_ALT 0xE6
IH 0:9fd3dad2dc25 237 #define KEY_RIGHT_GUI 0xE7
IH 0:9fd3dad2dc25 238
IH 0:9fd3dad2dc25 239 #define KEY_MODIFIERS_START 0xE0
IH 0:9fd3dad2dc25 240 #define KEY_MODIFIERS_END 0xE7
IH 0:9fd3dad2dc25 241 #define IS_MODIFIER(key) ((key) >= KEY_MODIFIERS_START && (key) <= KEY_MODIFIERS_END)
IH 0:9fd3dad2dc25 242 #define MODIFIER_BIT(key) (1 << ((key)-KEY_MODIFIERS_START))
IH 0:9fd3dad2dc25 243
IH 0:9fd3dad2dc25 244
IH 0:9fd3dad2dc25 245
IH 0:9fd3dad2dc25 246 #endif /* USB_HID_KEYBOARD_H */
IH 0:9fd3dad2dc25 247 #ifndef USB_HID_KEYBOARD_H
IH 0:9fd3dad2dc25 248 #define USB_HID_KEYBOARD_H
IH 0:9fd3dad2dc25 249
IH 0:9fd3dad2dc25 250 /* Modifier key bit values */
IH 0:9fd3dad2dc25 251
IH 0:9fd3dad2dc25 252 #define MODBIT_LEFT_CTRL 0x01
IH 0:9fd3dad2dc25 253 #define MODBIT_LEFT_SHIFT 0x02
IH 0:9fd3dad2dc25 254 #define MODBIT_LEFT_ALT 0x04
IH 0:9fd3dad2dc25 255 #define MODBIT_LEFT_GUI 0x08
IH 0:9fd3dad2dc25 256 #define MODBIT_RIGHT_CTRL 0x10
IH 0:9fd3dad2dc25 257 #define MODBIT_RIGHT_SHIFT 0x20
IH 0:9fd3dad2dc25 258 #define MODBIT_RIGHT_ALT 0x40
IH 0:9fd3dad2dc25 259 #define MODBIT_RIGHT_GUI 0x80
IH 0:9fd3dad2dc25 260
IH 0:9fd3dad2dc25 261 /* From USB HID Usage Tables Version 1.12, Section 10 */
IH 0:9fd3dad2dc25 262
IH 0:9fd3dad2dc25 263 #define KEY_NONE 0
IH 0:9fd3dad2dc25 264 #define KEY_ErrorRollOver 1
IH 0:9fd3dad2dc25 265 #define KEY_POSTFail 2
IH 0:9fd3dad2dc25 266 #define KEY_ErrorUndefined 3
IH 0:9fd3dad2dc25 267 #define KEY_A 4
IH 0:9fd3dad2dc25 268 #define KEY_B 5
IH 0:9fd3dad2dc25 269 #define KEY_C 6
IH 0:9fd3dad2dc25 270 #define KEY_D 7
IH 0:9fd3dad2dc25 271 #define KEY_E 8
IH 0:9fd3dad2dc25 272 #define KEY_F 9
IH 0:9fd3dad2dc25 273 #define KEY_G 10
IH 0:9fd3dad2dc25 274 #define KEY_H 11
IH 0:9fd3dad2dc25 275 #define KEY_I 12
IH 0:9fd3dad2dc25 276 #define KEY_J 13
IH 0:9fd3dad2dc25 277 #define KEY_K 14
IH 0:9fd3dad2dc25 278 #define KEY_L 15
IH 0:9fd3dad2dc25 279 #define KEY_M 16
IH 0:9fd3dad2dc25 280 #define KEY_N 17
IH 0:9fd3dad2dc25 281 #define KEY_O 18
IH 0:9fd3dad2dc25 282 #define KEY_P 19
IH 0:9fd3dad2dc25 283 #define KEY_Q 20
IH 0:9fd3dad2dc25 284 #define KEY_R 21
IH 0:9fd3dad2dc25 285 #define KEY_S 22
IH 0:9fd3dad2dc25 286 #define KEY_T 23
IH 0:9fd3dad2dc25 287 #define KEY_U 24
IH 0:9fd3dad2dc25 288 #define KEY_V 25
IH 0:9fd3dad2dc25 289 #define KEY_W 26
IH 0:9fd3dad2dc25 290 #define KEY_X 27
IH 0:9fd3dad2dc25 291 #define KEY_Y 28
IH 0:9fd3dad2dc25 292 #define KEY_Z 29
IH 0:9fd3dad2dc25 293 #define KEY_1 30
IH 0:9fd3dad2dc25 294 #define KEY_2 31
IH 0:9fd3dad2dc25 295 #define KEY_3 32
IH 0:9fd3dad2dc25 296 #define KEY_4 33
IH 0:9fd3dad2dc25 297 #define KEY_5 34
IH 0:9fd3dad2dc25 298 #define KEY_6 35
IH 0:9fd3dad2dc25 299 #define KEY_7 36
IH 0:9fd3dad2dc25 300 #define KEY_8 37
IH 0:9fd3dad2dc25 301 #define KEY_9 38
IH 0:9fd3dad2dc25 302 #define KEY_0 39
IH 0:9fd3dad2dc25 303
IH 0:9fd3dad2dc25 304 #define KEY_ENTER 40
IH 0:9fd3dad2dc25 305 #define KEY_ESC 41
IH 0:9fd3dad2dc25 306 #define KEY_BACKSPACE 42
IH 0:9fd3dad2dc25 307 #define KEY_TAB 43
IH 0:9fd3dad2dc25 308 #define KEY_SPACE 44
IH 0:9fd3dad2dc25 309 #define KEY_MINUS 45 /* And underscore */
IH 0:9fd3dad2dc25 310 #define KEY_EQUALS 46 /* And plus */
IH 0:9fd3dad2dc25 311 #define KEY_OPEN_SQUARE 47 /* And open-curly-bracket */
IH 0:9fd3dad2dc25 312 #define KEY_CLOSE_SQUARE 48 /* And close-curly-bracket */
IH 0:9fd3dad2dc25 313 #define KEY_BACKSLASH 49
IH 0:9fd3dad2dc25 314 #define KEY_HASH_TILDE 50
IH 0:9fd3dad2dc25 315 #define KEY_SEMICOLON 51
IH 0:9fd3dad2dc25 316 #define KEY_SINGLE_QUOTE 52
IH 0:9fd3dad2dc25 317 #define KEY_BACKTICK_TILDE 53
IH 0:9fd3dad2dc25 318 #define KEY_COMMA 54 /* And less-than */
IH 0:9fd3dad2dc25 319 #define KEY_PERIOD 55 /* And greater-than */
IH 0:9fd3dad2dc25 320 #define KEY_SLASH 56 /* And question-mark */
IH 0:9fd3dad2dc25 321 #define KEY_CAPS_LOCK 57
IH 0:9fd3dad2dc25 322
IH 0:9fd3dad2dc25 323 #define KEY_F1 58
IH 0:9fd3dad2dc25 324 #define KEY_F2 59
IH 0:9fd3dad2dc25 325 #define KEY_F3 60
IH 0:9fd3dad2dc25 326 #define KEY_F4 61
IH 0:9fd3dad2dc25 327 #define KEY_F5 62
IH 0:9fd3dad2dc25 328 #define KEY_F6 63
IH 0:9fd3dad2dc25 329 #define KEY_F7 64
IH 0:9fd3dad2dc25 330 #define KEY_F8 65
IH 0:9fd3dad2dc25 331 #define KEY_F9 66
IH 0:9fd3dad2dc25 332 #define KEY_F10 67
IH 0:9fd3dad2dc25 333 #define KEY_F11 68
IH 0:9fd3dad2dc25 334 #define KEY_F12 69
IH 0:9fd3dad2dc25 335
IH 0:9fd3dad2dc25 336 #define KEY_PRINT_SCREEN 70
IH 0:9fd3dad2dc25 337 #define KEY_SCROLL_LOCK 71
IH 0:9fd3dad2dc25 338 #define KEY_PAUSE 72
IH 0:9fd3dad2dc25 339 #define KEY_INSERT 73
IH 0:9fd3dad2dc25 340 #define KEY_HOME 74
IH 0:9fd3dad2dc25 341 #define KEY_PAGE_UP 75
IH 0:9fd3dad2dc25 342 #define KEY_DELETE 76 /* i.e. forward delete */
IH 0:9fd3dad2dc25 343 #define KEY_END 77
IH 0:9fd3dad2dc25 344 #define KEY_PAGE_DOWN 78
IH 0:9fd3dad2dc25 345 #define KEY_RIGHT_ARROW 79
IH 0:9fd3dad2dc25 346 #define KEY_LEFT_ARROW 80
IH 0:9fd3dad2dc25 347 #define KEY_DOWN_ARROW 81
IH 0:9fd3dad2dc25 348 #define KEY_UP_ARROW 82
IH 0:9fd3dad2dc25 349
IH 0:9fd3dad2dc25 350 /* TODO: keypad codes */
IH 0:9fd3dad2dc25 351
IH 0:9fd3dad2dc25 352 #define KEY_LEFT_CTRL 0xE0
IH 0:9fd3dad2dc25 353 #define KEY_LEFT_SHIFT 0xE1
IH 0:9fd3dad2dc25 354 #define KEY_LEFT_ALT 0xE2
IH 0:9fd3dad2dc25 355 #define KEY_LEFT_GUI 0xE3
IH 0:9fd3dad2dc25 356 #define KEY_RIGHT_CTRL 0xE4
IH 0:9fd3dad2dc25 357 #define KEY_RIGHT_SHIFT 0xE5
IH 0:9fd3dad2dc25 358 #define KEY_RIGHT_ALT 0xE6
IH 0:9fd3dad2dc25 359 #define KEY_RIGHT_GUI 0xE7
IH 0:9fd3dad2dc25 360
IH 0:9fd3dad2dc25 361 #define KEY_MODIFIERS_START 0xE0
IH 0:9fd3dad2dc25 362 #define KEY_MODIFIERS_END 0xE7
IH 0:9fd3dad2dc25 363 #define IS_MODIFIER(key) ((key) >= KEY_MODIFIERS_START && (key) <= KEY_MODIFIERS_END)
IH 0:9fd3dad2dc25 364 #define MODIFIER_BIT(key) (1 << ((key)-KEY_MODIFIERS_START))
IH 0:9fd3dad2dc25 365
IH 0:9fd3dad2dc25 366
IH 0:9fd3dad2dc25 367
IH 0:9fd3dad2dc25 368 #endif /* USB_HID_KEYBOARD_H */