USB Keyboard and mouse Example. Based on USBMouse

Dependencies:   mbed

Fork of USBKeyboardMouse by Zack Clobes

Committer:
Wabouz
Date:
Wed May 08 09:33:27 2013 +0000
Revision:
1:9c83250ce43b
Parent:
0:86603687efec
Un petit programme.

Who changed what in which revision?

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