USB-Wii Classic Controller (15 / 18 steg)
USB-mus
HID rapport deskriptorn har ändrats för att ange att användningen är en muspekare. X och Y rörelser är nu relativa i stället för absoluta. Det finns endast tre bitar som används för musknapparna (vänster klicka, högerklicka, mellersta klick), det finns också vertikala musen hjulet rulla och horisontell rullning (verkligen inte fungerar utan Logitech drivrutiner, eftersom det inte är en standardfunktion).
Datastrukturen blir ungefär så här:
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | |
Byte 0 | Värdelös | Värdelös | Värdelös | Värdelös | Värdelös | Mittenknappen | Vänster knapp | Höger knapp |
Byte 1 | X-axeln relativa rörelse som heltal | |||||||
Byte 2 | Y-axeln relativa rörelse som heltal med tecken | |||||||
Byte 3 | Lodrät skriftrulle som heltal med tecken | |||||||
Byte 4 | Vågrät skriftrulle som heltal med tecken |
Det motsvarande C data strukt ser ut:
statiska struct mouse_report_t
{
uint8_t knappar; knappen mask (..... M L R)
int8_t x; mus x rörelse
int8_t y; y musrörelse
int8_t v_wheel; musen hjulet rörelse
int8_t h_wheel; musen hjulet rörelse
} mouse_report;
HID rapport deskriptorn ser ut
PROGMEM char usbHidReportDescriptor [61] = {
kontrollera storlek matchar USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH i usbconfig.h
0x05, 0x01, / / USAGE_PAGE (generiska skrivbordet)
0x09, 0x02, / / användning (mus)
0xa1, 0x01, / / samling (ansökan)
0x09, 0x01, / / användning (pekare)
0xa1, 0x00, / / samling (fysiska)
0x05, 0x09, / / USAGE_PAGE (knapp)
0x19, 0x01, / / USAGE_MINIMUM (knappen 1)
0x29, 0x03, / / USAGE_MAXIMUM (knappen 3)
0X15, 0X00, / / LOGICAL_MINIMUM (0)
0X25, 0X01, / / LOGICAL_MAXIMUM (1)
0X95, 0X03, / / REPORT_COUNT (3)
0X75, 0X01, / / REPORT_SIZE (1)
0x81, 0x02, / / ingång (Data, Var, Abs)
0X95, 0X01, / / REPORT_COUNT (1)
0X75, 0X05, / / REPORT_SIZE (5)
0x81, 0x03, / / ingång (Cnst, Var, Abs)
0x05, 0x01, / / USAGE_PAGE (generiska skrivbordet)
0X09, 0X30, / / ANVÄNDNING (X)
0X09, 0X31, / / ANVÄNDNING (Y)
0x09, 0x38, / / användning (hjul)
0X15, 0X81, / / LOGICAL_MINIMUM (-127)
0X25, 0X7F, / / LOGICAL_MAXIMUM (127)
0X75, 0X08, / / REPORT_SIZE (8)
0X95, 0X03, / / REPORT_COUNT (3)
0x81, 0x06, / / ingång (Data, Var, Rel)
0x05, 0x0c, / / USAGE_PAGE (konsumentenheter)
0x0A, 0x38, 0x02, / / användning (Undefined)
0X95, 0X01, / / REPORT_COUNT (1)
0x81, 0x06, / / ingång (Data, Var, Rel)
0XC0, / / END_COLLECTION
0XC0 / / END_COLLECTION
};
Några mindre ändringar gjordes i "usbconfig.h", främst de leverantör och produkt-ID har ändrats för att klona en mus Logitech varumärke. Produkt och tillverkning strängarna har ändrats men det börjar inte gälla i Windows på grund av att windowsupdate finner produktinformationen från Windows Update. Längden på HID rapport deskriptorn också ändras för att matcha storleken på matrisen.