Zwei verschiedene Berichte werden immer nacheinander gemeldet, da beide die gleiche Interrupt-Pipe verwenden, um durchzukommen.
Wenn Sie jetzt keine Bootprotokoll-Tastatur- und -Mausberichte benötigen, können Sie einen benutzerdefinierten Berichtsdeskriptor entwerfen, der einen einzelnen Bericht mit sowohl Maus- als auch Tastaturdaten beschreibt. Auf diese Weise können Sie beide Datensätze synchron senden.
Mit einem niedrigeren Abfrageintervall wird es jedoch einfacher.
Beispielbericht Deskriptors:
0x05, 0x01, // UsagePage (desktop)
0x09, 0x06, // Usage (Keyboard)
0xa1, 0x01, // Collection (Application)
0x85, 0x01, // ReportID (1)
0x25, 0x01, // LogicalMaximum (1)
0x75, 0x01, // ReportSize (1)
0x95, 0x08, // ReportCount (8)
0x05, 0x07, // UsagePage (keyboard)
0x19, 0xe0, // UsageMinimum (LeftControl)
0x29, 0xe7, // UsageMaximum (RightGui)
0x81, 0x02, // Input (Variable)
0x26, 0xdd, 0x00, // LogicalMaximum (221)
0x75, 0x08, // ReportSize (8)
0x95, 0x06, // ReportCount (6)
0x19, 0x00, // UsageMinimum (NoEvent)
0x29, 0xdd, // UsageMaximum (KeypadHexadecimal)
0x81, 0x00, // Input
0x25, 0x01, // LogicalMaximum (1)
0x75, 0x01, // ReportSize (1)
0x95, 0x03, // ReportCount (3)
0x05, 0x08, // UsagePage (led)
0x19, 0x01, // UsageMinimum (NumLock)
0x29, 0x03, // UsageMaximum (ScrollLock)
0x91, 0x02, // Output (Variable)
0x15, 0x81, // LogicalMinimum (-127)
0x25, 0x7f, // LogicalMaximum (127)
0x75, 0x08, // ReportSize (8)
0x95, 0x02, // ReportCount (2)
0x05, 0x01, // UsagePage (desktop)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
0x81, 0x04, // Input (Relative)
0x15, 0x00, // LogicalMinimum (0)
0x25, 0x01, // LogicalMaximum (1)
0x75, 0x01, // ReportSize (1)
0x95, 0x03, // ReportCount (3)
0x05, 0x09, // UsagePage (button)
0x19, 0x01, // UsageMinimum (Button(1))
0x29, 0x03, // UsageMaximum (Button(3))
0x81, 0x02, // Input (Variable)
0xc0, // EndCollection
Dies beschreibt:
einen Eingangs Report # 1, enthaltend:
Data Byte : [0 ][1 .. 6][7 ][8 ][9 ]
Data : [Modifiers][Keys ][Mouse dx][Mouse dy][Mouse Btns]
ein Ausgangsbericht # 1, enthaltend:
Data Byte : [0 ]
Data : [Kbd leds]
Ich dachte, der Host würde ein HID-Mausgerät nicht laden, es sei denn, ich erstellte speziell eine Top-Level-Sammlung mit dem Feld "Verwendung" als "Maus" definiert. Ich werde Ihre Lösung versuchen und Sie wissen lassen, ob es funktioniert. Vielen Dank! – ismarlowe