Joystick enabled version of USBHID -library. Has full Playstation 3 functionality including button pressures and a working home-button implementation, while maintaining full PC/MAC/linux -compatibility. basic operation of the lib: #include "mbed.h" #include "usbhid.h" USBJoystick joystick; int main() { while(1) { char dpad = 0xf; /*only the rightmost 4 bits matter*/ short button = 0xff; /*only the rightmost 13 bits matter*/ /*buttons are square, cross, circle, triangle, l1, r1, l2, r2, l3, r3, home.*/ char stick1x = 0; char stick1y = 0; char stick2x = 0; char stick2y = 0; joystick.joystick(dpad, buttons, stick1x, stick1y, stick2x, stick2y); wait_ms(5); } }

Committer:
innocopter
Date:
Fri May 11 13:35:59 2012 +0000
Revision:
0:237d5ef643e9

        

Who changed what in which revision?

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