Re: [RFC/RFT] HID: primax: Fix wireless keyboards descriptor

From: Nicolas Saenz Julienne
Date: Thu Feb 28 2019 - 13:01:23 EST


On Thu, 2019-02-28 at 17:02 +0000, Junge, Terry wrote:
> This could also be a parser error. In the HID specification section 6.2.2.8 it
> states that the last declared Usage Page is applied to Usages when the Main
> item is encountered.
>
> "If the bSize field = 1 or 2 then the Usage is interpreted as an unsigned
> value
> that selects a Usage ID on the currently defined Usage Page. When the parser
> encounters a main item it concatenates the last declared Usage Page with a
> Usage to form a complete usage value. Extended usages can be used to
> override the currently defined Usage Page for individual usages."
>

Hi Terry, thanks for the comment.
Just for the record the paragraph I cited on my patch is the following:

6.2.2.7 Global Items

[...]

Usage Page: Unsigned integer specifying the current Usage Page. Since a
usage are 32 bit values, Usage Page items can be used to conserve space
in a report descriptor by setting the high order 16 bits of a
subsequent usages. Any usage that follows which is defines* 16 bits or
less is interpreted as a Usage ID and concatenated with the Usage Page
to form a 32 bit Usage.

* This is a spec errata, I belive it should say "defined"

As you can see they use the word "follows" which in my opinion contradicts the
paragraph you pointed out. That said I may be wrong, I'm not too good at
reading specs :).

I checked the HID parser and it's indeed written assuming local items are
preceded by a Usage Page. I'd be glad to fix it there, but it would be nice to
have the mantainer's opinion on the matter first.

Regards,
Nicolas

Attachment: signature.asc
Description: This is a digitally signed message part