|
38 | 38 | //--------------------------------------------------------------------+
|
39 | 39 | // Class Driver Default Configure & Validation
|
40 | 40 | //--------------------------------------------------------------------+
|
41 |
| -#ifndef CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP |
42 |
| -#define CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP 0 |
43 |
| -#endif |
| 41 | + |
44 | 42 |
|
45 | 43 | //--------------------------------------------------------------------+
|
46 | 44 | // Application API
|
@@ -81,16 +79,6 @@ static inline bool tud_hid_keyboard_key_release(uint8_t report_id)
|
81 | 79 | return tud_hid_keyboard_report(report_id, 0, NULL);
|
82 | 80 | }
|
83 | 81 |
|
84 |
| -#if CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP |
85 |
| -bool tud_hid_keyboard_key_press(uint8_t report_id, char ch); |
86 |
| - |
87 |
| -typedef struct{ |
88 |
| - uint8_t shift; |
89 |
| - uint8_t keycode; |
90 |
| -}hid_ascii_to_keycode_entry_t; |
91 |
| -extern const hid_ascii_to_keycode_entry_t HID_ASCII_TO_KEYCODE[128]; |
92 |
| -#endif |
93 |
| - |
94 | 82 | //--------------------------------------------------------------------+
|
95 | 83 | // MOUSE API
|
96 | 84 | // Convenient helper to send mouse report if application use standard/boot
|
@@ -281,8 +269,154 @@ static inline bool tud_hid_mouse_button_release(uint8_t report_id)
|
281 | 269 | HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
|
282 | 270 | HID_COLLECTION_END \
|
283 | 271 |
|
284 |
| -/** @} */ |
285 |
| -/** @} */ |
| 272 | +/*-------------------------------------------------------------------- |
| 273 | + * ASCII to KEYCODE Conversion |
| 274 | + * Expand to array of [128][2] (shift, keycode) |
| 275 | + * |
| 276 | + * Usage: example to convert input char into keyboard report (modifier + keycode) |
| 277 | + * |
| 278 | + * uint8_t const conv_table[128][2] = { HID_ASCII_TO_KEYCODE }; |
| 279 | + * |
| 280 | + * uint8_t keycode[6] = { 0 }; |
| 281 | + * uint8_t modifier = 0; |
| 282 | + * |
| 283 | + * if ( conv_table[chr][0] ) modifier = KEYBOARD_MODIFIER_LEFTSHIFT; |
| 284 | + * keycode[0] = conv_table[chr][1]; |
| 285 | + * tud_hid_keyboard_report(report_id, modifier, keycode); |
| 286 | + * |
| 287 | + *--------------------------------------------------------------------*/ |
| 288 | +#define HID_ASCII_TO_KEYCODE \ |
| 289 | + {0, 0 }, /* 0x00 Null */ \ |
| 290 | + {0, 0 }, /* 0x01 */ \ |
| 291 | + {0, 0 }, /* 0x02 */ \ |
| 292 | + {0, 0 }, /* 0x03 */ \ |
| 293 | + {0, 0 }, /* 0x04 */ \ |
| 294 | + {0, 0 }, /* 0x05 */ \ |
| 295 | + {0, 0 }, /* 0x06 */ \ |
| 296 | + {0, 0 }, /* 0x07 */ \ |
| 297 | + {0, HID_KEY_BACKSPACE }, /* 0x08 Backspace */ \ |
| 298 | + {0, HID_KEY_TAB }, /* 0x09 Tab */ \ |
| 299 | + {0, HID_KEY_RETURN }, /* 0x0A Line Feed */ \ |
| 300 | + {0, 0 }, /* 0x0B */ \ |
| 301 | + {0, 0 }, /* 0x0C */ \ |
| 302 | + {0, HID_KEY_RETURN }, /* 0x0D CR */ \ |
| 303 | + {0, 0 }, /* 0x0E */ \ |
| 304 | + {0, 0 }, /* 0x0F */ \ |
| 305 | + {0, 0 }, /* 0x10 */ \ |
| 306 | + {0, 0 }, /* 0x11 */ \ |
| 307 | + {0, 0 }, /* 0x12 */ \ |
| 308 | + {0, 0 }, /* 0x13 */ \ |
| 309 | + {0, 0 }, /* 0x14 */ \ |
| 310 | + {0, 0 }, /* 0x15 */ \ |
| 311 | + {0, 0 }, /* 0x16 */ \ |
| 312 | + {0, 0 }, /* 0x17 */ \ |
| 313 | + {0, 0 }, /* 0x18 */ \ |
| 314 | + {0, 0 }, /* 0x19 */ \ |
| 315 | + {0, 0 }, /* 0x1A */ \ |
| 316 | + {0, HID_KEY_ESCAPE }, /* 0x1B Escape */ \ |
| 317 | + {0, 0 }, /* 0x1C */ \ |
| 318 | + {0, 0 }, /* 0x1D */ \ |
| 319 | + {0, 0 }, /* 0x1E */ \ |
| 320 | + {0, 0 }, /* 0x1F */ \ |
| 321 | + \ |
| 322 | + {0, HID_KEY_SPACE }, /* 0x20 */ \ |
| 323 | + {1, HID_KEY_1 }, /* 0x21 ! */ \ |
| 324 | + {1, HID_KEY_APOSTROPHE }, /* 0x22 " */ \ |
| 325 | + {1, HID_KEY_3 }, /* 0x23 # */ \ |
| 326 | + {1, HID_KEY_4 }, /* 0x24 $ */ \ |
| 327 | + {1, HID_KEY_5 }, /* 0x25 % */ \ |
| 328 | + {1, HID_KEY_7 }, /* 0x26 & */ \ |
| 329 | + {0, HID_KEY_APOSTROPHE }, /* 0x27 ' */ \ |
| 330 | + {1, HID_KEY_9 }, /* 0x28 ( */ \ |
| 331 | + {1, HID_KEY_0 }, /* 0x29 ) */ \ |
| 332 | + {1, HID_KEY_8 }, /* 0x2A * */ \ |
| 333 | + {1, HID_KEY_EQUAL }, /* 0x2B + */ \ |
| 334 | + {0, HID_KEY_COMMA }, /* 0x2C , */ \ |
| 335 | + {0, HID_KEY_MINUS }, /* 0x2D - */ \ |
| 336 | + {0, HID_KEY_PERIOD }, /* 0x2E . */ \ |
| 337 | + {0, HID_KEY_SLASH }, /* 0x2F / */ \ |
| 338 | + {0, HID_KEY_0 }, /* 0x30 0 */ \ |
| 339 | + {0, HID_KEY_1 }, /* 0x31 1 */ \ |
| 340 | + {0, HID_KEY_2 }, /* 0x32 2 */ \ |
| 341 | + {0, HID_KEY_3 }, /* 0x33 3 */ \ |
| 342 | + {0, HID_KEY_4 }, /* 0x34 4 */ \ |
| 343 | + {0, HID_KEY_5 }, /* 0x35 5 */ \ |
| 344 | + {0, HID_KEY_6 }, /* 0x36 6 */ \ |
| 345 | + {0, HID_KEY_7 }, /* 0x37 7 */ \ |
| 346 | + {0, HID_KEY_8 }, /* 0x38 8 */ \ |
| 347 | + {0, HID_KEY_9 }, /* 0x39 9 */ \ |
| 348 | + {1, HID_KEY_SEMICOLON }, /* 0x3A : */ \ |
| 349 | + {0, HID_KEY_SEMICOLON }, /* 0x3B ; */ \ |
| 350 | + {1, HID_KEY_COMMA }, /* 0x3C < */ \ |
| 351 | + {0, HID_KEY_EQUAL }, /* 0x3D = */ \ |
| 352 | + {1, HID_KEY_PERIOD }, /* 0x3E > */ \ |
| 353 | + {1, HID_KEY_SLASH }, /* 0x3F ? */ \ |
| 354 | + \ |
| 355 | + {1, HID_KEY_2 }, /* 0x40 @ */ \ |
| 356 | + {1, HID_KEY_A }, /* 0x41 A */ \ |
| 357 | + {1, HID_KEY_B }, /* 0x42 B */ \ |
| 358 | + {1, HID_KEY_C }, /* 0x43 C */ \ |
| 359 | + {1, HID_KEY_D }, /* 0x44 D */ \ |
| 360 | + {1, HID_KEY_E }, /* 0x45 E */ \ |
| 361 | + {1, HID_KEY_F }, /* 0x46 F */ \ |
| 362 | + {1, HID_KEY_G }, /* 0x47 G */ \ |
| 363 | + {1, HID_KEY_H }, /* 0x48 H */ \ |
| 364 | + {1, HID_KEY_I }, /* 0x49 I */ \ |
| 365 | + {1, HID_KEY_J }, /* 0x4A J */ \ |
| 366 | + {1, HID_KEY_K }, /* 0x4B K */ \ |
| 367 | + {1, HID_KEY_L }, /* 0x4C L */ \ |
| 368 | + {1, HID_KEY_M }, /* 0x4D M */ \ |
| 369 | + {1, HID_KEY_N }, /* 0x4E N */ \ |
| 370 | + {1, HID_KEY_O }, /* 0x4F O */ \ |
| 371 | + {1, HID_KEY_P }, /* 0x50 P */ \ |
| 372 | + {1, HID_KEY_Q }, /* 0x51 Q */ \ |
| 373 | + {1, HID_KEY_R }, /* 0x52 R */ \ |
| 374 | + {1, HID_KEY_S }, /* 0x53 S */ \ |
| 375 | + {1, HID_KEY_T }, /* 0x55 T */ \ |
| 376 | + {1, HID_KEY_U }, /* 0x55 U */ \ |
| 377 | + {1, HID_KEY_V }, /* 0x56 V */ \ |
| 378 | + {1, HID_KEY_W }, /* 0x57 W */ \ |
| 379 | + {1, HID_KEY_X }, /* 0x58 X */ \ |
| 380 | + {1, HID_KEY_Y }, /* 0x59 Y */ \ |
| 381 | + {1, HID_KEY_Z }, /* 0x5A Z */ \ |
| 382 | + {0, HID_KEY_BRACKET_LEFT }, /* 0x5B [ */ \ |
| 383 | + {0, HID_KEY_BACKSLASH }, /* 0x5C '\' */ \ |
| 384 | + {0, HID_KEY_BRACKET_RIGHT }, /* 0x5D ] */ \ |
| 385 | + {1, HID_KEY_6 }, /* 0x5E ^ */ \ |
| 386 | + {1, HID_KEY_MINUS }, /* 0x5F _ */ \ |
| 387 | + \ |
| 388 | + {0, HID_KEY_GRAVE }, /* 0x60 ` */ \ |
| 389 | + {0, HID_KEY_A }, /* 0x61 a */ \ |
| 390 | + {0, HID_KEY_B }, /* 0x62 b */ \ |
| 391 | + {0, HID_KEY_C }, /* 0x63 c */ \ |
| 392 | + {0, HID_KEY_D }, /* 0x66 d */ \ |
| 393 | + {0, HID_KEY_E }, /* 0x65 e */ \ |
| 394 | + {0, HID_KEY_F }, /* 0x66 f */ \ |
| 395 | + {0, HID_KEY_G }, /* 0x67 g */ \ |
| 396 | + {0, HID_KEY_H }, /* 0x68 h */ \ |
| 397 | + {0, HID_KEY_I }, /* 0x69 i */ \ |
| 398 | + {0, HID_KEY_J }, /* 0x6A j */ \ |
| 399 | + {0, HID_KEY_K }, /* 0x6B k */ \ |
| 400 | + {0, HID_KEY_L }, /* 0x6C l */ \ |
| 401 | + {0, HID_KEY_M }, /* 0x6D m */ \ |
| 402 | + {0, HID_KEY_N }, /* 0x6E n */ \ |
| 403 | + {0, HID_KEY_O }, /* 0x6F o */ \ |
| 404 | + {0, HID_KEY_P }, /* 0x70 p */ \ |
| 405 | + {0, HID_KEY_Q }, /* 0x71 q */ \ |
| 406 | + {0, HID_KEY_R }, /* 0x72 r */ \ |
| 407 | + {0, HID_KEY_S }, /* 0x73 s */ \ |
| 408 | + {0, HID_KEY_T }, /* 0x75 t */ \ |
| 409 | + {0, HID_KEY_U }, /* 0x75 u */ \ |
| 410 | + {0, HID_KEY_V }, /* 0x76 v */ \ |
| 411 | + {0, HID_KEY_W }, /* 0x77 w */ \ |
| 412 | + {0, HID_KEY_X }, /* 0x78 x */ \ |
| 413 | + {0, HID_KEY_Y }, /* 0x79 y */ \ |
| 414 | + {0, HID_KEY_Z }, /* 0x7A z */ \ |
| 415 | + {1, HID_KEY_BRACKET_LEFT }, /* 0x7B { */ \ |
| 416 | + {1, HID_KEY_BACKSLASH }, /* 0x7C | */ \ |
| 417 | + {1, HID_KEY_BRACKET_RIGHT }, /* 0x7D } */ \ |
| 418 | + {1, HID_KEY_GRAVE }, /* 0x7E ~ */ \ |
| 419 | + {0, HID_KEY_DELETE } /* 0x7F Delete */ \ |
286 | 420 |
|
287 | 421 | //--------------------------------------------------------------------+
|
288 | 422 | // Internal Class Driver API
|
|
0 commit comments