Просмотр исходного кода

feat(platform/lvgl): enable hid boot protocol

Signed-off-by: sakumisu <1203593632@qq.com>
sakumisu 9 месяцев назад
Родитель
Сommit
947f8530ef
1 измененных файлов с 77 добавлено и 75 удалено
  1. 77 75
      platform/lvgl/usbh_hid_lvgl.c

+ 77 - 75
platform/lvgl/usbh_hid_lvgl.c

@@ -10,7 +10,6 @@
 #include "usbh_hid.h"
 #include "usbh_hid_lvgl.h"
 
-
 /* LVGL image of cursor */
 LV_IMG_DECLARE(img_cursor)
 
@@ -63,22 +62,22 @@ static void usbh_hid_lvgl_read_mouse(lv_indev_t *indev_drv, lv_indev_data_t *dat
 
     /* Get coordinates by rotation with sensitivity */
     switch (lv_display_get_rotation(disp)) {
-    case LV_DISPLAY_ROTATION_0:
-        data->point.x = ctx->mouse.x / ctx->mouse.sensitivity;
-        data->point.y = ctx->mouse.y / ctx->mouse.sensitivity;
-        break;
-    case LV_DISPLAY_ROTATION_90:
-        data->point.y = width - ctx->mouse.x / ctx->mouse.sensitivity;
-        data->point.x = ctx->mouse.y / ctx->mouse.sensitivity;
-        break;
-    case LV_DISPLAY_ROTATION_180:
-        data->point.x = width - ctx->mouse.x / ctx->mouse.sensitivity;
-        data->point.y = height - ctx->mouse.y / ctx->mouse.sensitivity;
-        break;
-    case LV_DISPLAY_ROTATION_270:
-        data->point.y = ctx->mouse.x / ctx->mouse.sensitivity;
-        data->point.x = height - ctx->mouse.y / ctx->mouse.sensitivity;
-        break;
+        case LV_DISPLAY_ROTATION_0:
+            data->point.x = ctx->mouse.x / ctx->mouse.sensitivity;
+            data->point.y = ctx->mouse.y / ctx->mouse.sensitivity;
+            break;
+        case LV_DISPLAY_ROTATION_90:
+            data->point.y = width - ctx->mouse.x / ctx->mouse.sensitivity;
+            data->point.x = ctx->mouse.y / ctx->mouse.sensitivity;
+            break;
+        case LV_DISPLAY_ROTATION_180:
+            data->point.x = width - ctx->mouse.x / ctx->mouse.sensitivity;
+            data->point.y = height - ctx->mouse.y / ctx->mouse.sensitivity;
+            break;
+        case LV_DISPLAY_ROTATION_270:
+            data->point.y = ctx->mouse.x / ctx->mouse.sensitivity;
+            data->point.x = height - ctx->mouse.y / ctx->mouse.sensitivity;
+            break;
     }
 
     if (ctx->mouse.left_button) {
@@ -178,64 +177,65 @@ static char usb_hid_get_keyboard_char(uint8_t key, uint8_t shift)
 {
     char ret_key = 0;
 
-    const uint8_t keycode2ascii [57][2] = {
-        {0, 0}, /* HID_KEY_NO_PRESS        */
-        {0, 0}, /* HID_KEY_ROLLOVER        */
-        {0, 0}, /* HID_KEY_POST_FAIL       */
-        {0, 0}, /* HID_KEY_ERROR_UNDEFINED */
-        {'a', 'A'}, /* HID_KEY_A               */
-        {'b', 'B'}, /* HID_KEY_B               */
-        {'c', 'C'}, /* HID_KEY_C               */
-        {'d', 'D'}, /* HID_KEY_D               */
-        {'e', 'E'}, /* HID_KEY_E               */
-        {'f', 'F'}, /* HID_KEY_F               */
-        {'g', 'G'}, /* HID_KEY_G               */
-        {'h', 'H'}, /* HID_KEY_H               */
-        {'i', 'I'}, /* HID_KEY_I               */
-        {'j', 'J'}, /* HID_KEY_J               */
-        {'k', 'K'}, /* HID_KEY_K               */
-        {'l', 'L'}, /* HID_KEY_L               */
-        {'m', 'M'}, /* HID_KEY_M               */
-        {'n', 'N'}, /* HID_KEY_N               */
-        {'o', 'O'}, /* HID_KEY_O               */
-        {'p', 'P'}, /* HID_KEY_P               */
-        {'q', 'Q'}, /* HID_KEY_Q               */
-        {'r', 'R'}, /* HID_KEY_R               */
-        {'s', 'S'}, /* HID_KEY_S               */
-        {'t', 'T'}, /* HID_KEY_T               */
-        {'u', 'U'}, /* HID_KEY_U               */
-        {'v', 'V'}, /* HID_KEY_V               */
-        {'w', 'W'}, /* HID_KEY_W               */
-        {'x', 'X'}, /* HID_KEY_X               */
-        {'y', 'Y'}, /* HID_KEY_Y               */
-        {'z', 'Z'}, /* HID_KEY_Z               */
-        {'1', '!'}, /* HID_KEY_1               */
-        {'2', '@'}, /* HID_KEY_2               */
-        {'3', '#'}, /* HID_KEY_3               */
-        {'4', '$'}, /* HID_KEY_4               */
-        {'5', '%'}, /* HID_KEY_5               */
-        {'6', '^'}, /* HID_KEY_6               */
-        {'7', '&'}, /* HID_KEY_7               */
-        {'8', '*'}, /* HID_KEY_8               */
-        {'9', '('}, /* HID_KEY_9               */
-        {'0', ')'}, /* HID_KEY_0               */
-        {'\r', '\r'}, /* HID_KEY_ENTER           */
-        {0, 0}, /* HID_KEY_ESC             */
-        {'\b', 0}, /* HID_KEY_DEL             */
-        {0, 0}, /* HID_KEY_TAB             */
-        {' ', ' '}, /* HID_KEY_SPACE           */
-        {'-', '_'}, /* HID_KEY_MINUS           */
-        {'=', '+'}, /* HID_KEY_EQUAL           */
-        {'[', '{'}, /* HID_KEY_OPEN_BRACKET    */
-        {']', '}'}, /* HID_KEY_CLOSE_BRACKET   */
-        {'\\', '|'}, /* HID_KEY_BACK_SLASH      */
-        {'\\', '|'}, /* HID_KEY_SHARP           */  // HOTFIX: for NonUS Keyboards repeat HID_KEY_BACK_SLASH
-        {';', ':'}, /* HID_KEY_COLON           */
-        {'\'', '"'}, /* HID_KEY_QUOTE           */
-        {'`', '~'}, /* HID_KEY_TILDE           */
-        {',', '<'}, /* HID_KEY_LESS            */
-        {'.', '>'}, /* HID_KEY_GREATER         */
-        {'/', '?'} /* HID_KEY_SLASH           */
+    const uint8_t keycode2ascii[57][2] = {
+        { 0, 0 },       /* HID_KEY_NO_PRESS        */
+        { 0, 0 },       /* HID_KEY_ROLLOVER        */
+        { 0, 0 },       /* HID_KEY_POST_FAIL       */
+        { 0, 0 },       /* HID_KEY_ERROR_UNDEFINED */
+        { 'a', 'A' },   /* HID_KEY_A               */
+        { 'b', 'B' },   /* HID_KEY_B               */
+        { 'c', 'C' },   /* HID_KEY_C               */
+        { 'd', 'D' },   /* HID_KEY_D               */
+        { 'e', 'E' },   /* HID_KEY_E               */
+        { 'f', 'F' },   /* HID_KEY_F               */
+        { 'g', 'G' },   /* HID_KEY_G               */
+        { 'h', 'H' },   /* HID_KEY_H               */
+        { 'i', 'I' },   /* HID_KEY_I               */
+        { 'j', 'J' },   /* HID_KEY_J               */
+        { 'k', 'K' },   /* HID_KEY_K               */
+        { 'l', 'L' },   /* HID_KEY_L               */
+        { 'm', 'M' },   /* HID_KEY_M               */
+        { 'n', 'N' },   /* HID_KEY_N               */
+        { 'o', 'O' },   /* HID_KEY_O               */
+        { 'p', 'P' },   /* HID_KEY_P               */
+        { 'q', 'Q' },   /* HID_KEY_Q               */
+        { 'r', 'R' },   /* HID_KEY_R               */
+        { 's', 'S' },   /* HID_KEY_S               */
+        { 't', 'T' },   /* HID_KEY_T               */
+        { 'u', 'U' },   /* HID_KEY_U               */
+        { 'v', 'V' },   /* HID_KEY_V               */
+        { 'w', 'W' },   /* HID_KEY_W               */
+        { 'x', 'X' },   /* HID_KEY_X               */
+        { 'y', 'Y' },   /* HID_KEY_Y               */
+        { 'z', 'Z' },   /* HID_KEY_Z               */
+        { '1', '!' },   /* HID_KEY_1               */
+        { '2', '@' },   /* HID_KEY_2               */
+        { '3', '#' },   /* HID_KEY_3               */
+        { '4', '$' },   /* HID_KEY_4               */
+        { '5', '%' },   /* HID_KEY_5               */
+        { '6', '^' },   /* HID_KEY_6               */
+        { '7', '&' },   /* HID_KEY_7               */
+        { '8', '*' },   /* HID_KEY_8               */
+        { '9', '(' },   /* HID_KEY_9               */
+        { '0', ')' },   /* HID_KEY_0               */
+        { '\r', '\r' }, /* HID_KEY_ENTER           */
+        { 0, 0 },       /* HID_KEY_ESC             */
+        { '\b', 0 },    /* HID_KEY_DEL             */
+        { 0, 0 },       /* HID_KEY_TAB             */
+        { ' ', ' ' },   /* HID_KEY_SPACE           */
+        { '-', '_' },   /* HID_KEY_MINUS           */
+        { '=', '+' },   /* HID_KEY_EQUAL           */
+        { '[', '{' },   /* HID_KEY_OPEN_BRACKET    */
+        { ']', '}' },   /* HID_KEY_CLOSE_BRACKET   */
+        { '\\', '|' },  /* HID_KEY_BACK_SLASH      */
+        { '\\', '|' },
+        /* HID_KEY_SHARP           */ // HOTFIX: for NonUS Keyboards repeat HID_KEY_BACK_SLASH
+        { ';', ':' },                 /* HID_KEY_COLON           */
+        { '\'', '"' },                /* HID_KEY_QUOTE           */
+        { '`', '~' },                 /* HID_KEY_TILDE           */
+        { ',', '<' },                 /* HID_KEY_LESS            */
+        { '.', '>' },                 /* HID_KEY_GREATER         */
+        { '/', '?' }                  /* HID_KEY_SLASH           */
     };
 
     if (shift > 1) {
@@ -310,6 +310,8 @@ void usbh_hid_keyboard_callback(void *arg, int nbytes)
 
 void usbh_hid_run(struct usbh_hid *hid_class)
 {
+    usbh_hid_set_protocol(hid_class, 0);
+
     if (hid_class->hport->config.intf[hid_class->intf].altsetting[0].intf_desc.bInterfaceProtocol == HID_PROTOCOL_KEYBOARD) {
         usbh_int_urb_fill(&hid_class->intin_urb, hid_class->hport, hid_class->intin, hid_keyboard_buffer, hid_class->intin->wMaxPacketSize, 0,
                           usbh_hid_keyboard_callback, hid_class);