B. H. / Mbed 2 deprecated trolololol

Dependencies:   mbed

Committer:
znuh
Date:
Tue Nov 29 21:26:20 2011 +0000
Revision:
0:505207de8566

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
znuh 0:505207de8566 1 /* USBKeyboard.h */
znuh 0:505207de8566 2 /* USB device example: Standard keyboard */
znuh 0:505207de8566 3 /* Copyright (c) 2011 ARM Limited. All rights reserved. */
znuh 0:505207de8566 4
znuh 0:505207de8566 5 #ifndef _USB_KEYBOARD_
znuh 0:505207de8566 6 #define _USB_KEYBOARD_
znuh 0:505207de8566 7
znuh 0:505207de8566 8 #include "USBHID.h"
znuh 0:505207de8566 9 #include "Stream.h"
znuh 0:505207de8566 10
znuh 0:505207de8566 11 #define REPORT_ID_KEYBOARD 1
znuh 0:505207de8566 12 #define REPORT_ID_VOLUME 3
znuh 0:505207de8566 13
znuh 0:505207de8566 14 enum MEDIA_KEY
znuh 0:505207de8566 15 {
znuh 0:505207de8566 16 KEY_NEXT_TRACK, /*!< next Track Button */
znuh 0:505207de8566 17 KEY_PREVIOUS_TRACK, /*!< Previous track Button */
znuh 0:505207de8566 18 KEY_STOP, /*!< Stop Button */
znuh 0:505207de8566 19 KEY_PLAY_PAUSE, /*!< Play/Pause Button */
znuh 0:505207de8566 20 KEY_MUTE, /*!< Mute Button */
znuh 0:505207de8566 21 KEY_VOLUME_UP, /*!< Volume Up Button */
znuh 0:505207de8566 22 KEY_VOLUME_DOWN, /*!< Volume Down Button */
znuh 0:505207de8566 23 };
znuh 0:505207de8566 24
znuh 0:505207de8566 25 enum FUNCTION_KEY
znuh 0:505207de8566 26 {
znuh 0:505207de8566 27 KEY_F1 = 128, /* F1 key */
znuh 0:505207de8566 28 KEY_F2, /* F2 key */
znuh 0:505207de8566 29 KEY_F3, /* F3 key */
znuh 0:505207de8566 30 KEY_F4, /* F4 key */
znuh 0:505207de8566 31 KEY_F5, /* F5 key */
znuh 0:505207de8566 32 KEY_F6, /* F6 key */
znuh 0:505207de8566 33 KEY_F7, /* F7 key */
znuh 0:505207de8566 34 KEY_F8, /* F8 key */
znuh 0:505207de8566 35 KEY_F9, /* F9 key */
znuh 0:505207de8566 36 KEY_F10, /* F10 key */
znuh 0:505207de8566 37 KEY_F11, /* F11 key */
znuh 0:505207de8566 38 KEY_F12, /* F12 key */
znuh 0:505207de8566 39 PRINT_SCREEN, /* Print Screen key */
znuh 0:505207de8566 40 INSERT, /* Insert key */
znuh 0:505207de8566 41 HOME, /* Home key */
znuh 0:505207de8566 42 PAGE_UP, /* Page Up key */
znuh 0:505207de8566 43 PAGE_DOWN, /* Page Down key */
znuh 0:505207de8566 44 };
znuh 0:505207de8566 45
znuh 0:505207de8566 46 /** USB device: a keyboard
znuh 0:505207de8566 47 *
znuh 0:505207de8566 48 * Warning: you can only instantiate one instance of a USB device: USBMouse, USBKeyboard, USBAbsMouse, USBMouseKeyboard, or USBAbsMouseKeyboard.
znuh 0:505207de8566 49 *
znuh 0:505207de8566 50 * Example:
znuh 0:505207de8566 51 * @code
znuh 0:505207de8566 52 *
znuh 0:505207de8566 53 * #include "mbed.h"
znuh 0:505207de8566 54 * #include "USBKeyboard.h"
znuh 0:505207de8566 55 *
znuh 0:505207de8566 56 * USBKeyboard key;
znuh 0:505207de8566 57 *
znuh 0:505207de8566 58 * int main(void)
znuh 0:505207de8566 59 * {
znuh 0:505207de8566 60 * while (1)
znuh 0:505207de8566 61 * {
znuh 0:505207de8566 62 * key.puts("Hello World\r\n");
znuh 0:505207de8566 63 * wait(1);
znuh 0:505207de8566 64 * }
znuh 0:505207de8566 65 * }
znuh 0:505207de8566 66 *
znuh 0:505207de8566 67 * @endcode
znuh 0:505207de8566 68 */
znuh 0:505207de8566 69 class USBKeyboard: public USBHID, public Stream
znuh 0:505207de8566 70 {
znuh 0:505207de8566 71 public:
znuh 0:505207de8566 72
znuh 0:505207de8566 73 /**
znuh 0:505207de8566 74 * Constructor
znuh 0:505207de8566 75 *
znuh 0:505207de8566 76 * @param vendor_id Your vendor_id (default: 0x1234)
znuh 0:505207de8566 77 * @param product_id Your product_id (default: 0x0001)
znuh 0:505207de8566 78 * @param product_release Your preoduct_release (default: 0x0001)
znuh 0:505207de8566 79 *
znuh 0:505207de8566 80 */
znuh 0:505207de8566 81 USBKeyboard(uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0003, uint16_t product_release = 0x0001): USBHID(vendor_id, product_id, product_release){};
znuh 0:505207de8566 82
znuh 0:505207de8566 83 /**
znuh 0:505207de8566 84 * To send a character defined by a modifier(CTRL, SHIFT, ALT) and the key
znuh 0:505207de8566 85 *
znuh 0:505207de8566 86 * @code
znuh 0:505207de8566 87 * //To send CTRL + s (save)
znuh 0:505207de8566 88 * keyboard.keyCode(CTRL, 's');
znuh 0:505207de8566 89 * @endcode
znuh 0:505207de8566 90 *
znuh 0:505207de8566 91 * @param modifier bit 0: CTRL, bit 1: SHIFT, bit 2: ALT
znuh 0:505207de8566 92 * @param key character to send
znuh 0:505207de8566 93 * @return true if there is no error, false otherwise
znuh 0:505207de8566 94 */
znuh 0:505207de8566 95 bool keyCode(uint8_t modifier, uint8_t key);
znuh 0:505207de8566 96
znuh 0:505207de8566 97 /**
znuh 0:505207de8566 98 * Send a character
znuh 0:505207de8566 99 *
znuh 0:505207de8566 100 * @param c character to be sent
znuh 0:505207de8566 101 * @return true if there is no error, false otherwise
znuh 0:505207de8566 102 */
znuh 0:505207de8566 103 virtual int _putc(int c);
znuh 0:505207de8566 104
znuh 0:505207de8566 105 /**
znuh 0:505207de8566 106 * Control media keys
znuh 0:505207de8566 107 *
znuh 0:505207de8566 108 * @param key media key pressed (KEY_NEXT_TRACK, KEY_PREVIOUS_TRACK, KEY_STOP, KEY_PLAY_PAUSE, KEY_MUTE, KEY_VOLUME_UP, KEY_VOLUME_DOWN)
znuh 0:505207de8566 109 * @return true if there is no error, false otherwise
znuh 0:505207de8566 110 */
znuh 0:505207de8566 111 bool mediaControl(MEDIA_KEY key);
znuh 0:505207de8566 112
znuh 0:505207de8566 113 /*
znuh 0:505207de8566 114 * To define the report descriptor. Warning: this method has to store the length of the report descriptor in reportLength.
znuh 0:505207de8566 115 *
znuh 0:505207de8566 116 * @return pointer to the report descriptor
znuh 0:505207de8566 117 */
znuh 0:505207de8566 118 virtual uint8_t * ReportDesc();
znuh 0:505207de8566 119
znuh 0:505207de8566 120 private:
znuh 0:505207de8566 121 //dummy otherwise it doesn,t compile (we must define all methods of an abstract class)
znuh 0:505207de8566 122 virtual int _getc() { return -1;}
znuh 0:505207de8566 123
znuh 0:505207de8566 124
znuh 0:505207de8566 125 };
znuh 0:505207de8566 126
znuh 0:505207de8566 127
znuh 0:505207de8566 128 /* Modifiers */
znuh 0:505207de8566 129 enum MODIFIER
znuh 0:505207de8566 130 {
znuh 0:505207de8566 131 CTRL = 1,
znuh 0:505207de8566 132 SHIFT = 2,
znuh 0:505207de8566 133 ALT = 4,
znuh 0:505207de8566 134 };
znuh 0:505207de8566 135
znuh 0:505207de8566 136 typedef struct {
znuh 0:505207de8566 137 unsigned char usage;
znuh 0:505207de8566 138 unsigned char modifier;
znuh 0:505207de8566 139 } KEYMAP;
znuh 0:505207de8566 140
znuh 0:505207de8566 141 #ifdef US_KEYBOARD
znuh 0:505207de8566 142 /* US keyboard (as HID standard) */
znuh 0:505207de8566 143 #define KEYMAP_SIZE (145)
znuh 0:505207de8566 144 const KEYMAP keymap[KEYMAP_SIZE] = {
znuh 0:505207de8566 145 {0, 0}, /* NUL */
znuh 0:505207de8566 146 {0, 0}, /* SOH */
znuh 0:505207de8566 147 {0, 0}, /* STX */
znuh 0:505207de8566 148 {0, 0}, /* ETX */
znuh 0:505207de8566 149 {0, 0}, /* EOT */
znuh 0:505207de8566 150 {0, 0}, /* ENQ */
znuh 0:505207de8566 151 {0, 0}, /* ACK */
znuh 0:505207de8566 152 {0, 0}, /* BEL */
znuh 0:505207de8566 153 {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */
znuh 0:505207de8566 154 {0x2b, 0}, /* TAB */ /* Keyboard Tab */
znuh 0:505207de8566 155 {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */
znuh 0:505207de8566 156 {0, 0}, /* VT */
znuh 0:505207de8566 157 {0, 0}, /* FF */
znuh 0:505207de8566 158 {0, 0}, /* CR */
znuh 0:505207de8566 159 {0, 0}, /* SO */
znuh 0:505207de8566 160 {0, 0}, /* SI */
znuh 0:505207de8566 161 {0, 0}, /* DEL */
znuh 0:505207de8566 162 {0, 0}, /* DC1 */
znuh 0:505207de8566 163 {0, 0}, /* DC2 */
znuh 0:505207de8566 164 {0, 0}, /* DC3 */
znuh 0:505207de8566 165 {0, 0}, /* DC4 */
znuh 0:505207de8566 166 {0, 0}, /* NAK */
znuh 0:505207de8566 167 {0, 0}, /* SYN */
znuh 0:505207de8566 168 {0, 0}, /* ETB */
znuh 0:505207de8566 169 {0, 0}, /* CAN */
znuh 0:505207de8566 170 {0, 0}, /* EM */
znuh 0:505207de8566 171 {0, 0}, /* SUB */
znuh 0:505207de8566 172 {0, 0}, /* ESC */
znuh 0:505207de8566 173 {0, 0}, /* FS */
znuh 0:505207de8566 174 {0, 0}, /* GS */
znuh 0:505207de8566 175 {0, 0}, /* RS */
znuh 0:505207de8566 176 {0, 0}, /* US */
znuh 0:505207de8566 177 {0x2c, 0}, /* */
znuh 0:505207de8566 178 {0x1e, SHIFT}, /* ! */
znuh 0:505207de8566 179 {0x34, SHIFT}, /* " */
znuh 0:505207de8566 180 {0x20, SHIFT}, /* # */
znuh 0:505207de8566 181 {0x21, SHIFT}, /* $ */
znuh 0:505207de8566 182 {0x22, SHIFT}, /* % */
znuh 0:505207de8566 183 {0x24, SHIFT}, /* & */
znuh 0:505207de8566 184 {0x34, 0}, /* ' */
znuh 0:505207de8566 185 {0x26, SHIFT}, /* ( */
znuh 0:505207de8566 186 {0x27, SHIFT}, /* ) */
znuh 0:505207de8566 187 {0x25, SHIFT}, /* * */
znuh 0:505207de8566 188 {0x2e, SHIFT}, /* + */
znuh 0:505207de8566 189 {0x36, 0}, /* , */
znuh 0:505207de8566 190 {0x2d, 0}, /* - */
znuh 0:505207de8566 191 {0x37, 0}, /* . */
znuh 0:505207de8566 192 {0x38, 0}, /* / */
znuh 0:505207de8566 193 {0x27, 0}, /* 0 */
znuh 0:505207de8566 194 {0x1e, 0}, /* 1 */
znuh 0:505207de8566 195 {0x1f, 0}, /* 2 */
znuh 0:505207de8566 196 {0x20, 0}, /* 3 */
znuh 0:505207de8566 197 {0x21, 0}, /* 4 */
znuh 0:505207de8566 198 {0x22, 0}, /* 5 */
znuh 0:505207de8566 199 {0x23, 0}, /* 6 */
znuh 0:505207de8566 200 {0x24, 0}, /* 7 */
znuh 0:505207de8566 201 {0x25, 0}, /* 8 */
znuh 0:505207de8566 202 {0x26, 0}, /* 9 */
znuh 0:505207de8566 203 {0x33, SHIFT}, /* : */
znuh 0:505207de8566 204 {0x33, 0}, /* ; */
znuh 0:505207de8566 205 {0x36, SHIFT}, /* < */
znuh 0:505207de8566 206 {0x2e, 0}, /* = */
znuh 0:505207de8566 207 {0x37, SHIFT}, /* > */
znuh 0:505207de8566 208 {0x38, SHIFT}, /* ? */
znuh 0:505207de8566 209 {0x1f, SHIFT}, /* @ */
znuh 0:505207de8566 210 {0x04, SHIFT}, /* A */
znuh 0:505207de8566 211 {0x05, SHIFT}, /* B */
znuh 0:505207de8566 212 {0x06, SHIFT}, /* C */
znuh 0:505207de8566 213 {0x07, SHIFT}, /* D */
znuh 0:505207de8566 214 {0x08, SHIFT}, /* E */
znuh 0:505207de8566 215 {0x09, SHIFT}, /* F */
znuh 0:505207de8566 216 {0x0a, SHIFT}, /* G */
znuh 0:505207de8566 217 {0x0b, SHIFT}, /* H */
znuh 0:505207de8566 218 {0x0c, SHIFT}, /* I */
znuh 0:505207de8566 219 {0x0d, SHIFT}, /* J */
znuh 0:505207de8566 220 {0x0e, SHIFT}, /* K */
znuh 0:505207de8566 221 {0x0f, SHIFT}, /* L */
znuh 0:505207de8566 222 {0x10, SHIFT}, /* M */
znuh 0:505207de8566 223 {0x11, SHIFT}, /* N */
znuh 0:505207de8566 224 {0x12, SHIFT}, /* O */
znuh 0:505207de8566 225 {0x13, SHIFT}, /* P */
znuh 0:505207de8566 226 {0x14, SHIFT}, /* Q */
znuh 0:505207de8566 227 {0x15, SHIFT}, /* R */
znuh 0:505207de8566 228 {0x16, SHIFT}, /* S */
znuh 0:505207de8566 229 {0x17, SHIFT}, /* T */
znuh 0:505207de8566 230 {0x18, SHIFT}, /* U */
znuh 0:505207de8566 231 {0x19, SHIFT}, /* V */
znuh 0:505207de8566 232 {0x1a, SHIFT}, /* W */
znuh 0:505207de8566 233 {0x1b, SHIFT}, /* X */
znuh 0:505207de8566 234 {0x1c, SHIFT}, /* Y */
znuh 0:505207de8566 235 {0x1d, SHIFT}, /* Z */
znuh 0:505207de8566 236 {0x2f, 0}, /* [ */
znuh 0:505207de8566 237 {0x31, 0}, /* \ */
znuh 0:505207de8566 238 {0x30, 0}, /* ] */
znuh 0:505207de8566 239 {0x23, SHIFT}, /* ^ */
znuh 0:505207de8566 240 {0x2d, SHIFT}, /* _ */
znuh 0:505207de8566 241 {0x35, 0}, /* ` */
znuh 0:505207de8566 242 {0x04, 0}, /* a */
znuh 0:505207de8566 243 {0x05, 0}, /* b */
znuh 0:505207de8566 244 {0x06, 0}, /* c */
znuh 0:505207de8566 245 {0x07, 0}, /* d */
znuh 0:505207de8566 246 {0x08, 0}, /* e */
znuh 0:505207de8566 247 {0x09, 0}, /* f */
znuh 0:505207de8566 248 {0x0a, 0}, /* g */
znuh 0:505207de8566 249 {0x0b, 0}, /* h */
znuh 0:505207de8566 250 {0x0c, 0}, /* i */
znuh 0:505207de8566 251 {0x0d, 0}, /* j */
znuh 0:505207de8566 252 {0x0e, 0}, /* k */
znuh 0:505207de8566 253 {0x0f, 0}, /* l */
znuh 0:505207de8566 254 {0x10, 0}, /* m */
znuh 0:505207de8566 255 {0x11, 0}, /* n */
znuh 0:505207de8566 256 {0x12, 0}, /* o */
znuh 0:505207de8566 257 {0x13, 0}, /* p */
znuh 0:505207de8566 258 {0x14, 0}, /* q */
znuh 0:505207de8566 259 {0x15, 0}, /* r */
znuh 0:505207de8566 260 {0x16, 0}, /* s */
znuh 0:505207de8566 261 {0x17, 0}, /* t */
znuh 0:505207de8566 262 {0x18, 0}, /* u */
znuh 0:505207de8566 263 {0x19, 0}, /* v */
znuh 0:505207de8566 264 {0x1a, 0}, /* w */
znuh 0:505207de8566 265 {0x1b, 0}, /* x */
znuh 0:505207de8566 266 {0x1c, 0}, /* y */
znuh 0:505207de8566 267 {0x1d, 0}, /* z */
znuh 0:505207de8566 268 {0x2f, SHIFT}, /* { */
znuh 0:505207de8566 269 {0x31, SHIFT}, /* | */
znuh 0:505207de8566 270 {0x30, SHIFT}, /* } */
znuh 0:505207de8566 271 {0x35, SHIFT}, /* ~ */
znuh 0:505207de8566 272 {0,0}, /* DEL */
znuh 0:505207de8566 273
znuh 0:505207de8566 274 {0x3a, 0}, /* F1 */
znuh 0:505207de8566 275 {0x3b, 0}, /* F2 */
znuh 0:505207de8566 276 {0x3c, 0}, /* F3 */
znuh 0:505207de8566 277 {0x3d, 0}, /* F4 */
znuh 0:505207de8566 278 {0x3e, 0}, /* F5 */
znuh 0:505207de8566 279 {0x3f, 0}, /* F6 */
znuh 0:505207de8566 280 {0x40, 0}, /* F7 */
znuh 0:505207de8566 281 {0x41, 0}, /* F8 */
znuh 0:505207de8566 282 {0x42, 0}, /* F9 */
znuh 0:505207de8566 283 {0x43, 0}, /* F10 */
znuh 0:505207de8566 284 {0x44, 0}, /* F11 */
znuh 0:505207de8566 285 {0x45, 0}, /* F12 */
znuh 0:505207de8566 286
znuh 0:505207de8566 287 {0x46, 0}, /* PRINT_SCREEN */
znuh 0:505207de8566 288 {0x49, 0}, /* INSERT */
znuh 0:505207de8566 289 {0x4a, 0}, /* HOME */
znuh 0:505207de8566 290 {0x4b, 0}, /* PAGE_UP */
znuh 0:505207de8566 291 {0x4e, 0}, /* PAGE_DOWN */
znuh 0:505207de8566 292 };
znuh 0:505207de8566 293
znuh 0:505207de8566 294 #else
znuh 0:505207de8566 295 /* UK keyboard */
znuh 0:505207de8566 296 #define KEYMAP_SIZE (145)
znuh 0:505207de8566 297 const KEYMAP keymap[KEYMAP_SIZE] = {
znuh 0:505207de8566 298 {0, 0}, /* NUL */
znuh 0:505207de8566 299 {0, 0}, /* SOH */
znuh 0:505207de8566 300 {0, 0}, /* STX */
znuh 0:505207de8566 301 {0, 0}, /* ETX */
znuh 0:505207de8566 302 {0, 0}, /* EOT */
znuh 0:505207de8566 303 {0, 0}, /* ENQ */
znuh 0:505207de8566 304 {0, 0}, /* ACK */
znuh 0:505207de8566 305 {0, 0}, /* BEL */
znuh 0:505207de8566 306 {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */
znuh 0:505207de8566 307 {0x2b, 0}, /* TAB */ /* Keyboard Tab */
znuh 0:505207de8566 308 {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */
znuh 0:505207de8566 309 {0, 0}, /* VT */
znuh 0:505207de8566 310 {0, 0}, /* FF */
znuh 0:505207de8566 311 {0, 0}, /* CR */
znuh 0:505207de8566 312 {0, 0}, /* SO */
znuh 0:505207de8566 313 {0, 0}, /* SI */
znuh 0:505207de8566 314 {0, 0}, /* DEL */
znuh 0:505207de8566 315 {0, 0}, /* DC1 */
znuh 0:505207de8566 316 {0, 0}, /* DC2 */
znuh 0:505207de8566 317 {0, 0}, /* DC3 */
znuh 0:505207de8566 318 {0, 0}, /* DC4 */
znuh 0:505207de8566 319 {0, 0}, /* NAK */
znuh 0:505207de8566 320 {0, 0}, /* SYN */
znuh 0:505207de8566 321 {0, 0}, /* ETB */
znuh 0:505207de8566 322 {0, 0}, /* CAN */
znuh 0:505207de8566 323 {0, 0}, /* EM */
znuh 0:505207de8566 324 {0, 0}, /* SUB */
znuh 0:505207de8566 325 {0, 0}, /* ESC */
znuh 0:505207de8566 326 {0, 0}, /* FS */
znuh 0:505207de8566 327 {0, 0}, /* GS */
znuh 0:505207de8566 328 {0, 0}, /* RS */
znuh 0:505207de8566 329 {0, 0}, /* US */
znuh 0:505207de8566 330 {0x2c, 0}, /* */
znuh 0:505207de8566 331 {0x1e, SHIFT}, /* ! */
znuh 0:505207de8566 332 {0x1f, SHIFT}, /* " */
znuh 0:505207de8566 333 {0x32, 0}, /* # */
znuh 0:505207de8566 334 {0x21, SHIFT}, /* $ */
znuh 0:505207de8566 335 {0x22, SHIFT}, /* % */
znuh 0:505207de8566 336 {0x24, SHIFT}, /* & */
znuh 0:505207de8566 337 {0x34, 0}, /* ' */
znuh 0:505207de8566 338 {0x26, SHIFT}, /* ( */
znuh 0:505207de8566 339 {0x27, SHIFT}, /* ) */
znuh 0:505207de8566 340 {0x25, SHIFT}, /* * */
znuh 0:505207de8566 341 {0x2e, SHIFT}, /* + */
znuh 0:505207de8566 342 {0x36, 0}, /* , */
znuh 0:505207de8566 343 {0x2d, 0}, /* - */
znuh 0:505207de8566 344 {0x37, 0}, /* . */
znuh 0:505207de8566 345 {0x38, 0}, /* / */
znuh 0:505207de8566 346 {0x27, 0}, /* 0 */
znuh 0:505207de8566 347 {0x1e, 0}, /* 1 */
znuh 0:505207de8566 348 {0x1f, 0}, /* 2 */
znuh 0:505207de8566 349 {0x20, 0}, /* 3 */
znuh 0:505207de8566 350 {0x21, 0}, /* 4 */
znuh 0:505207de8566 351 {0x22, 0}, /* 5 */
znuh 0:505207de8566 352 {0x23, 0}, /* 6 */
znuh 0:505207de8566 353 {0x24, 0}, /* 7 */
znuh 0:505207de8566 354 {0x25, 0}, /* 8 */
znuh 0:505207de8566 355 {0x26, 0}, /* 9 */
znuh 0:505207de8566 356 {0x33, SHIFT}, /* : */
znuh 0:505207de8566 357 {0x33, 0}, /* ; */
znuh 0:505207de8566 358 {0x36, SHIFT}, /* < */
znuh 0:505207de8566 359 {0x2e, 0}, /* = */
znuh 0:505207de8566 360 {0x37, SHIFT}, /* > */
znuh 0:505207de8566 361 {0x38, SHIFT}, /* ? */
znuh 0:505207de8566 362 {0x34, SHIFT}, /* @ */
znuh 0:505207de8566 363 {0x04, SHIFT}, /* A */
znuh 0:505207de8566 364 {0x05, SHIFT}, /* B */
znuh 0:505207de8566 365 {0x06, SHIFT}, /* C */
znuh 0:505207de8566 366 {0x07, SHIFT}, /* D */
znuh 0:505207de8566 367 {0x08, SHIFT}, /* E */
znuh 0:505207de8566 368 {0x09, SHIFT}, /* F */
znuh 0:505207de8566 369 {0x0a, SHIFT}, /* G */
znuh 0:505207de8566 370 {0x0b, SHIFT}, /* H */
znuh 0:505207de8566 371 {0x0c, SHIFT}, /* I */
znuh 0:505207de8566 372 {0x0d, SHIFT}, /* J */
znuh 0:505207de8566 373 {0x0e, SHIFT}, /* K */
znuh 0:505207de8566 374 {0x0f, SHIFT}, /* L */
znuh 0:505207de8566 375 {0x10, SHIFT}, /* M */
znuh 0:505207de8566 376 {0x11, SHIFT}, /* N */
znuh 0:505207de8566 377 {0x12, SHIFT}, /* O */
znuh 0:505207de8566 378 {0x13, SHIFT}, /* P */
znuh 0:505207de8566 379 {0x14, SHIFT}, /* Q */
znuh 0:505207de8566 380 {0x15, SHIFT}, /* R */
znuh 0:505207de8566 381 {0x16, SHIFT}, /* S */
znuh 0:505207de8566 382 {0x17, SHIFT}, /* T */
znuh 0:505207de8566 383 {0x18, SHIFT}, /* U */
znuh 0:505207de8566 384 {0x19, SHIFT}, /* V */
znuh 0:505207de8566 385 {0x1a, SHIFT}, /* W */
znuh 0:505207de8566 386 {0x1b, SHIFT}, /* X */
znuh 0:505207de8566 387 {0x1c, SHIFT}, /* Y */
znuh 0:505207de8566 388 {0x1d, SHIFT}, /* Z */
znuh 0:505207de8566 389 {0x2f, 0}, /* [ */
znuh 0:505207de8566 390 {0x64, 0}, /* \ */
znuh 0:505207de8566 391 {0x30, 0}, /* ] */
znuh 0:505207de8566 392 {0x23, SHIFT}, /* ^ */
znuh 0:505207de8566 393 {0x2d, SHIFT}, /* _ */
znuh 0:505207de8566 394 {0x35, 0}, /* ` */
znuh 0:505207de8566 395 {0x04, 0}, /* a */
znuh 0:505207de8566 396 {0x05, 0}, /* b */
znuh 0:505207de8566 397 {0x06, 0}, /* c */
znuh 0:505207de8566 398 {0x07, 0}, /* d */
znuh 0:505207de8566 399 {0x08, 0}, /* e */
znuh 0:505207de8566 400 {0x09, 0}, /* f */
znuh 0:505207de8566 401 {0x0a, 0}, /* g */
znuh 0:505207de8566 402 {0x0b, 0}, /* h */
znuh 0:505207de8566 403 {0x0c, 0}, /* i */
znuh 0:505207de8566 404 {0x0d, 0}, /* j */
znuh 0:505207de8566 405 {0x0e, 0}, /* k */
znuh 0:505207de8566 406 {0x0f, 0}, /* l */
znuh 0:505207de8566 407 {0x10, 0}, /* m */
znuh 0:505207de8566 408 {0x11, 0}, /* n */
znuh 0:505207de8566 409 {0x12, 0}, /* o */
znuh 0:505207de8566 410 {0x13, 0}, /* p */
znuh 0:505207de8566 411 {0x14, 0}, /* q */
znuh 0:505207de8566 412 {0x15, 0}, /* r */
znuh 0:505207de8566 413 {0x16, 0}, /* s */
znuh 0:505207de8566 414 {0x17, 0}, /* t */
znuh 0:505207de8566 415 {0x18, 0}, /* u */
znuh 0:505207de8566 416 {0x19, 0}, /* v */
znuh 0:505207de8566 417 {0x1a, 0}, /* w */
znuh 0:505207de8566 418 {0x1b, 0}, /* x */
znuh 0:505207de8566 419 {0x1c, 0}, /* y */
znuh 0:505207de8566 420 {0x1d, 0}, /* z */
znuh 0:505207de8566 421 {0x2f, SHIFT}, /* { */
znuh 0:505207de8566 422 {0x64, SHIFT}, /* | */
znuh 0:505207de8566 423 {0x30, SHIFT}, /* } */
znuh 0:505207de8566 424 {0x32, SHIFT}, /* ~ */
znuh 0:505207de8566 425 {0,0}, /* DEL */
znuh 0:505207de8566 426
znuh 0:505207de8566 427 {0x3a, 0}, /* F1 */
znuh 0:505207de8566 428 {0x3b, 0}, /* F2 */
znuh 0:505207de8566 429 {0x3c, 0}, /* F3 */
znuh 0:505207de8566 430 {0x3d, 0}, /* F4 */
znuh 0:505207de8566 431 {0x3e, 0}, /* F5 */
znuh 0:505207de8566 432 {0x3f, 0}, /* F6 */
znuh 0:505207de8566 433 {0x40, 0}, /* F7 */
znuh 0:505207de8566 434 {0x41, 0}, /* F8 */
znuh 0:505207de8566 435 {0x42, 0}, /* F9 */
znuh 0:505207de8566 436 {0x43, 0}, /* F10 */
znuh 0:505207de8566 437 {0x44, 0}, /* F11 */
znuh 0:505207de8566 438 {0x45, 0}, /* F12 */
znuh 0:505207de8566 439
znuh 0:505207de8566 440 {0x46, 0}, /* PRINT_SCREEN */
znuh 0:505207de8566 441 {0x49, 0}, /* INSERT */
znuh 0:505207de8566 442 {0x4a, 0}, /* HOME */
znuh 0:505207de8566 443 {0x4b, 0}, /* PAGE_UP */
znuh 0:505207de8566 444 {0x4e, 0}, /* PAGE_DOWN */
znuh 0:505207de8566 445 };
znuh 0:505207de8566 446 #endif
znuh 0:505207de8566 447
znuh 0:505207de8566 448 #endif