USB报告描述符的定义 /普通桌面用的鼠标

来源:互联网 发布:重生之软件帝国 编辑:程序博客网 时间:2024/06/08 01:34
//USB报告描述符的定义code uint8 ReportDescriptor[]={ //每行开始的第一字节为该条目的前缀,前缀的格式为: //D7~D4:bTag。D3~D2:bType;D1~D0:bSize。以下分别对每个条目注释。  //这是一个全局(bType为1)条目,选择用途页为普通桌面Generic Desktop Page(0x01) //后面跟一字节数据(bSize为1),后面的字节数就不注释了, //自己根据bSize来判断。 0x05, 0x01, // USAGE_PAGE (Generic Desktop)  //这是一个局部(bType为2)条目,说明接下来的应用集合用途用于鼠标 0x09, 0x02, // USAGE (Mouse)  //这是一个主条目(bType为0)条目,开集合,后面跟的数据0x01表示 //该集合是一个应用集合。它的性质在前面由用途页和用途定义为 //普通桌面用的鼠标。 0xa1, 0x01, // COLLECTION (Application)  //这是一个局部条目。说明用途为指针集合 0x09, 0x01, //   USAGE (Pointer)  //这是一个主条目,开集合,后面跟的数据0x00表示该集合是一个 //物理集合,用途由前面的局部条目定义为指针集合。 0xa1, 0x00, //   COLLECTION (Physical)  //这是一个全局条目,选择用途页为按键(Button Page(0x09)) 0x05, 0x09, //     USAGE_PAGE (Button)  //这是一个局部条目,说明用途的最小值为1。实际上是鼠标左键。 //0x19, 0x01, //     USAGE_MINIMUM (Button 1) //这是一个局部条目,说明用途的最大值为3。实际上是鼠标中键。 //0x29, 0x03, //     USAGE_MAXIMUM (Button 3) //用USAGE逐个写出上面的USAGE_MINIMUM~USAGE_MAXIMUM //0x0B,0x01,0x00,0x09,0x00,//USAGE(BUTTON:BUTTON 1) //0x0B,0x02,0x00,0x09,0x00,//USAGE(BUTTON:BUTTON 2) //0x0B,0x03,0x00,0x09,0x00,//USAGE(BUTTON:BUTTON 3) //还用USAGE_MINIMUM/USAGE_MAXIMUM来写 0x1B,0x01,0x00,0x09,0x00,//USAGE_MINIMUM(BUTTON:BUTTON 1) 0x2B,0x03,0x00,0x09,0x00,//USAGE_MAXIMUM(BUTTON:BUTTON 3) //这是一个全局条目,说明返回的数据的逻辑值(就是我们返回的数据域的值啦) //最小为0。因为我们这里用Bit来表示一个数据域,因此最小为0,最大为1。 0x15, 0x00, //     LOGICAL_MINIMUM (0)  //这是一个全局条目,说明逻辑值最大为1。 0x25, 0x01, //     LOGICAL_MAXIMUM (1)  //这是一个全局条目,说明数据域的数量为三个。 0x95, 0x03, //     REPORT_COUNT (3)  //这是一个全局条目,说明每个数据域的长度为1个bit。 0x75, 0x01, //     REPORT_SIZE (1)  //这是一个主条目,说明有3个长度为1bit的数据域(数量和长度 //由前面的两个全局条目所定义)用来做为输入, //属性为:Data,Var,Abs。Data表示这些数据可以变动,Var表示 //这些数据域是独立的,每个域表示一个意思。Abs表示绝对值。 //这样定义的结果就是,第一个数据域bit0表示按键1(左键)是否按下, //第二个数据域bit1表示按键2(右键)是否按下,第三个数据域bit2表示 //按键3(中键)是否按下。 0x81, 0x02, //     INPUT (Data,Var,Abs)

原创粉丝点击