2022-07-12 01:11 AM
Hello,
I am designing board with stm32f723 with 2 USB. On one side i have mouse attached to STM on other side STM attached to PC. When i transfer report to PC x, y and left click button works fine but i cant make right click.
Bellow is the struct of Mouse HID:
typedef struct _HID_MOUSE_Info
{
uint8_t x;
uint8_t y;
uint8_t buttons[3];
}
HID_MOUSE_Info_TypeDef;
Bellow is the Send Report:
#define CLICK_REPORT_SIZE 5
uint8_t click_report[CLICK_REPORT_SIZE] = {0};
HID_MOUSE_Info_TypeDef *Mouse_Info;
uint8_t leftclick = Mouse_Info -> buttons[0];
uint8_t rightclick = Mouse_Info -> buttons[1];
click_report[0] = leftclick; // works
click_report[1] = Mouse_Info -> x; // works
click_report[2] = Mouse_Info -> y; // works
click_report[3] = rightclick; // does not working
click_report[4] = Mouse_Info -> buttons[2]; // does not working
USBD_HID_SendReport(&hUsbDeviceFS,(uint8_t*)click_report,sizeof(CLICK_REPORT_SIZE));
2022-07-12 01:57 PM
ST provides some examples for host HID, please look at these, you will see that the right mouse button works. The catch is that these examples work only with "classic" mouse report format.
Many mice in the wild have different report formats, so one has to read and parse the HID descriptor.
For example - 12 or 16 bits of X,Y, and have scroll.
This is not trivial and not covered in the ST examples. Try to find "classic" compatible mice for your project.
2022-07-12 10:35 PM
Thank you out of the question is there function to detect disconnection of the device.
USB_DevDisconnect() is not working couse it detect the mouse is of when it is in IDLE.