@@ -38,17 +38,7 @@ static const char *TAG = "OSD";
3838
3939#define APP_DEFAULT_WIDTH 256
4040#define APP_DEFAULT_HEIGHT 240
41- #define APP_DEFAULT_SCALE 2
42-
43- typedef struct {
44- int16_t x ; /* Mouse X coordinate */
45- int16_t y ; /* Mouse Y coordinate */
46- bool left_button ; /* Mouse left button state */
47- } app_mouse_t ;
48- typedef struct {
49- uint32_t last_key ;
50- bool pressed ;
51- } app_kb_t ;
41+ #define APP_DEFAULT_SCALE (BSP_LCD_V_RES/APP_DEFAULT_HEIGHT)
5242
5343typedef struct {
5444 hid_host_device_handle_t hid_device_handle ;
@@ -121,8 +111,6 @@ static uint8_t * vid_buffer = NULL;
121111
122112/* USB variables */
123113static QueueHandle_t hid_queue = NULL ;
124- static app_kb_t app_kb ;
125- static app_mouse_t app_mouse ;
126114static gamepad_t app_gamepad ;
127115static gamepad_t app_gamepad_tmp ;
128116/*******************************************************************************
@@ -367,18 +355,14 @@ static void app_osd_video_custom_blit(bitmap_t *primary, int num_dirties, rect_t
367355
368356 bsp_display_lock (0 );
369357
370- for (int y = 0 ; y < APP_DEFAULT_HEIGHT ; y ++ )
371- {
372- for (int x = 0 ; x < APP_DEFAULT_WIDTH ; x ++ )
373- {
374- for (int z = 0 ; z < APP_DEFAULT_SCALE ; z ++ )
375- {
376- vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH )] = HIBYTE (colorPalette [data [0 ]]);
377- vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + 1 ] = LOBYTE (colorPalette [data [0 ]]);
378-
379- vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + 2 ] = HIBYTE (colorPalette [data [0 ]]);
380- vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + 3 ] = LOBYTE (colorPalette [data [0 ]]);
381- }
358+ for (int y = 0 ; y < APP_DEFAULT_HEIGHT ; y ++ ) {
359+ for (int x = 0 ; x < APP_DEFAULT_WIDTH ; x ++ ) {
360+ for (int z = 0 ; z < APP_DEFAULT_SCALE ; z ++ ) {
361+ for (int pix = 0 ; pix < APP_DEFAULT_SCALE ; pix ++ ) {
362+ vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + (pix * 2 )] = HIBYTE (colorPalette [data [0 ]]);
363+ vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + (pix * 2 + 1 )] = LOBYTE (colorPalette [data [0 ]]);
364+ }
365+ }
382366 data ++ ;
383367 }
384368 }
@@ -387,81 +371,6 @@ static void app_osd_video_custom_blit(bitmap_t *primary, int num_dirties, rect_t
387371 bsp_display_unlock ();
388372}
389373
390- static char usb_hid_get_keyboard_char (uint8_t key , uint8_t shift )
391- {
392- char ret_key = 0 ;
393-
394- const uint8_t keycode2ascii [57 ][2 ] = {
395- {0 , 0 }, /* HID_KEY_NO_PRESS */
396- {0 , 0 }, /* HID_KEY_ROLLOVER */
397- {0 , 0 }, /* HID_KEY_POST_FAIL */
398- {0 , 0 }, /* HID_KEY_ERROR_UNDEFINED */
399- {'a' , 'A' }, /* HID_KEY_A */
400- {'b' , 'B' }, /* HID_KEY_B */
401- {'c' , 'C' }, /* HID_KEY_C */
402- {'d' , 'D' }, /* HID_KEY_D */
403- {'e' , 'E' }, /* HID_KEY_E */
404- {'f' , 'F' }, /* HID_KEY_F */
405- {'g' , 'G' }, /* HID_KEY_G */
406- {'h' , 'H' }, /* HID_KEY_H */
407- {'i' , 'I' }, /* HID_KEY_I */
408- {'j' , 'J' }, /* HID_KEY_J */
409- {'k' , 'K' }, /* HID_KEY_K */
410- {'l' , 'L' }, /* HID_KEY_L */
411- {'m' , 'M' }, /* HID_KEY_M */
412- {'n' , 'N' }, /* HID_KEY_N */
413- {'o' , 'O' }, /* HID_KEY_O */
414- {'p' , 'P' }, /* HID_KEY_P */
415- {'q' , 'Q' }, /* HID_KEY_Q */
416- {'r' , 'R' }, /* HID_KEY_R */
417- {'s' , 'S' }, /* HID_KEY_S */
418- {'t' , 'T' }, /* HID_KEY_T */
419- {'u' , 'U' }, /* HID_KEY_U */
420- {'v' , 'V' }, /* HID_KEY_V */
421- {'w' , 'W' }, /* HID_KEY_W */
422- {'x' , 'X' }, /* HID_KEY_X */
423- {'y' , 'Y' }, /* HID_KEY_Y */
424- {'z' , 'Z' }, /* HID_KEY_Z */
425- {'1' , '!' }, /* HID_KEY_1 */
426- {'2' , '@' }, /* HID_KEY_2 */
427- {'3' , '#' }, /* HID_KEY_3 */
428- {'4' , '$' }, /* HID_KEY_4 */
429- {'5' , '%' }, /* HID_KEY_5 */
430- {'6' , '^' }, /* HID_KEY_6 */
431- {'7' , '&' }, /* HID_KEY_7 */
432- {'8' , '*' }, /* HID_KEY_8 */
433- {'9' , '(' }, /* HID_KEY_9 */
434- {'0' , ')' }, /* HID_KEY_0 */
435- {'\r' , '\r' }, /* HID_KEY_ENTER */
436- {0 , 0 }, /* HID_KEY_ESC */
437- {'\b' , 0 }, /* HID_KEY_DEL */
438- {0 , 0 }, /* HID_KEY_TAB */
439- {' ' , ' ' }, /* HID_KEY_SPACE */
440- {'-' , '_' }, /* HID_KEY_MINUS */
441- {'=' , '+' }, /* HID_KEY_EQUAL */
442- {'[' , '{' }, /* HID_KEY_OPEN_BRACKET */
443- {']' , '}' }, /* HID_KEY_CLOSE_BRACKET */
444- {'\\' , '|' }, /* HID_KEY_BACK_SLASH */
445- {'\\' , '|' }, /* HID_KEY_SHARP */ // HOTFIX: for NonUS Keyboards repeat HID_KEY_BACK_SLASH
446- {';' , ':' }, /* HID_KEY_COLON */
447- {'\'' , '"' }, /* HID_KEY_QUOTE */
448- {'`' , '~' }, /* HID_KEY_TILDE */
449- {',' , '<' }, /* HID_KEY_LESS */
450- {'.' , '>' }, /* HID_KEY_GREATER */
451- {'/' , '?' } /* HID_KEY_SLASH */
452- };
453-
454- if (shift > 1 ) {
455- shift = 1 ;
456- }
457-
458- if ((key >= HID_KEY_A ) && (key <= HID_KEY_SLASH )) {
459- ret_key = keycode2ascii [key ][shift ];
460- }
461-
462- return ret_key ;
463- }
464-
465374static void app_usb_hid_host_interface_callback (hid_host_device_handle_t hid_device_handle , const hid_host_interface_event_t event , void * arg )
466375{
467376 hid_host_dev_params_t * dev = hid_host_device_get_params (hid_device_handle );
@@ -473,67 +382,7 @@ static void app_usb_hid_host_interface_callback(hid_host_device_handle_t hid_dev
473382 switch (event ) {
474383 case HID_HOST_INTERFACE_EVENT_INPUT_REPORT :
475384 data = hid_host_device_get_data (hid_device_handle , & data_length );
476- if (dev -> proto == HID_PROTOCOL_KEYBOARD ) {
477- hid_keyboard_input_report_boot_t * keyboard = (hid_keyboard_input_report_boot_t * )data ;
478- if (data_length < sizeof (hid_keyboard_input_report_boot_t )) {
479- return ;
480- }
481- for (int i = 0 ; i < HID_KEYBOARD_KEY_MAX ; i ++ ) {
482- if (keyboard -> key [i ] > HID_KEY_ERROR_UNDEFINED ) {
483- char key = 0 ;
484-
485- /* LVGL special keys */
486- if (keyboard -> key [i ] == HID_KEY_TAB ) {
487- if ((keyboard -> modifier .left_shift || keyboard -> modifier .right_shift )) {
488- key = LV_KEY_PREV ;
489- } else {
490- key = LV_KEY_NEXT ;
491- }
492- } else if (keyboard -> key [i ] == HID_KEY_RIGHT ) {
493- key = LV_KEY_RIGHT ;
494- } else if (keyboard -> key [i ] == HID_KEY_LEFT ) {
495- key = LV_KEY_LEFT ;
496- } else if (keyboard -> key [i ] == HID_KEY_DOWN ) {
497- key = LV_KEY_DOWN ;
498- } else if (keyboard -> key [i ] == HID_KEY_UP ) {
499- key = LV_KEY_UP ;
500- } else if (keyboard -> key [i ] == HID_KEY_ENTER || keyboard -> key [i ] == HID_KEY_KEYPAD_ENTER ) {
501- key = LV_KEY_ENTER ;
502- } else if (keyboard -> key [i ] == HID_KEY_DELETE ) {
503- key = LV_KEY_DEL ;
504- } else if (keyboard -> key [i ] == HID_KEY_HOME ) {
505- key = LV_KEY_HOME ;
506- } else if (keyboard -> key [i ] == HID_KEY_END ) {
507- key = LV_KEY_END ;
508- } else {
509- /* Get ASCII char */
510- key = usb_hid_get_keyboard_char (keyboard -> key [i ], (keyboard -> modifier .left_shift || keyboard -> modifier .right_shift ));
511- }
512-
513- if (key == 0 ) {
514- ESP_LOGI (TAG , "Not recognized key: %c (%d)" , keyboard -> key [i ], keyboard -> key [i ]);
515- }
516- app_kb .last_key = key ;
517- app_kb .pressed = true;
518- }
519- else
520- {
521- if (i == 0 ) {
522- app_kb .pressed = false;
523- }
524- }
525-
526- }
527-
528- } else if (dev -> proto == HID_PROTOCOL_MOUSE ) {
529- hid_mouse_input_report_boot_t * mouse = (hid_mouse_input_report_boot_t * )data ;
530- if (data_length < sizeof (hid_mouse_input_report_boot_t )) {
531- break ;
532- }
533- app_mouse .left_button = mouse -> buttons .button1 ;
534- app_mouse .x += mouse -> x_displacement ;
535- app_mouse .y += mouse -> y_displacement ;
536- } else {
385+ if (dev -> proto == HID_PROTOCOL_NONE ) {
537386 gamepad_t * gamepad = (gamepad_t * )data ;
538387 if (data_length < 1 ) {
539388 break ;
@@ -568,7 +417,7 @@ static void app_usb_hid_task(void *arg)
568417 switch (msg .event ) {
569418 case HID_HOST_DRIVER_EVENT_CONNECTED :
570419 /* Handle mouse or keyboard */
571- if (dev -> proto == HID_PROTOCOL_NONE || dev -> proto == HID_PROTOCOL_KEYBOARD || dev -> proto == HID_PROTOCOL_MOUSE ) {
420+ if (dev -> proto == HID_PROTOCOL_NONE ) {
572421 const hid_host_device_config_t dev_config = {
573422 .callback = app_usb_hid_host_interface_callback ,
574423 };
0 commit comments