USB HID Joystick Example (modified USBMouse)

Dependencies:   mbed

Committer:
bricklife
Date:
Wed Jan 19 11:27:13 2011 +0000
Revision:
1:ec6deffecbd3
Parent:
0:d450e82033a1

        

Who changed what in which revision?

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