|
10 | 10 | #include "usbh_hid.h" |
11 | 11 | #include "usbh_hid_lvgl.h" |
12 | 12 |
|
13 | | - |
14 | 13 | /* LVGL image of cursor */ |
15 | 14 | LV_IMG_DECLARE(img_cursor) |
16 | 15 |
|
@@ -63,22 +62,22 @@ static void usbh_hid_lvgl_read_mouse(lv_indev_t *indev_drv, lv_indev_data_t *dat |
63 | 62 |
|
64 | 63 | /* Get coordinates by rotation with sensitivity */ |
65 | 64 | 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; |
82 | 81 | } |
83 | 82 |
|
84 | 83 | if (ctx->mouse.left_button) { |
@@ -178,64 +177,65 @@ static char usb_hid_get_keyboard_char(uint8_t key, uint8_t shift) |
178 | 177 | { |
179 | 178 | char ret_key = 0; |
180 | 179 |
|
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 */ |
239 | 239 | }; |
240 | 240 |
|
241 | 241 | if (shift > 1) { |
@@ -310,6 +310,8 @@ void usbh_hid_keyboard_callback(void *arg, int nbytes) |
310 | 310 |
|
311 | 311 | void usbh_hid_run(struct usbh_hid *hid_class) |
312 | 312 | { |
| 313 | + usbh_hid_set_protocol(hid_class, 0); |
| 314 | + |
313 | 315 | if (hid_class->hport->config.intf[hid_class->intf].altsetting[0].intf_desc.bInterfaceProtocol == HID_PROTOCOL_KEYBOARD) { |
314 | 316 | usbh_int_urb_fill(&hid_class->intin_urb, hid_class->hport, hid_class->intin, hid_keyboard_buffer, hid_class->intin->wMaxPacketSize, 0, |
315 | 317 | usbh_hid_keyboard_callback, hid_class); |
|
0 commit comments