Skip to content

Commit 947f853

Browse files
committed
feat(platform/lvgl): enable hid boot protocol
Signed-off-by: sakumisu <1203593632@qq.com>
1 parent 73c8062 commit 947f853

File tree

1 file changed

+77
-75
lines changed

1 file changed

+77
-75
lines changed

platform/lvgl/usbh_hid_lvgl.c

Lines changed: 77 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
#include "usbh_hid.h"
1111
#include "usbh_hid_lvgl.h"
1212

13-
1413
/* LVGL image of cursor */
1514
LV_IMG_DECLARE(img_cursor)
1615

@@ -63,22 +62,22 @@ static void usbh_hid_lvgl_read_mouse(lv_indev_t *indev_drv, lv_indev_data_t *dat
6362

6463
/* Get coordinates by rotation with sensitivity */
6564
switch (lv_display_get_rotation(disp)) {
66-
case LV_DISPLAY_ROTATION_0:
67-
data->point.x = ctx->mouse.x / ctx->mouse.sensitivity;
68-
data->point.y = ctx->mouse.y / ctx->mouse.sensitivity;
69-
break;
70-
case LV_DISPLAY_ROTATION_90:
71-
data->point.y = width - ctx->mouse.x / ctx->mouse.sensitivity;
72-
data->point.x = ctx->mouse.y / ctx->mouse.sensitivity;
73-
break;
74-
case LV_DISPLAY_ROTATION_180:
75-
data->point.x = width - ctx->mouse.x / ctx->mouse.sensitivity;
76-
data->point.y = height - ctx->mouse.y / ctx->mouse.sensitivity;
77-
break;
78-
case LV_DISPLAY_ROTATION_270:
79-
data->point.y = ctx->mouse.x / ctx->mouse.sensitivity;
80-
data->point.x = height - ctx->mouse.y / ctx->mouse.sensitivity;
81-
break;
65+
case LV_DISPLAY_ROTATION_0:
66+
data->point.x = ctx->mouse.x / ctx->mouse.sensitivity;
67+
data->point.y = ctx->mouse.y / ctx->mouse.sensitivity;
68+
break;
69+
case LV_DISPLAY_ROTATION_90:
70+
data->point.y = width - ctx->mouse.x / ctx->mouse.sensitivity;
71+
data->point.x = ctx->mouse.y / ctx->mouse.sensitivity;
72+
break;
73+
case LV_DISPLAY_ROTATION_180:
74+
data->point.x = width - ctx->mouse.x / ctx->mouse.sensitivity;
75+
data->point.y = height - ctx->mouse.y / ctx->mouse.sensitivity;
76+
break;
77+
case LV_DISPLAY_ROTATION_270:
78+
data->point.y = ctx->mouse.x / ctx->mouse.sensitivity;
79+
data->point.x = height - ctx->mouse.y / ctx->mouse.sensitivity;
80+
break;
8281
}
8382

8483
if (ctx->mouse.left_button) {
@@ -178,64 +177,65 @@ static char usb_hid_get_keyboard_char(uint8_t key, uint8_t shift)
178177
{
179178
char ret_key = 0;
180179

181-
const uint8_t keycode2ascii [57][2] = {
182-
{0, 0}, /* HID_KEY_NO_PRESS */
183-
{0, 0}, /* HID_KEY_ROLLOVER */
184-
{0, 0}, /* HID_KEY_POST_FAIL */
185-
{0, 0}, /* HID_KEY_ERROR_UNDEFINED */
186-
{'a', 'A'}, /* HID_KEY_A */
187-
{'b', 'B'}, /* HID_KEY_B */
188-
{'c', 'C'}, /* HID_KEY_C */
189-
{'d', 'D'}, /* HID_KEY_D */
190-
{'e', 'E'}, /* HID_KEY_E */
191-
{'f', 'F'}, /* HID_KEY_F */
192-
{'g', 'G'}, /* HID_KEY_G */
193-
{'h', 'H'}, /* HID_KEY_H */
194-
{'i', 'I'}, /* HID_KEY_I */
195-
{'j', 'J'}, /* HID_KEY_J */
196-
{'k', 'K'}, /* HID_KEY_K */
197-
{'l', 'L'}, /* HID_KEY_L */
198-
{'m', 'M'}, /* HID_KEY_M */
199-
{'n', 'N'}, /* HID_KEY_N */
200-
{'o', 'O'}, /* HID_KEY_O */
201-
{'p', 'P'}, /* HID_KEY_P */
202-
{'q', 'Q'}, /* HID_KEY_Q */
203-
{'r', 'R'}, /* HID_KEY_R */
204-
{'s', 'S'}, /* HID_KEY_S */
205-
{'t', 'T'}, /* HID_KEY_T */
206-
{'u', 'U'}, /* HID_KEY_U */
207-
{'v', 'V'}, /* HID_KEY_V */
208-
{'w', 'W'}, /* HID_KEY_W */
209-
{'x', 'X'}, /* HID_KEY_X */
210-
{'y', 'Y'}, /* HID_KEY_Y */
211-
{'z', 'Z'}, /* HID_KEY_Z */
212-
{'1', '!'}, /* HID_KEY_1 */
213-
{'2', '@'}, /* HID_KEY_2 */
214-
{'3', '#'}, /* HID_KEY_3 */
215-
{'4', '$'}, /* HID_KEY_4 */
216-
{'5', '%'}, /* HID_KEY_5 */
217-
{'6', '^'}, /* HID_KEY_6 */
218-
{'7', '&'}, /* HID_KEY_7 */
219-
{'8', '*'}, /* HID_KEY_8 */
220-
{'9', '('}, /* HID_KEY_9 */
221-
{'0', ')'}, /* HID_KEY_0 */
222-
{'\r', '\r'}, /* HID_KEY_ENTER */
223-
{0, 0}, /* HID_KEY_ESC */
224-
{'\b', 0}, /* HID_KEY_DEL */
225-
{0, 0}, /* HID_KEY_TAB */
226-
{' ', ' '}, /* HID_KEY_SPACE */
227-
{'-', '_'}, /* HID_KEY_MINUS */
228-
{'=', '+'}, /* HID_KEY_EQUAL */
229-
{'[', '{'}, /* HID_KEY_OPEN_BRACKET */
230-
{']', '}'}, /* HID_KEY_CLOSE_BRACKET */
231-
{'\\', '|'}, /* HID_KEY_BACK_SLASH */
232-
{'\\', '|'}, /* HID_KEY_SHARP */ // HOTFIX: for NonUS Keyboards repeat HID_KEY_BACK_SLASH
233-
{';', ':'}, /* HID_KEY_COLON */
234-
{'\'', '"'}, /* HID_KEY_QUOTE */
235-
{'`', '~'}, /* HID_KEY_TILDE */
236-
{',', '<'}, /* HID_KEY_LESS */
237-
{'.', '>'}, /* HID_KEY_GREATER */
238-
{'/', '?'} /* HID_KEY_SLASH */
180+
const uint8_t keycode2ascii[57][2] = {
181+
{ 0, 0 }, /* HID_KEY_NO_PRESS */
182+
{ 0, 0 }, /* HID_KEY_ROLLOVER */
183+
{ 0, 0 }, /* HID_KEY_POST_FAIL */
184+
{ 0, 0 }, /* HID_KEY_ERROR_UNDEFINED */
185+
{ 'a', 'A' }, /* HID_KEY_A */
186+
{ 'b', 'B' }, /* HID_KEY_B */
187+
{ 'c', 'C' }, /* HID_KEY_C */
188+
{ 'd', 'D' }, /* HID_KEY_D */
189+
{ 'e', 'E' }, /* HID_KEY_E */
190+
{ 'f', 'F' }, /* HID_KEY_F */
191+
{ 'g', 'G' }, /* HID_KEY_G */
192+
{ 'h', 'H' }, /* HID_KEY_H */
193+
{ 'i', 'I' }, /* HID_KEY_I */
194+
{ 'j', 'J' }, /* HID_KEY_J */
195+
{ 'k', 'K' }, /* HID_KEY_K */
196+
{ 'l', 'L' }, /* HID_KEY_L */
197+
{ 'm', 'M' }, /* HID_KEY_M */
198+
{ 'n', 'N' }, /* HID_KEY_N */
199+
{ 'o', 'O' }, /* HID_KEY_O */
200+
{ 'p', 'P' }, /* HID_KEY_P */
201+
{ 'q', 'Q' }, /* HID_KEY_Q */
202+
{ 'r', 'R' }, /* HID_KEY_R */
203+
{ 's', 'S' }, /* HID_KEY_S */
204+
{ 't', 'T' }, /* HID_KEY_T */
205+
{ 'u', 'U' }, /* HID_KEY_U */
206+
{ 'v', 'V' }, /* HID_KEY_V */
207+
{ 'w', 'W' }, /* HID_KEY_W */
208+
{ 'x', 'X' }, /* HID_KEY_X */
209+
{ 'y', 'Y' }, /* HID_KEY_Y */
210+
{ 'z', 'Z' }, /* HID_KEY_Z */
211+
{ '1', '!' }, /* HID_KEY_1 */
212+
{ '2', '@' }, /* HID_KEY_2 */
213+
{ '3', '#' }, /* HID_KEY_3 */
214+
{ '4', '$' }, /* HID_KEY_4 */
215+
{ '5', '%' }, /* HID_KEY_5 */
216+
{ '6', '^' }, /* HID_KEY_6 */
217+
{ '7', '&' }, /* HID_KEY_7 */
218+
{ '8', '*' }, /* HID_KEY_8 */
219+
{ '9', '(' }, /* HID_KEY_9 */
220+
{ '0', ')' }, /* HID_KEY_0 */
221+
{ '\r', '\r' }, /* HID_KEY_ENTER */
222+
{ 0, 0 }, /* HID_KEY_ESC */
223+
{ '\b', 0 }, /* HID_KEY_DEL */
224+
{ 0, 0 }, /* HID_KEY_TAB */
225+
{ ' ', ' ' }, /* HID_KEY_SPACE */
226+
{ '-', '_' }, /* HID_KEY_MINUS */
227+
{ '=', '+' }, /* HID_KEY_EQUAL */
228+
{ '[', '{' }, /* HID_KEY_OPEN_BRACKET */
229+
{ ']', '}' }, /* HID_KEY_CLOSE_BRACKET */
230+
{ '\\', '|' }, /* HID_KEY_BACK_SLASH */
231+
{ '\\', '|' },
232+
/* HID_KEY_SHARP */ // HOTFIX: for NonUS Keyboards repeat HID_KEY_BACK_SLASH
233+
{ ';', ':' }, /* HID_KEY_COLON */
234+
{ '\'', '"' }, /* HID_KEY_QUOTE */
235+
{ '`', '~' }, /* HID_KEY_TILDE */
236+
{ ',', '<' }, /* HID_KEY_LESS */
237+
{ '.', '>' }, /* HID_KEY_GREATER */
238+
{ '/', '?' } /* HID_KEY_SLASH */
239239
};
240240

241241
if (shift > 1) {
@@ -310,6 +310,8 @@ void usbh_hid_keyboard_callback(void *arg, int nbytes)
310310

311311
void usbh_hid_run(struct usbh_hid *hid_class)
312312
{
313+
usbh_hid_set_protocol(hid_class, 0);
314+
313315
if (hid_class->hport->config.intf[hid_class->intf].altsetting[0].intf_desc.bInterfaceProtocol == HID_PROTOCOL_KEYBOARD) {
314316
usbh_int_urb_fill(&hid_class->intin_urb, hid_class->hport, hid_class->intin, hid_keyboard_buffer, hid_class->intin->wMaxPacketSize, 0,
315317
usbh_hid_keyboard_callback, hid_class);

0 commit comments

Comments
 (0)