I have a Descriptor that I've used in a device for some years and just recently ran the old USBCheck (HIDView) and noticed an error:
- Report Descriptor (OS) Passed
- Report Descriptor (TParse) *FAILED* Errors: 2, Warnings: 0
The device is a keyboard (emulator) that should support the entire range of key codes, plus a feature report that I use to send data back to the device. When I look at the detailed parse for the area in question, I get (transcribed from the screen as there is no way to copy it):
:
95 06 Report Count 6
75 08 Report Size 8
15 00 Logical Minimum 0
25 93 Logical Maximum 93h (-109d)
05 07 Usage Page Keyboard
19 00 Usage Minimum Reserved (no event indicated)
29 93 Usage Maximum Keyboard LANG4
81 00 Input Error: Logical Minimum MUST be less than Logical Maximum
09 03 Usage Keyboard ErrorUndefine
75 08 Report Size 8
95 05 Report Count 5
B1 02 Feature (Variable) Error: Logical Minimum MUST be less than Logical Maximum
C0 End Collection
So I played with the Descriptor Tool a bit (struggled more like it). And I figured that maybe since there aren't really any key codes below Aa that I should change the minimum from 0 to 4. Now at the same time, the descriptor tool did not like how I implemented the LANG4 maximum, so it changed my 25 93 into 26 93 00. The report now becomes:
:
95 06 Report Count 6
75 08 Report Size 8
15 00 Logical Minimum 0
26 93 00 Logical Maximum 93h (147d)
05 07 Usage Page Keyboard
19 04 Usage Minimum Keyboard a and A
29 93 Usage Maximum Keyboard LANG4
81 00 Input
09 03 Usage Keyboard ErrorUndefine
75 08 Report Size 8
95 05 Report Count 5
B1 02 Feature (Variable)
C0 End Collection
The error codes go away and the device still appears to work, barring an exhaustive test. The usage near the end "Keyboard ErrorUndefine" I think is supposed to be Usage "Vendor Defined"
That's what I'm after anyway. So do these changes make sense or am I dooming myself in a different way now!?
GB
PS. BTW I have yet to get the newer Command Verifier to operate for me, but will keep working on it.