USB HID关于USAGE、USAGE PAGE、USAGE ID的一些理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hzt12345hf/article/details/51995042

最近几天一直在研究USB HID的spec,对Usage、Usage Page、Usage ID的关系感觉比较混乱,这里就总结一下这三者的关系,如果有不对的地方,欢迎指出,谢谢。


HID1.11(点击下载文档)里对此部分的描述:
HID 1.11
大致翻译如下:

解析Usage条目、Usage Minimum条目和Usage Maximum条目的bSize区域来决定各种不同的用途。如果bSize为3,那么这个条目被解析为一个32位无符号值,其中高16位表示Usage Page,低16位表示Usage ID,包含Usage Page和Usage ID的32位用途条目常被称作扩展用途。
如果bSize为1或2,那么Usage用于表示当前Usage Page下的Usage ID。当顺序遇到一个主条目时,最近定义的Usage Page和Usage将组成一个完整的用途值。

HUT1.12(点击下载文档)里对此部分也有基本相同的描述:
HUT1.12


从如上的文档可以看出,Usage有时候可以代表数据的用途页和数据的ID,有时候只能代表数据的ID,然而在很多HID描述符中很少用到4字节数据的条目,所以常见的还是Usage = Usage ID,所以常见的鼠标HID报告描述符中如Usage (X)和Usage (Y)只是指明了用途的ID,需要配合上最近一个Usage Page才能真正组成一个输入输出数据的用途,这样就不用在怀疑没定义Usage ID怎么发数据这样的问题了。

猜你喜欢

转载自blog.csdn.net/hzt12345hf/article/details/51995042