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

Dependencies:   USBDevice mbed

Revision:
0:9fd3dad2dc25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hid_keys.h	Wed Apr 30 21:26:27 2014 +0000
@@ -0,0 +1,368 @@
+#ifndef USB_HID_KEYBOARD_H
+#define USB_HID_KEYBOARD_H
+
+/* Placed in the public domain by its author, Ian Harvey */
+
+/* Modifier key bit values */
+
+#define MODBIT_LEFT_CTRL        0x01
+#define MODBIT_LEFT_SHIFT       0x02
+#define MODBIT_LEFT_ALT         0x04
+#define MODBIT_LEFT_GUI         0x08
+#define MODBIT_RIGHT_CTRL       0x10
+#define MODBIT_RIGHT_SHIFT      0x20
+#define MODBIT_RIGHT_ALT        0x40
+#define MODBIT_RIGHT_GUI        0x80
+
+/* From USB HID Usage Tables Version 1.12, Section 10 */
+
+#define KEY_NONE            0
+#define KEY_ErrorRollOver   1
+#define KEY_POSTFail        2
+#define KEY_ErrorUndefined  3
+#define KEY_A   4
+#define KEY_B   5
+#define KEY_C   6
+#define KEY_D   7
+#define KEY_E   8
+#define KEY_F   9
+#define KEY_G   10
+#define KEY_H   11
+#define KEY_I   12
+#define KEY_J   13
+#define KEY_K   14
+#define KEY_L   15
+#define KEY_M   16
+#define KEY_N   17
+#define KEY_O   18
+#define KEY_P   19
+#define KEY_Q   20
+#define KEY_R   21
+#define KEY_S   22
+#define KEY_T   23
+#define KEY_U   24
+#define KEY_V   25
+#define KEY_W   26
+#define KEY_X   27
+#define KEY_Y   28
+#define KEY_Z   29
+#define KEY_1   30
+#define KEY_2   31
+#define KEY_3   32
+#define KEY_4   33
+#define KEY_5   34
+#define KEY_6   35
+#define KEY_7   36
+#define KEY_8   37
+#define KEY_9   38
+#define KEY_0   39
+
+#define KEY_ENTER       40
+#define KEY_ESC         41
+#define KEY_BACKSPACE   42
+#define KEY_TAB         43
+#define KEY_SPACE       44
+#define KEY_MINUS       45 /* And underscore */
+#define KEY_EQUALS      46 /* And plus */
+#define KEY_OPEN_SQUARE 47 /* And open-curly-bracket */
+#define KEY_CLOSE_SQUARE    48 /* And close-curly-bracket */
+#define KEY_BACKSLASH   49
+#define KEY_HASH_TILDE  50
+#define KEY_SEMICOLON   51
+#define KEY_SINGLE_QUOTE    52
+#define KEY_BACKTICK_TILDE  53
+#define KEY_COMMA       54 /* And less-than */
+#define KEY_PERIOD      55 /* And greater-than */
+#define KEY_SLASH       56 /* And question-mark */
+#define KEY_CAPS_LOCK   57
+
+#define KEY_F1          58
+#define KEY_F2          59
+#define KEY_F3          60
+#define KEY_F4          61
+#define KEY_F5          62
+#define KEY_F6          63
+#define KEY_F7          64
+#define KEY_F8          65
+#define KEY_F9          66
+#define KEY_F10         67
+#define KEY_F11         68
+#define KEY_F12         69
+
+#define KEY_PRINT_SCREEN    70
+#define KEY_SCROLL_LOCK     71
+#define KEY_PAUSE       72
+#define KEY_INSERT      73
+#define KEY_HOME        74
+#define KEY_PAGE_UP     75
+#define KEY_DELETE      76 /* i.e. forward delete */
+#define KEY_END         77
+#define KEY_PAGE_DOWN   78
+#define KEY_RIGHT_ARROW 79
+#define KEY_LEFT_ARROW  80
+#define KEY_DOWN_ARROW  81
+#define KEY_UP_ARROW    82
+
+/* TODO: keypad codes */
+
+#define KEY_LEFT_CTRL       0xE0
+#define KEY_LEFT_SHIFT      0xE1
+#define KEY_LEFT_ALT        0xE2
+#define KEY_LEFT_GUI        0xE3
+#define KEY_RIGHT_CTRL      0xE4
+#define KEY_RIGHT_SHIFT     0xE5
+#define KEY_RIGHT_ALT       0xE6
+#define KEY_RIGHT_GUI       0xE7
+
+#define KEY_MODIFIERS_START 0xE0
+#define KEY_MODIFIERS_END   0xE7
+#define IS_MODIFIER(key) ((key) >= KEY_MODIFIERS_START && (key) <= KEY_MODIFIERS_END)
+#define MODIFIER_BIT(key) (1 << ((key)-KEY_MODIFIERS_START))
+
+
+
+#endif /* USB_HID_KEYBOARD_H */
+#ifndef USB_HID_KEYBOARD_H
+#define USB_HID_KEYBOARD_H
+
+/* Modifier key bit values */
+
+#define MODBIT_LEFT_CTRL        0x01
+#define MODBIT_LEFT_SHIFT       0x02
+#define MODBIT_LEFT_ALT         0x04
+#define MODBIT_LEFT_GUI         0x08
+#define MODBIT_RIGHT_CTRL       0x10
+#define MODBIT_RIGHT_SHIFT      0x20
+#define MODBIT_RIGHT_ALT        0x40
+#define MODBIT_RIGHT_GUI        0x80
+
+/* From USB HID Usage Tables Version 1.12, Section 10 */
+
+#define KEY_NONE            0
+#define KEY_ErrorRollOver   1
+#define KEY_POSTFail        2
+#define KEY_ErrorUndefined  3
+#define KEY_A   4
+#define KEY_B   5
+#define KEY_C   6
+#define KEY_D   7
+#define KEY_E   8
+#define KEY_F   9
+#define KEY_G   10
+#define KEY_H   11
+#define KEY_I   12
+#define KEY_J   13
+#define KEY_K   14
+#define KEY_L   15
+#define KEY_M   16
+#define KEY_N   17
+#define KEY_O   18
+#define KEY_P   19
+#define KEY_Q   20
+#define KEY_R   21
+#define KEY_S   22
+#define KEY_T   23
+#define KEY_U   24
+#define KEY_V   25
+#define KEY_W   26
+#define KEY_X   27
+#define KEY_Y   28
+#define KEY_Z   29
+#define KEY_1   30
+#define KEY_2   31
+#define KEY_3   32
+#define KEY_4   33
+#define KEY_5   34
+#define KEY_6   35
+#define KEY_7   36
+#define KEY_8   37
+#define KEY_9   38
+#define KEY_0   39
+
+#define KEY_ENTER       40
+#define KEY_ESC         41
+#define KEY_BACKSPACE   42
+#define KEY_TAB         43
+#define KEY_SPACE       44
+#define KEY_MINUS       45 /* And underscore */
+#define KEY_EQUALS      46 /* And plus */
+#define KEY_OPEN_SQUARE 47 /* And open-curly-bracket */
+#define KEY_CLOSE_SQUARE    48 /* And close-curly-bracket */
+#define KEY_BACKSLASH   49
+#define KEY_HASH_TILDE  50
+#define KEY_SEMICOLON   51
+#define KEY_SINGLE_QUOTE    52
+#define KEY_BACKTICK_TILDE  53
+#define KEY_COMMA       54 /* And less-than */
+#define KEY_PERIOD      55 /* And greater-than */
+#define KEY_SLASH       56 /* And question-mark */
+#define KEY_CAPS_LOCK   57
+
+#define KEY_F1          58
+#define KEY_F2          59
+#define KEY_F3          60
+#define KEY_F4          61
+#define KEY_F5          62
+#define KEY_F6          63
+#define KEY_F7          64
+#define KEY_F8          65
+#define KEY_F9          66
+#define KEY_F10         67
+#define KEY_F11         68
+#define KEY_F12         69
+
+#define KEY_PRINT_SCREEN    70
+#define KEY_SCROLL_LOCK     71
+#define KEY_PAUSE       72
+#define KEY_INSERT      73
+#define KEY_HOME        74
+#define KEY_PAGE_UP     75
+#define KEY_DELETE      76 /* i.e. forward delete */
+#define KEY_END         77
+#define KEY_PAGE_DOWN   78
+#define KEY_RIGHT_ARROW 79
+#define KEY_LEFT_ARROW  80
+#define KEY_DOWN_ARROW  81
+#define KEY_UP_ARROW    82
+
+/* TODO: keypad codes */
+
+#define KEY_LEFT_CTRL       0xE0
+#define KEY_LEFT_SHIFT      0xE1
+#define KEY_LEFT_ALT        0xE2
+#define KEY_LEFT_GUI        0xE3
+#define KEY_RIGHT_CTRL      0xE4
+#define KEY_RIGHT_SHIFT     0xE5
+#define KEY_RIGHT_ALT       0xE6
+#define KEY_RIGHT_GUI       0xE7
+
+#define KEY_MODIFIERS_START 0xE0
+#define KEY_MODIFIERS_END   0xE7
+#define IS_MODIFIER(key) ((key) >= KEY_MODIFIERS_START && (key) <= KEY_MODIFIERS_END)
+#define MODIFIER_BIT(key) (1 << ((key)-KEY_MODIFIERS_START))
+
+
+
+#endif /* USB_HID_KEYBOARD_H */
+#ifndef USB_HID_KEYBOARD_H
+#define USB_HID_KEYBOARD_H
+
+/* Modifier key bit values */
+
+#define MODBIT_LEFT_CTRL        0x01
+#define MODBIT_LEFT_SHIFT       0x02
+#define MODBIT_LEFT_ALT         0x04
+#define MODBIT_LEFT_GUI         0x08
+#define MODBIT_RIGHT_CTRL       0x10
+#define MODBIT_RIGHT_SHIFT      0x20
+#define MODBIT_RIGHT_ALT        0x40
+#define MODBIT_RIGHT_GUI        0x80
+
+/* From USB HID Usage Tables Version 1.12, Section 10 */
+
+#define KEY_NONE            0
+#define KEY_ErrorRollOver   1
+#define KEY_POSTFail        2
+#define KEY_ErrorUndefined  3
+#define KEY_A   4
+#define KEY_B   5
+#define KEY_C   6
+#define KEY_D   7
+#define KEY_E   8
+#define KEY_F   9
+#define KEY_G   10
+#define KEY_H   11
+#define KEY_I   12
+#define KEY_J   13
+#define KEY_K   14
+#define KEY_L   15
+#define KEY_M   16
+#define KEY_N   17
+#define KEY_O   18
+#define KEY_P   19
+#define KEY_Q   20
+#define KEY_R   21
+#define KEY_S   22
+#define KEY_T   23
+#define KEY_U   24
+#define KEY_V   25
+#define KEY_W   26
+#define KEY_X   27
+#define KEY_Y   28
+#define KEY_Z   29
+#define KEY_1   30
+#define KEY_2   31
+#define KEY_3   32
+#define KEY_4   33
+#define KEY_5   34
+#define KEY_6   35
+#define KEY_7   36
+#define KEY_8   37
+#define KEY_9   38
+#define KEY_0   39
+
+#define KEY_ENTER       40
+#define KEY_ESC         41
+#define KEY_BACKSPACE   42
+#define KEY_TAB         43
+#define KEY_SPACE       44
+#define KEY_MINUS       45 /* And underscore */
+#define KEY_EQUALS      46 /* And plus */
+#define KEY_OPEN_SQUARE 47 /* And open-curly-bracket */
+#define KEY_CLOSE_SQUARE    48 /* And close-curly-bracket */
+#define KEY_BACKSLASH   49
+#define KEY_HASH_TILDE  50
+#define KEY_SEMICOLON   51
+#define KEY_SINGLE_QUOTE    52
+#define KEY_BACKTICK_TILDE  53
+#define KEY_COMMA       54 /* And less-than */
+#define KEY_PERIOD      55 /* And greater-than */
+#define KEY_SLASH       56 /* And question-mark */
+#define KEY_CAPS_LOCK   57
+
+#define KEY_F1          58
+#define KEY_F2          59
+#define KEY_F3          60
+#define KEY_F4          61
+#define KEY_F5          62
+#define KEY_F6          63
+#define KEY_F7          64
+#define KEY_F8          65
+#define KEY_F9          66
+#define KEY_F10         67
+#define KEY_F11         68
+#define KEY_F12         69
+
+#define KEY_PRINT_SCREEN    70
+#define KEY_SCROLL_LOCK     71
+#define KEY_PAUSE       72
+#define KEY_INSERT      73
+#define KEY_HOME        74
+#define KEY_PAGE_UP     75
+#define KEY_DELETE      76 /* i.e. forward delete */
+#define KEY_END         77
+#define KEY_PAGE_DOWN   78
+#define KEY_RIGHT_ARROW 79
+#define KEY_LEFT_ARROW  80
+#define KEY_DOWN_ARROW  81
+#define KEY_UP_ARROW    82
+
+/* TODO: keypad codes */
+
+#define KEY_LEFT_CTRL       0xE0
+#define KEY_LEFT_SHIFT      0xE1
+#define KEY_LEFT_ALT        0xE2
+#define KEY_LEFT_GUI        0xE3
+#define KEY_RIGHT_CTRL      0xE4
+#define KEY_RIGHT_SHIFT     0xE5
+#define KEY_RIGHT_ALT       0xE6
+#define KEY_RIGHT_GUI       0xE7
+
+#define KEY_MODIFIERS_START 0xE0
+#define KEY_MODIFIERS_END   0xE7
+#define IS_MODIFIER(key) ((key) >= KEY_MODIFIERS_START && (key) <= KEY_MODIFIERS_END)
+#define MODIFIER_BIT(key) (1 << ((key)-KEY_MODIFIERS_START))
+
+
+
+#endif /* USB_HID_KEYBOARD_H */