USBMouse Example

Dependencies:   mbed

Committer:
simon
Date:
Wed Apr 07 13:42:47 2010 +0000
Revision:
1:eb68149218fd

        

Who changed what in which revision?

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