DeqingSun / ch55xduino

An Arduino-like programming API for the CH55X
GNU Lesser General Public License v2.1
449 stars 87 forks source link

About absolute mouse #151

Closed wukongxuetang closed 8 months ago

wukongxuetang commented 1 year ago

Testing the HID Keyboard mouse combo example, the mouse pointer can only move relative. I know that Arduino has a library named Absmouse that can set the absolute coordinates of the mouse, but I'm not sure if it can be achieved by modifying the hid descriptor?

Thanks!

DeqingSun commented 1 year ago

Yes,

https://github.com/DeqingSun/ch55xduino/blob/1f7bfe1739d98d2beebc8d6e62aaa7aec69d2076/ch55xduino/ch55x/libraries/Generic_Examples/examples/05.USB/HidKeyboardMouse/src/userUsbHidKeyboardMouse/USBconstant.c#L145

Change it to something like:

https://github.com/earlephilhower/arduino-pico/blob/319d36531ed63aa13f97544f18e6de010a0d5e46/cores/rp2040/sdkoverride/tusb_absmouse.h#L63

wukongxuetang commented 1 year ago

I found this code,hope it can work

static const uint8_t HID_REPORT_DESCRIPTOR5[] PROGMEM = { 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x02, // Usage (Mouse) 0xA1, 0x01, // Collection (Application) 0x09, 0x01, // Usage (Pointer) 0xA1, 0x00, // Collection (Physical) 0x85, 0x01, // Report ID (1) 0x05, 0x09, // Usage Page (Button) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x05, // Usage Maximum (0x05) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x95, 0x05, // Report Count (5) 0x75, 0x01, // Report Size (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x95, 0x01, // Report Count (1) 0x75, 0x03, // Report Size (3) 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x30, // Usage (X) 0x09, 0x31, // Usage (Y) 0x16, 0x00, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x7F, // Logical Maximum (32767) 0x36, 0x00, 0x00, // Physical Minimum (0) 0x46, 0xFF, 0x7F, // Physical Maximum (32767) 0x75, 0x10, // Report Size (16) 0x95, 0x02, // Report Count (2) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0xC0 // End Collection };