#include "usb_api.h" #include "usb_descriptor_mouse_report.h" uint8_t UsbMouseReportDescriptor[USB_MOUSE_REPORT_DESCRIPTOR_LENGTH] = { HID_RI_USAGE_PAGE(8, HID_RI_USAGE_PAGE_GENERIC_DESKTOP), HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_MOUSE), HID_RI_COLLECTION(8, HID_RI_COLLECTION_APPLICATION), HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_POINTER), HID_RI_COLLECTION(8, HID_RI_COLLECTION_PHYSICAL), // Mouse buttons HID_RI_USAGE_PAGE(8, HID_RI_USAGE_PAGE_BUTTONS), HID_RI_USAGE_MINIMUM(8, 0x01), HID_RI_USAGE_MAXIMUM(8, USB_MOUSE_REPORT_DESCRIPTOR_BUTTONS), HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(8, 0x01), HID_RI_REPORT_COUNT(8, USB_MOUSE_REPORT_DESCRIPTOR_BUTTONS), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), // Mouse buttons padding HID_RI_REPORT_COUNT(8, 0x01), HID_RI_REPORT_SIZE(8, USB_MOUSE_REPORT_DESCRIPTOR_BUTTONS_PADDING), HID_RI_INPUT(8, HID_IOF_CONSTANT), // Mouse X and Y coordinates HID_RI_USAGE_PAGE(8, HID_RI_USAGE_PAGE_GENERIC_DESKTOP), HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_X), HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_Y), HID_RI_LOGICAL_MINIMUM(16, USB_MOUSE_REPORT_DESCRIPTOR_MIN_AXIS_VALUE), HID_RI_LOGICAL_MAXIMUM(16, USB_MOUSE_REPORT_DESCRIPTOR_MAX_AXIS_VALUE), HID_RI_PHYSICAL_MINIMUM(16, USB_MOUSE_REPORT_DESCRIPTOR_MIN_AXIS_PHYSICAL_VALUE), HID_RI_PHYSICAL_MAXIMUM(16, USB_MOUSE_REPORT_DESCRIPTOR_MAX_AXIS_PHYSICAL_VALUE), HID_RI_REPORT_COUNT(8, 0x02), HID_RI_REPORT_SIZE(8, 16), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE), HID_RI_COLLECTION(8, HID_RI_COLLECTION_LOGICAL), // Vertical wheel resolution multiplier HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_RESOLUTION_MULTIPLIER), HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(8, 0x01), HID_RI_PHYSICAL_MINIMUM(8, 0x01), HID_RI_PHYSICAL_MAXIMUM(8, 0x04), HID_RI_REPORT_SIZE(8, 0x02), HID_RI_REPORT_COUNT(8, 0x01), HID_RI_PUSH(0), HID_RI_FEATURE(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), // Vertical wheel HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_WHEEL), HID_RI_LOGICAL_MINIMUM(8, -127), HID_RI_LOGICAL_MAXIMUM(8, 127), HID_RI_PHYSICAL_MINIMUM(8, 0x00), HID_RI_PHYSICAL_MAXIMUM(8, 0x00), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE), HID_RI_END_COLLECTION(0), HID_RI_COLLECTION(8, HID_RI_COLLECTION_LOGICAL), // Horizontal wheel resolution multiplier HID_RI_USAGE(8, HID_RI_USAGE_GENERIC_DESKTOP_RESOLUTION_MULTIPLIER), HID_RI_POP(0), HID_RI_FEATURE(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), // Padding HID_RI_PHYSICAL_MINIMUM(8, 0x00), HID_RI_PHYSICAL_MAXIMUM(8, 0x00), HID_RI_REPORT_SIZE(8, 0x04), HID_RI_FEATURE(8, HID_IOF_CONSTANT | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), // Horizontal wheel HID_RI_USAGE_PAGE(8, HID_RI_USAGE_PAGE_CONSUMER), HID_RI_USAGE(16, HID_RI_USAGE_CONSUMER_AC_PAN), HID_RI_LOGICAL_MINIMUM(8, -127), HID_RI_LOGICAL_MAXIMUM(8, 127), HID_RI_REPORT_SIZE(8, 0x08), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0) };