Acts a USB HID keyboard, and socket server. Forwards characters from TCP ip socket to keyboard

Dependencies:   mbed EthernetNetIf

Committer:
henryeherman
Date:
Fri Dec 14 01:15:44 2018 +0000
Revision:
1:d866a9d23e49
Parent:
0:beb124b81ef5
init

Who changed what in which revision?

UserRevisionLine numberNew contents of line
henryeherman 0:beb124b81ef5 1 /* asciihid.h */
henryeherman 0:beb124b81ef5 2 /* ASCII to HID Keyboard lookup table */
henryeherman 0:beb124b81ef5 3 /* Copyright (c) Phil Wright 2008 */
henryeherman 0:beb124b81ef5 4
henryeherman 0:beb124b81ef5 5 #ifndef HIDTABLE_H
henryeherman 0:beb124b81ef5 6 #define HIDTABLE_H
henryeherman 0:beb124b81ef5 7
henryeherman 0:beb124b81ef5 8 /* Default is UK keyboard layout */
henryeherman 0:beb124b81ef5 9 /* #define US_KEYBOARD */
henryeherman 0:beb124b81ef5 10
henryeherman 0:beb124b81ef5 11 /* Modifiers */
henryeherman 0:beb124b81ef5 12 #define SHIFT (1<<1)
henryeherman 0:beb124b81ef5 13
henryeherman 0:beb124b81ef5 14 typedef struct {
henryeherman 0:beb124b81ef5 15 unsigned char usage;
henryeherman 0:beb124b81ef5 16 unsigned char modifier;
henryeherman 0:beb124b81ef5 17 } KEYMAP;
henryeherman 0:beb124b81ef5 18
henryeherman 0:beb124b81ef5 19 #ifdef US_KEYBOARD
henryeherman 0:beb124b81ef5 20 /* US keyboard (as HID standard) */
henryeherman 0:beb124b81ef5 21 #define KEYMAP_SIZE (128)
henryeherman 0:beb124b81ef5 22 const KEYMAP keymap[KEYMAP_SIZE] = {
henryeherman 0:beb124b81ef5 23 {0, 0}, /* NUL */
henryeherman 0:beb124b81ef5 24 {0, 0}, /* SOH */
henryeherman 0:beb124b81ef5 25 {0, 0}, /* STX */
henryeherman 0:beb124b81ef5 26 {0, 0}, /* ETX */
henryeherman 0:beb124b81ef5 27 {0, 0}, /* EOT */
henryeherman 0:beb124b81ef5 28 {0, 0}, /* ENQ */
henryeherman 0:beb124b81ef5 29 {0, 0}, /* ACK */
henryeherman 0:beb124b81ef5 30 {0, 0}, /* BEL */
henryeherman 0:beb124b81ef5 31 {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */
henryeherman 0:beb124b81ef5 32 {0x2b, 0}, /* TAB */ /* Keyboard Tab */
henryeherman 0:beb124b81ef5 33 {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */
henryeherman 0:beb124b81ef5 34 {0, 0}, /* VT */
henryeherman 0:beb124b81ef5 35 {0, 0}, /* FF */
henryeherman 0:beb124b81ef5 36 {0, 0}, /* CR */
henryeherman 0:beb124b81ef5 37 {0, 0}, /* SO */
henryeherman 0:beb124b81ef5 38 {0, 0}, /* SI */
henryeherman 0:beb124b81ef5 39 {0, 0}, /* DEL */
henryeherman 0:beb124b81ef5 40 {0, 0}, /* DC1 */
henryeherman 0:beb124b81ef5 41 {0, 0}, /* DC2 */
henryeherman 0:beb124b81ef5 42 {0, 0}, /* DC3 */
henryeherman 0:beb124b81ef5 43 {0, 0}, /* DC4 */
henryeherman 0:beb124b81ef5 44 {0, 0}, /* NAK */
henryeherman 0:beb124b81ef5 45 {0, 0}, /* SYN */
henryeherman 0:beb124b81ef5 46 {0, 0}, /* ETB */
henryeherman 0:beb124b81ef5 47 {0, 0}, /* CAN */
henryeherman 0:beb124b81ef5 48 {0, 0}, /* EM */
henryeherman 0:beb124b81ef5 49 {0, 0}, /* SUB */
henryeherman 0:beb124b81ef5 50 {0, 0}, /* ESC */
henryeherman 0:beb124b81ef5 51 {0, 0}, /* FS */
henryeherman 0:beb124b81ef5 52 {0, 0}, /* GS */
henryeherman 0:beb124b81ef5 53 {0, 0}, /* RS */
henryeherman 0:beb124b81ef5 54 {0, 0}, /* US */
henryeherman 0:beb124b81ef5 55 {0x2c, 0}, /* */
henryeherman 0:beb124b81ef5 56 {0x1e, SHIFT}, /* ! */
henryeherman 0:beb124b81ef5 57 {0x34, SHIFT}, /* " */
henryeherman 0:beb124b81ef5 58 {0x20, SHIFT}, /* # */
henryeherman 0:beb124b81ef5 59 {0x21, SHIFT}, /* $ */
henryeherman 0:beb124b81ef5 60 {0x22, SHIFT}, /* % */
henryeherman 0:beb124b81ef5 61 {0x24, SHIFT}, /* & */
henryeherman 0:beb124b81ef5 62 {0x34, 0}, /* ' */
henryeherman 0:beb124b81ef5 63 {0x26, SHIFT}, /* ( */
henryeherman 0:beb124b81ef5 64 {0x27, SHIFT}, /* ) */
henryeherman 0:beb124b81ef5 65 {0x25, SHIFT}, /* * */
henryeherman 0:beb124b81ef5 66 {0x2e, SHIFT}, /* + */
henryeherman 0:beb124b81ef5 67 {0x36, 0}, /* , */
henryeherman 0:beb124b81ef5 68 {0x2d, 0}, /* - */
henryeherman 0:beb124b81ef5 69 {0x37, 0}, /* . */
henryeherman 0:beb124b81ef5 70 {0x38, 0}, /* / */
henryeherman 0:beb124b81ef5 71 {0x27, 0}, /* 0 */
henryeherman 0:beb124b81ef5 72 {0x1e, 0}, /* 1 */
henryeherman 0:beb124b81ef5 73 {0x1f, 0}, /* 2 */
henryeherman 0:beb124b81ef5 74 {0x20, 0}, /* 3 */
henryeherman 0:beb124b81ef5 75 {0x21, 0}, /* 4 */
henryeherman 0:beb124b81ef5 76 {0x22, 0}, /* 5 */
henryeherman 0:beb124b81ef5 77 {0x23, 0}, /* 6 */
henryeherman 0:beb124b81ef5 78 {0x24, 0}, /* 7 */
henryeherman 0:beb124b81ef5 79 {0x25, 0}, /* 8 */
henryeherman 0:beb124b81ef5 80 {0x26, 0}, /* 9 */
henryeherman 0:beb124b81ef5 81 {0x33, SHIFT}, /* : */
henryeherman 0:beb124b81ef5 82 {0x33, 0}, /* ; */
henryeherman 0:beb124b81ef5 83 {0x36, SHIFT}, /* < */
henryeherman 0:beb124b81ef5 84 {0x2e, 0}, /* = */
henryeherman 0:beb124b81ef5 85 {0x37, SHIFT}, /* > */
henryeherman 0:beb124b81ef5 86 {0x38, SHIFT}, /* ? */
henryeherman 0:beb124b81ef5 87 {0x1f, SHIFT}, /* @ */
henryeherman 0:beb124b81ef5 88 {0x04, SHIFT}, /* A */
henryeherman 0:beb124b81ef5 89 {0x05, SHIFT}, /* B */
henryeherman 0:beb124b81ef5 90 {0x06, SHIFT}, /* C */
henryeherman 0:beb124b81ef5 91 {0x07, SHIFT}, /* D */
henryeherman 0:beb124b81ef5 92 {0x08, SHIFT}, /* E */
henryeherman 0:beb124b81ef5 93 {0x09, SHIFT}, /* F */
henryeherman 0:beb124b81ef5 94 {0x0a, SHIFT}, /* G */
henryeherman 0:beb124b81ef5 95 {0x0b, SHIFT}, /* H */
henryeherman 0:beb124b81ef5 96 {0x0c, SHIFT}, /* I */
henryeherman 0:beb124b81ef5 97 {0x0d, SHIFT}, /* J */
henryeherman 0:beb124b81ef5 98 {0x0e, SHIFT}, /* K */
henryeherman 0:beb124b81ef5 99 {0x0f, SHIFT}, /* L */
henryeherman 0:beb124b81ef5 100 {0x10, SHIFT}, /* M */
henryeherman 0:beb124b81ef5 101 {0x11, SHIFT}, /* N */
henryeherman 0:beb124b81ef5 102 {0x12, SHIFT}, /* O */
henryeherman 0:beb124b81ef5 103 {0x13, SHIFT}, /* P */
henryeherman 0:beb124b81ef5 104 {0x14, SHIFT}, /* Q */
henryeherman 0:beb124b81ef5 105 {0x15, SHIFT}, /* R */
henryeherman 0:beb124b81ef5 106 {0x16, SHIFT}, /* S */
henryeherman 0:beb124b81ef5 107 {0x17, SHIFT}, /* T */
henryeherman 0:beb124b81ef5 108 {0x18, SHIFT}, /* U */
henryeherman 0:beb124b81ef5 109 {0x19, SHIFT}, /* V */
henryeherman 0:beb124b81ef5 110 {0x1a, SHIFT}, /* W */
henryeherman 0:beb124b81ef5 111 {0x1b, SHIFT}, /* X */
henryeherman 0:beb124b81ef5 112 {0x1c, SHIFT}, /* Y */
henryeherman 0:beb124b81ef5 113 {0x1d, SHIFT}, /* Z */
henryeherman 0:beb124b81ef5 114 {0x2f, 0}, /* [ */
henryeherman 0:beb124b81ef5 115 {0x31, 0}, /* \ */
henryeherman 0:beb124b81ef5 116 {0x30, 0}, /* ] */
henryeherman 0:beb124b81ef5 117 {0x23, SHIFT}, /* ^ */
henryeherman 0:beb124b81ef5 118 {0x2d, SHIFT}, /* _ */
henryeherman 0:beb124b81ef5 119 {0x35, 0}, /* ` */
henryeherman 0:beb124b81ef5 120 {0x04, 0}, /* a */
henryeherman 0:beb124b81ef5 121 {0x05, 0}, /* b */
henryeherman 0:beb124b81ef5 122 {0x06, 0}, /* c */
henryeherman 0:beb124b81ef5 123 {0x07, 0}, /* d */
henryeherman 0:beb124b81ef5 124 {0x08, 0}, /* e */
henryeherman 0:beb124b81ef5 125 {0x09, 0}, /* f */
henryeherman 0:beb124b81ef5 126 {0x0a, 0}, /* g */
henryeherman 0:beb124b81ef5 127 {0x0b, 0}, /* h */
henryeherman 0:beb124b81ef5 128 {0x0c, 0}, /* i */
henryeherman 0:beb124b81ef5 129 {0x0d, 0}, /* j */
henryeherman 0:beb124b81ef5 130 {0x0e, 0}, /* k */
henryeherman 0:beb124b81ef5 131 {0x0f, 0}, /* l */
henryeherman 0:beb124b81ef5 132 {0x10, 0}, /* m */
henryeherman 0:beb124b81ef5 133 {0x11, 0}, /* n */
henryeherman 0:beb124b81ef5 134 {0x12, 0}, /* o */
henryeherman 0:beb124b81ef5 135 {0x13, 0}, /* p */
henryeherman 0:beb124b81ef5 136 {0x14, 0}, /* q */
henryeherman 0:beb124b81ef5 137 {0x15, 0}, /* r */
henryeherman 0:beb124b81ef5 138 {0x16, 0}, /* s */
henryeherman 0:beb124b81ef5 139 {0x17, 0}, /* t */
henryeherman 0:beb124b81ef5 140 {0x18, 0}, /* u */
henryeherman 0:beb124b81ef5 141 {0x19, 0}, /* v */
henryeherman 0:beb124b81ef5 142 {0x1a, 0}, /* w */
henryeherman 0:beb124b81ef5 143 {0x1b, 0}, /* x */
henryeherman 0:beb124b81ef5 144 {0x1c, 0}, /* y */
henryeherman 0:beb124b81ef5 145 {0x1d, 0}, /* z */
henryeherman 0:beb124b81ef5 146 {0x2f, SHIFT}, /* { */
henryeherman 0:beb124b81ef5 147 {0x31, SHIFT}, /* | */
henryeherman 0:beb124b81ef5 148 {0x30, SHIFT}, /* } */
henryeherman 0:beb124b81ef5 149 {0x35, SHIFT}, /* ~ */
henryeherman 0:beb124b81ef5 150 {0,0}, /* DEL */
henryeherman 0:beb124b81ef5 151 };
henryeherman 0:beb124b81ef5 152
henryeherman 0:beb124b81ef5 153 #else
henryeherman 0:beb124b81ef5 154 /* UK keyboard */
henryeherman 0:beb124b81ef5 155 #define KEYMAP_SIZE (128)
henryeherman 0:beb124b81ef5 156 const KEYMAP keymap[KEYMAP_SIZE] = {
henryeherman 0:beb124b81ef5 157 {0, 0}, /* NUL */
henryeherman 0:beb124b81ef5 158 {0, 0}, /* SOH */
henryeherman 0:beb124b81ef5 159 {0, 0}, /* STX */
henryeherman 0:beb124b81ef5 160 {0, 0}, /* ETX */
henryeherman 0:beb124b81ef5 161 {0, 0}, /* EOT */
henryeherman 0:beb124b81ef5 162 {0, 0}, /* ENQ */
henryeherman 0:beb124b81ef5 163 {0, 0}, /* ACK */
henryeherman 0:beb124b81ef5 164 {0, 0}, /* BEL */
henryeherman 0:beb124b81ef5 165 {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */
henryeherman 0:beb124b81ef5 166 {0x2b, 0}, /* TAB */ /* Keyboard Tab */
henryeherman 0:beb124b81ef5 167 {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */
henryeherman 0:beb124b81ef5 168 {0, 0}, /* VT */
henryeherman 0:beb124b81ef5 169 {0, 0}, /* FF */
henryeherman 0:beb124b81ef5 170 {0, 0}, /* CR */
henryeherman 0:beb124b81ef5 171 {0, 0}, /* SO */
henryeherman 0:beb124b81ef5 172 {0, 0}, /* SI */
henryeherman 0:beb124b81ef5 173 {0, 0}, /* DEL */
henryeherman 0:beb124b81ef5 174 {0, 0}, /* DC1 */
henryeherman 0:beb124b81ef5 175 {0, 0}, /* DC2 */
henryeherman 0:beb124b81ef5 176 {0, 0}, /* DC3 */
henryeherman 0:beb124b81ef5 177 {0, 0}, /* DC4 */
henryeherman 0:beb124b81ef5 178 {0, 0}, /* NAK */
henryeherman 0:beb124b81ef5 179 {0, 0}, /* SYN */
henryeherman 0:beb124b81ef5 180 {0, 0}, /* ETB */
henryeherman 0:beb124b81ef5 181 {0, 0}, /* CAN */
henryeherman 0:beb124b81ef5 182 {0, 0}, /* EM */
henryeherman 0:beb124b81ef5 183 {0, 0}, /* SUB */
henryeherman 0:beb124b81ef5 184 {0, 0}, /* ESC */
henryeherman 0:beb124b81ef5 185 {0, 0}, /* FS */
henryeherman 0:beb124b81ef5 186 {0, 0}, /* GS */
henryeherman 0:beb124b81ef5 187 {0, 0}, /* RS */
henryeherman 0:beb124b81ef5 188 {0, 0}, /* US */
henryeherman 0:beb124b81ef5 189 {0x2c, 0}, /* */
henryeherman 0:beb124b81ef5 190 {0x1e, SHIFT}, /* ! */
henryeherman 0:beb124b81ef5 191 {0x1f, SHIFT}, /* " */
henryeherman 0:beb124b81ef5 192 {0x32, 0}, /* # */
henryeherman 0:beb124b81ef5 193 {0x21, SHIFT}, /* $ */
henryeherman 0:beb124b81ef5 194 {0x22, SHIFT}, /* % */
henryeherman 0:beb124b81ef5 195 {0x24, SHIFT}, /* & */
henryeherman 0:beb124b81ef5 196 {0x34, 0}, /* ' */
henryeherman 0:beb124b81ef5 197 {0x26, SHIFT}, /* ( */
henryeherman 0:beb124b81ef5 198 {0x27, SHIFT}, /* ) */
henryeherman 0:beb124b81ef5 199 {0x25, SHIFT}, /* * */
henryeherman 0:beb124b81ef5 200 {0x2e, SHIFT}, /* + */
henryeherman 0:beb124b81ef5 201 {0x36, 0}, /* , */
henryeherman 0:beb124b81ef5 202 {0x2d, 0}, /* - */
henryeherman 0:beb124b81ef5 203 {0x37, 0}, /* . */
henryeherman 0:beb124b81ef5 204 {0x38, 0}, /* / */
henryeherman 0:beb124b81ef5 205 {0x27, 0}, /* 0 */
henryeherman 0:beb124b81ef5 206 {0x1e, 0}, /* 1 */
henryeherman 0:beb124b81ef5 207 {0x1f, 0}, /* 2 */
henryeherman 0:beb124b81ef5 208 {0x20, 0}, /* 3 */
henryeherman 0:beb124b81ef5 209 {0x21, 0}, /* 4 */
henryeherman 0:beb124b81ef5 210 {0x22, 0}, /* 5 */
henryeherman 0:beb124b81ef5 211 {0x23, 0}, /* 6 */
henryeherman 0:beb124b81ef5 212 {0x24, 0}, /* 7 */
henryeherman 0:beb124b81ef5 213 {0x25, 0}, /* 8 */
henryeherman 0:beb124b81ef5 214 {0x26, 0}, /* 9 */
henryeherman 0:beb124b81ef5 215 {0x33, SHIFT}, /* : */
henryeherman 0:beb124b81ef5 216 {0x33, 0}, /* ; */
henryeherman 0:beb124b81ef5 217 {0x36, SHIFT}, /* < */
henryeherman 0:beb124b81ef5 218 {0x2e, 0}, /* = */
henryeherman 0:beb124b81ef5 219 {0x37, SHIFT}, /* > */
henryeherman 0:beb124b81ef5 220 {0x38, SHIFT}, /* ? */
henryeherman 0:beb124b81ef5 221 {0x34, SHIFT}, /* @ */
henryeherman 0:beb124b81ef5 222 {0x04, SHIFT}, /* A */
henryeherman 0:beb124b81ef5 223 {0x05, SHIFT}, /* B */
henryeherman 0:beb124b81ef5 224 {0x06, SHIFT}, /* C */
henryeherman 0:beb124b81ef5 225 {0x07, SHIFT}, /* D */
henryeherman 0:beb124b81ef5 226 {0x08, SHIFT}, /* E */
henryeherman 0:beb124b81ef5 227 {0x09, SHIFT}, /* F */
henryeherman 0:beb124b81ef5 228 {0x0a, SHIFT}, /* G */
henryeherman 0:beb124b81ef5 229 {0x0b, SHIFT}, /* H */
henryeherman 0:beb124b81ef5 230 {0x0c, SHIFT}, /* I */
henryeherman 0:beb124b81ef5 231 {0x0d, SHIFT}, /* J */
henryeherman 0:beb124b81ef5 232 {0x0e, SHIFT}, /* K */
henryeherman 0:beb124b81ef5 233 {0x0f, SHIFT}, /* L */
henryeherman 0:beb124b81ef5 234 {0x10, SHIFT}, /* M */
henryeherman 0:beb124b81ef5 235 {0x11, SHIFT}, /* N */
henryeherman 0:beb124b81ef5 236 {0x12, SHIFT}, /* O */
henryeherman 0:beb124b81ef5 237 {0x13, SHIFT}, /* P */
henryeherman 0:beb124b81ef5 238 {0x14, SHIFT}, /* Q */
henryeherman 0:beb124b81ef5 239 {0x15, SHIFT}, /* R */
henryeherman 0:beb124b81ef5 240 {0x16, SHIFT}, /* S */
henryeherman 0:beb124b81ef5 241 {0x17, SHIFT}, /* T */
henryeherman 0:beb124b81ef5 242 {0x18, SHIFT}, /* U */
henryeherman 0:beb124b81ef5 243 {0x19, SHIFT}, /* V */
henryeherman 0:beb124b81ef5 244 {0x1a, SHIFT}, /* W */
henryeherman 0:beb124b81ef5 245 {0x1b, SHIFT}, /* X */
henryeherman 0:beb124b81ef5 246 {0x1c, SHIFT}, /* Y */
henryeherman 0:beb124b81ef5 247 {0x1d, SHIFT}, /* Z */
henryeherman 0:beb124b81ef5 248 {0x2f, 0}, /* [ */
henryeherman 0:beb124b81ef5 249 {0x64, 0}, /* \ */
henryeherman 0:beb124b81ef5 250 {0x30, 0}, /* ] */
henryeherman 0:beb124b81ef5 251 {0x23, SHIFT}, /* ^ */
henryeherman 0:beb124b81ef5 252 {0x2d, SHIFT}, /* _ */
henryeherman 0:beb124b81ef5 253 {0x35, 0}, /* ` */
henryeherman 0:beb124b81ef5 254 {0x04, 0}, /* a */
henryeherman 0:beb124b81ef5 255 {0x05, 0}, /* b */
henryeherman 0:beb124b81ef5 256 {0x06, 0}, /* c */
henryeherman 0:beb124b81ef5 257 {0x07, 0}, /* d */
henryeherman 0:beb124b81ef5 258 {0x08, 0}, /* e */
henryeherman 0:beb124b81ef5 259 {0x09, 0}, /* f */
henryeherman 0:beb124b81ef5 260 {0x0a, 0}, /* g */
henryeherman 0:beb124b81ef5 261 {0x0b, 0}, /* h */
henryeherman 0:beb124b81ef5 262 {0x0c, 0}, /* i */
henryeherman 0:beb124b81ef5 263 {0x0d, 0}, /* j */
henryeherman 0:beb124b81ef5 264 {0x0e, 0}, /* k */
henryeherman 0:beb124b81ef5 265 {0x0f, 0}, /* l */
henryeherman 0:beb124b81ef5 266 {0x10, 0}, /* m */
henryeherman 0:beb124b81ef5 267 {0x11, 0}, /* n */
henryeherman 0:beb124b81ef5 268 {0x12, 0}, /* o */
henryeherman 0:beb124b81ef5 269 {0x13, 0}, /* p */
henryeherman 0:beb124b81ef5 270 {0x14, 0}, /* q */
henryeherman 0:beb124b81ef5 271 {0x15, 0}, /* r */
henryeherman 0:beb124b81ef5 272 {0x16, 0}, /* s */
henryeherman 0:beb124b81ef5 273 {0x17, 0}, /* t */
henryeherman 0:beb124b81ef5 274 {0x18, 0}, /* u */
henryeherman 0:beb124b81ef5 275 {0x19, 0}, /* v */
henryeherman 0:beb124b81ef5 276 {0x1a, 0}, /* w */
henryeherman 0:beb124b81ef5 277 {0x1b, 0}, /* x */
henryeherman 0:beb124b81ef5 278 {0x1c, 0}, /* y */
henryeherman 0:beb124b81ef5 279 {0x1d, 0}, /* z */
henryeherman 0:beb124b81ef5 280 {0x2f, SHIFT}, /* { */
henryeherman 0:beb124b81ef5 281 {0x64, SHIFT}, /* | */
henryeherman 0:beb124b81ef5 282 {0x30, SHIFT}, /* } */
henryeherman 0:beb124b81ef5 283 {0x32, SHIFT}, /* ~ */
henryeherman 0:beb124b81ef5 284 {0,0}, /* DEL */
henryeherman 0:beb124b81ef5 285 };
henryeherman 0:beb124b81ef5 286 #endif
henryeherman 0:beb124b81ef5 287
henryeherman 0:beb124b81ef5 288
henryeherman 0:beb124b81ef5 289 #endif