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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux