zoukankan      html  css  js  c++  java
  • 触摸板单点描述符

        //每行开始的第一字节为该条目的前缀,前缀的格式为:
     //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)
     0x85,REPORTID_STOUCH, 
     //这是一个局部条目。说明用途为指针集合
     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)
     
     //这是一个全局条目,说明返回的数据的逻辑值(就是我们返回的数据域的值啦)
     //最小为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)
     
     //这是一个全局条目,说明数据域数量为1个
     0x95, 0x01, //     REPORT_COUNT (1)
     
     //这是一个全局条目,说明每个数据域的长度为5bit。
     0x75, 0x05, //     REPORT_SIZE (5)
     
     //这是一个主条目,输入用,由前面两个全局条目可知,长度为5bit,
     //数量为1个。它的属性为常量(即返回的数据一直是0)。
     //这个只是为了凑齐一个字节(前面用了3个bit)而填充的一些数据
     //而已,所以它是没有实际用途的。
     0x81, 0x03, //     INPUT (Cnst,Var,Abs)
      
     //这是一个全局条目,选择用途页为普通桌面Generic Desktop Page(0x01)
     0x05, 0x01, //     USAGE_PAGE (Generic Desktop)
     
     //这是一个局部条目,说明用途为X轴
     0x09, 0x30, //     USAGE (X)
     
     //这是一个局部条目,说明用途为Y轴
     0x09, 0x31, //     USAGE (Y)
    
     //下面两个为全局条目,说明返回的逻辑最小和最大值。
     //这里定义X和Y轴的逻辑最小值为0,即坐标原点
     //X和Y轴的逻辑最大值为4096,即屏幕右下方的坐标为(4096,4096)。
     //由于4096超过了一字节的范围,所以需要用2字节的格式表示最大值
     0x15, 0x00, //     LOGICAL_MINIMUM (0)
     0x26, 0x00, 0x10, //     LOGICAL_MAXIMUM (4096)
    
     //下面两个为全局条目,说明返回的物理最小和最大值。
     //这里定义X和Y轴的物理最小值为0,即坐标原点
     //X和Y轴的物理最大值为4096,即屏幕右下方的坐标为(4096,4096)。
     //由于4096超过了一字节的范围,所以需要用2字节的格式表示最大值
     0x35, 0x00,    //Physical Minimum (0)
     0x46, 0x00, 0x10, //Physical Maximum(4096)
    
     //这是一个全局条目,说明数据域的长度为16bit。
     0x75, 0x10, //     REPORT_SIZE (16)
     
     //这是一个全局条目,说明数据域的个数为2个。
     0x95, 0x02, //     REPORT_COUNT (2)
     
     //这是一个主条目。它说明这两个16bit的数据域是输入用的,
     //属性为:Data,Var,Abs。Data说明数据是可以变的,Var说明
     //这些数据域是独立的,Abs表示这些值是绝对值。
     0x81, 0x02, //     INPUT (Data,Var,Abs)
     
     //下面这两个主条目用来关闭前面的集合用。
     //我们开了两个集合,所以要关两次。bSize为0,所以后面没数据。
     0xc0,       //   END_COLLECTION
     0xc0  ,      // END_COLLECTION
    /****************************单点描述符结束*********************/
  • 相关阅读:
    [SHOI2015]自动刷题机
    【教程】AI画放射图
    AI画圆角矩形
    极限运动:街头极限单车,不只是牛逼!
    DPK750针式打印机驱动,750u.dll下载
    文艺青年必看的Ⅹ部心理电影
    C语言程序设计-第2章 算法-程序的灵魂
    C语言程序设计-第1章 程序设计和C语言
    20151127笔记
    20151125小概念
  • 原文地址:https://www.cnblogs.com/tianchiyuyin/p/5162404.html
Copyright © 2011-2022 走看看