兩個不同的報告總是按順序報告,因爲他們都使用相同的中斷管道來通過。
現在,如果您不需要使用引導協議鍵盤和鼠標報告,則可以設計一個自定義報告描述符,該描述符描述包含鼠標和鍵盤數據的單個報告。這樣,您就可以同時發送兩個數據集。儘管如此,輪詢時間間隔更短會更容易。
實施例報告描述符:
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
介紹:
我以爲主機不會加載HID鼠標設備,除非我專門創建了一個頂級集合,其中字段「usage」定義爲「Mouse」。我會嘗試你的解決方案,並讓你知道它是否有效。謝謝! – ismarlowe