rom struct{byte report[HID_RPT01_SIZE];}hid_rpt01={ 0x05, 0x01, // ; USAGE_PAGE (Generic Desktop) 0x09, 0x04, // ; USAGE (Joystick) 0xa1, 0x01, // ; COLLECTION (Application) 0xa1, 0x02, // ; COLLECTION (Logical) 0x95, 0x01, // ; REPORT_COUNT (1) 0x75, 0x0a, // ; REPORT_SIZE (10) 0x15, 0x00, // ; LOGICAL_MINIMUM (0) 0x26, 0xff, 0x03, // ; LOGICAL_MAXIMUM (1023) 0x35, 0x00, // ; PHYSICAL_MINIMUM (0) 0x46, 0xff, 0x03, // ; PHYSICAL_MAXIMUM (1023) 0x09, 0x30, // ; USAGE (X) 0x81, 0x02, // ; INPUT (Data,Var,Abs) 0x95, 0x0a, // ; REPORT_COUNT (10) 0x75, 0x01, // ; REPORT_SIZE (1) 0x25, 0x01, // ; LOGICAL_MAXIMUM (1) 0x45, 0x01, // ; PHYSICAL_MAXIMUM (1) 0x05, 0x09, // ; USAGE_PAGE (Button) 0x19, 0x01, // ; USAGE_MINIMUM (Button 1) 0x29, 0x0a, // ; USAGE_MAXIMUM (Button 10) 0x81, 0x02, // ; INPUT (Data,Var,Abs) 0x06, 0x00, 0xff, // ; USAGE_PAGE (Vendor) 0x09, 0x00, // ; USAGE (Vendor) 0x95, 0x04, // ; REPORT_COUNT (4) 0x81, 0x02, // ; INPUT (Data,Var,Abs) 0x95, 0x01, // ; REPORT_COUNT (1) 0x75, 0x08, // ; REPORT_SIZE (8) 0x26, 0xff, 0x00, // ; LOGICAL_MAXIMUM (255) 0x46, 0xff, 0x00, // ; PHYSICAL_MAXIMUM (255) 0x05, 0x01, // ; USAGE_PAGE (Generic Desktop) 0x09, 0x31, // ; USAGE (Y) 0x81, 0x02, // ; INPUT (Data,Var,Abs) 0x95, 0x03, // ; REPORT_COUNT (3) 0x06, 0x00, 0xff, // ; USAGE_PAGE (Vendor Defined Page 1) 0x09, 0x01, // ; USAGE (Vendor Usage 1) 0x81, 0x02, // ; INPUT (Data,Var,Abs) 0xc0, // ; END_COLLECTION 0xa1, 0x02, // ; COLLECTION (Logical) 0x09, 0x02, //; USAGE (Vendor Usage 2) 0x95, 0x07, // ; REPORT_COUNT (7) 0x91, 0x02} // ; OUTPUT (Data,Var,Abs) 0xC0, 0xC0}; rom const unsigned char *rom USB_CD_Ptr[]={&cfg01,&cfg01}; rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002}; rom pFunc ClassReqHandler[1]= { &USBCheckHIDRequest }; #pragma code /** EOF usbdsc.c ****************************************************/