




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、USB/HID设备报告描述符详解概述:报告在这里意思是数据传输(data tra nsfer),而报告描述符是对这些传输的数据作用途(usage)上的说明。USB通讯协议的规范是以1ms产生一个USB帧(frame),USB设备可以每一个帧中发送和接收一个交换(transaction )。交换是由几个封包(packet)组成,而传输是由一个或几个交换来完成传送一口中有效的数据。在这里,传输和报告的意思相类似。传输方式有四种,初始学一般只要了解控制型传输(controltransfer)和中断型传输(interrupttransfer)即可。控制型传输是当需要时才执行传输要求,是最一般的传输方式
2、,组态、命令和状态的通讯都可以使用控制型传输;控制型传输主要用于消息型数据( message-type data )。中断型传输目的在做重复的 数据更新(recurring data)传输,精确一点而言,即是在每个有限周期内(bounded period)作至少一次的小量数据发送或接收;所以适用于流动型数据(stream-type data ),注意这里所谓的周期时间就是在端点描述符中的轮询间隔时间。报告有三种:in put、output和Feature。后面将作进一步介绍。中断型输入管线(interrupt in pipe)仅可以传送in put报告;中断型输岀管线(interrupt ou
3、t pipe)仅可以传送output报告;但是控制型管线(control pipe) 可以传送in put、output和feature 报告。端点描述符有声明所使用的端点为何种管线。数据本身没有任何意义,要赋于用途才能明确其为控制什么(co ntrol );例如设备上的按钮指示灯和X与丫轴的位移等都通称控制,数据则为按钮和指示灯的开关状态或X与丫轴的位移量。为了这个目的应运而生报告描述符,其将数据的操控与它的用途作一对一的对应,所以解读报告后就可以知道每个数据作何种操作。所以“传输的数据”和“操作”只是一事件的两种描述方式。用途是以一个 32位卷标(称作usage tag )来表示,高16位
4、称作usage page(用途类页), 低 16 位称为 usage ID(用途识别名):Usage = (usage page:usage ID) 举例说明:二个字节分别为x和y轴的位移数据,因此第一个字节的usage= (genericdesktop:X),而第二个字节的 usage = (ge neric desktop:Y),其中 gen eric desktop为用途的大类别(称作用途类页)之一,x和y轴的操作用途属于此用途类页。文件universalserial BusHID Usage Table 完整列岀所有的 usage pages(用途类页)和usage ID(用途识别名)
5、,使用者必 须遵照文件的规范来声明操作的用途。该文件的附录A有十多个报告描述符的范例,值得研究下。表1、报告描述符的标签主项目Main Item全域项目Global Item区域项目Local Item标签代码标签代码标签代码n put0x8?Usage Page0x0?Usage0x0?Output0x9?Logical Mini mum0x1?Usage Mi ni mum0x1?Feature0xB?Logical Maximum0x2?Usage Maximum0x2?Physical Mini mum0x3?Desig nator Mini mum0x3?Collectio n0xA
6、1Physical Maximum0x4?Desig nator Mini mum0x4?End Collectio n0xc0Unit Exp onent0x5?Desig nator Maximum0x5?Unit0x6?Stri ng0x7?Report Size0x7?Srei ng Mi ni mum0x8?Report ID0x8?Stri ng Maximum0x9?Report Coumt0x9?Delimiter0xA?Push0xA4Pop0xB4标签:用途卷标只是报告描述符诸多标签的一个。表 1 列出所有的卷标,利用这些卷标可以清楚 完整的描述符操作的用途。报告描述符的语
7、法不同于USB标准描述符,它是以项目(items )方式排列而成,无一定的长度;项目有一个前辍 (prefix) ,然后跟着一个括号,内为该项目的数 据: item = prefix(data) 。项目分成三种类别:主项目,全局项目,区域项目。主项目中的input, ouput, feature三个卷标用来表示报告中数据的种类, 这些是报告描述符中最主要的项目, 其他项目都是用来修 饰这三种项目。主要项目中其他二个卷标后面再作详细的介绍。 Input 项:表示设备操作输入到主机的数据模式。这个数据格式就形成一个输入报告,虽然 输入报告可以用控制型管线以 get report ( input )
8、来传输,但是通常用中断型输入管线来传输 以确保在每一固定周期内都能将更新的输入报告传给主机。 Output 项:表示由主机输出到装置操作的数据格式。这个数据格式就形成一个输出报告。输 出报告通常不适用轮询的方式来传送给设备, 而是由应用软件依实际需求以传令方式要求送出输 出报告,所以大多用控制型管线以 set report(output) 指令来将报告送到设备。当然也可以选 择用中断型输出管线来传送,只是通常不建议这样用。 Feature 项:表示由主机送到设备的组态所需数据的数据格式。这个数据模式就形成一个特 征报告。特征报告只能用控制型管线以 get report(feature) 和 s
9、et report(feature) 指令分别 来取得和设定设备的特征值。 范例: 考虑一个 2 X 16 字的显示装置, 它的列数、 行数、字宽、 和字高为固定值属于 feature 报告;显示状态例如“就绪”和“输入字错误”则属于input 报告;光标位置和显示的字需可读写, 所以属于另一个 feature 报告;更新显示的字则为 output 报告。 为了区别两个 features , 要用到全局项目中的report ID,每个feature 报告有一个不同的report ID,因而主机请求指令要加上 report ID 的值: get report(feature,report ID)
10、和 Set report(feature,report ID)。主项目用来定义报告中数据的种类和格式,而说明主项目之意义与用途为全局项目和区域 项目。顾名思义,区域性项目只能适用于列于其下的第一个主项目,不适用于其他主项目,若一个主项目之上有几个不同的卷标的区域性项目, 则这些区域性项目皆适用于描述该主项目。 相反, 全局性项目适用于其下方的所有主项目, 除非另一个相同卷标的全局性项目出现。 为了清楚说明 报告描述符,将使用“项目状 态表”( item state table )用来表示在某位址处适用的全局性 项目的组合。图 1显示全局性项目和区域性项目与所描述的主项目之对应关系。区域性项目卷
11、标:简单地说,区域性项目(见表1)只是说明用途而已。Designator 是要搭配实体描述符使用的,这里不对实体描述符进行介绍,所以略过这些designator 标签。标签 Usage 实际上应该称作 Usage ID ,它搭配全域项目的 Usage Page 卷标才形成前文所定义 的用途usage;但是报告描述符允许在区域项目的Usage卷标直接用32位的方式来指定用途,这种方式称作扩充式用途指定法 (extended usage) 以示区别。例如: Usage(Generic Desktop:Mouse) , Usage Minimum(Keyboard:0) ,和 Usage Maxim
12、um(Keyboard:101) 。很明显的, 扩充式用途指定法会取代项目状态表中的 Usage Page。还有,使用扩充式用途指定法时, 数据的高16个位为用途类页 Usage Page,低16个位则为用途识别名Usage ID。往往一个报告数据会对应到几个操作,因而会有几个用途,例如 101 按键的键盘利用不同代码代表不同的键, 每一个键是一个操作,有自己的用途,要将所有Usage ID 列出不太现实,所以就需要 UsageMinimum 和 Usage Maximum 二个标签。以键盘为例,主项目之上只要二个区域项目:UsageMinimum (0), Usage Maximum (10
13、1) 。如此一来,则无键按下 (Usage ID 为 0)和 101 键中任一 键被按下(Usage ID 为1至101)的用途都被赋于到一个报告数据上,后面会有一个范例进一步 解说。卷标 String Index类似卷标 Usage,而卷标 String Minimum和 String Maximum 则类似标签Usage Minimum和Usage Maximum 如果希望某个操作对应到一个字串,则用String Index来描述该操控的报告数据,这个字符串在字符串描述符中,Stringlndex(data)项目中的data是这个字符串在字符串描述符中的位置索引。如果需要用到几个字符串,则
14、可以使用Stri ngMini mum来指向字符串描述符中被用到字符串的最先位置索引,和Stri ng Maximum来指向最后位置索引。标签 Delimiter很少用到,请参考 Universal Serial Bus HID Usage Tables文件中Appe ndix B 的范例详细说明。全局项目卷标全局项目的卷标事实上只要Usage Page, Logical Minimum , Logical Maximum ,Report Size , Report ID ,Report Count 就足够了。表 2列了二个音量操作的例子(音量增减 键和音量旋钮)将用来辅助说明这些卷标,不过主
15、项目括号内的数据会在后文中再做说明。表2、音量操作举例音量减键音量旋钮Usage Page(c on sumer)Usage Page(C on sumer)Usage(Volume)Usage(Volume)Logical Mi ni mum(-1)Logical Mi ni mum(0)Logical Maximum(1)Logical Maximum(100)Report Size(2)Report Size(7)Report Cou nt(1)Report Cou nt(1)n put(Data,Variable,Relative)In put(Data,Variable,Absolu
16、te,No Wrap,L in ear,No Relative)查阅Universal Serial Bus HID UsageTables文档,这两个例子的用途需要令为(Consumer:Volume) o Usage Page 前面已经介绍过了。Report Size 用来设定主项目(Input ,Output , Feature)的报告字段大小,它的单位是位。主项目会对每个操作产生一个报告字段,字段大小则由 ReportSize决定。而Report Count用来设定主项目之报告字段的数目,其等于操作的数目。音量增 减键的例子中 ReportCou nt (1)表示主项目In put只产
17、生一个字段,所以可知只有一个音量增减 键;而Report Size (2)表示这个字段为2位。另一个音量旋钮例子也是只有一个旋钮,所以用 Report Count;但是因为 Report Size (7),所以该旋钮的数据字段为7位,可以表示 0到127之数值。再举一例,如果是鼠标的三个按键,每个按键占用一个一位的字段,则Report Size(1), Report Cou nt (3);那么这个报告长度为三个位,可以同时呈现岀三个按键的状态(原状或被按下)。Logical Minimum和Logical Maximum 在说明每个报告字段的数值范围,这是纯数值所以称为逻辑数值(logical
18、 value) 。音量增减键的例子中 Logical Minimum (-1),Logical Maximum (1)表示只会岀现-1, 0, 1三种数值,所以用到二位(即 ReportSize(2),0b11代表-1,0b00代表0,0b01代表1。在音量旋钮例子中, 虽然用7位作一字段,但是旋钮仅会产生0到100的数值,因为 Logical Minimum (0) 和Logical Maximum (100)。假如实体程序错误产生超岀逻辑 数值的范围,则主机将会忽略该数值,这种数值称作n ull value 。当要将同一种报告分成数个部分,则每一个部分要给予一个识别值,这时就需用到卷标Re
19、port ID,其数据值必须从1起算,不可使用0。没有赋予 Report ID标签的报告,主机有可能会将其Report ID 视为0,所以Report ID (0)被要求不能使用。这个标签对控制型管线才有意义,因为它可以在请求报告时指定 Report ID 的值。对于中断型管线,其为周期性传输报告, 所以每次都会将所属报告传完,没有仅传输部分之必要,所以Report ID标签就无意义。其它的全局项目卷标可分为辅助工具(Push和Pop)和物理量说明(Physical Minimum ,Physical Maximum, U nit Expo nent,和Un it )。Push卷标将项目状态表
20、存放到缓存器(stack), 而Pop卷标反过来将缓存器最顶层的项目状态表取回来取代目前之状态表。这二个标签对 很长的报告描述符才有用处,因为其可以节省多列一些全局项目。读者当要使用到时,参考Universal Serial Bus HIDUsage Tables 文件Appendix A.7节中范例则可获得正确使用方式。不同厂家的鼠标有不同的分辨率,若要让主机知道鼠标的分辨率,就必须用到物理量的标签。不使用也不会影响到鼠标的功能,只是使用者无法由主机的驱动程式得知分辨率而已。但是量测装置(例如温度计)的应用程序必须知道物理量,则这些标签就必备了。分辨率r的算法如下r = (lM-lm)/(P
21、M-Pm)X10Unit其中 Im = Logical Minimum , lM = Logical Maximum , pm= Physical Minimum ,pM= Physical Maximum, i = Unit Exponent 。以 400-dpi 的鼠标为例如表 3。表3:解析度的范例Logical Mini mum(-127)R = (127-(-127)/(3175-(-3175)X10-4=400cou nts per inchLogical Mini mum(127)Physical Mini mum(-3175)Physical Mini mum(3175)给定L
22、ogical 值,计算岀 physical 值:(PM-Pm /2 )/10i=(127-(-127)/400)/2=0.3173a |PM|=|Pm|=3175,i=4Unit Expo nen t(-4)Uni t(i nch)注意,若是 Unit Exponent 未定义,则视为 i = 0 ;若是 Physical Minimum 和 Physical Maximum 有一个以上未定义,则视为PM=IM和pm=lm所以标签Physical Minimum和Physical Maximum 一可以是一个字节或二至四Unit的括号内数据比4,其中第8个四位定要同时定义,否则无意义。这些卷标
23、的括号内数字为有符号的整数, 个字节,字节数目会在卷标代码的最低二位定义,详情后文会叙述。卷标 较复杂,总共用了 7个四位(nibbles)来描述,各个四位之意义如表未被使用到表4:标签Unit的信息格式Nibbe765432100Lum in ousInten sityCurre ntTemperatureTimeMassLen gthSystemHID共享了四种单位系统,最低的四位就是决定使用的单位系统(System),不同的系统中当然物理量的单位也不一样。单位和系统间的对应关系如表5。表5:物理量的单位之编码法No neSI Lin earSI Rotatio nEn glishLin
24、earEn glishRotati onSystem0x00x10x20x30x4Len gthNo ne公分径度英寸角度MassNo ne公克公克SlugSlugTimeNo ne秒秒秒秒TemperatureNo ne凯氏(绝对温度)凯氏(绝对温度)华氏华氏Curre ntNo ne安培安培安培安培乙Lum in ousinten sityNo neCan delaCan delaCan delaCan dela除了最低四位的值用来选择单位系统外,其余每个四位皆表示该单位的幕次方,每个四位 (nibble)都是有符号的整数,可表示的范围为-8至+7:-8-7-6-5-4-3-2-10123
25、456708h09h0ah0bh0ch0dh0eh0fh00h01h02h03h04h05h06h07h因此长度的单位若为公分则Unit (data)中data的码为0x11,若为英吋则为0x13,这二者中Length的四位值皆为1表示幕次方为1,即cm1或ini 。质量单位为公克之码为 0x0101, 加速度单位为公分除以平方秒之码为 0xE011,其中E代表-2。所以力量单位为质量(公克)乘 于加速度(公分/平方秒)的码为0xE111。能量单位焦尔为力量乘于长度之码为0XE121,其等义于s?2g cm2 和单位系统为 SI Lin ear 。主项目主项目中产生报告数据格式的三个卷标(In
26、 put ,Output,和Feature )具有共通的数据定义,这些数据和其代码列于表6中。目前用到9个位来表示这些数据。如果第九位(bit 8)为0,则仅需用一个字节来表示该数据,即忽略第九位。如果第九位为1,就需用到二个字节来表示该数据。表6:主项目的信息代码Bit8765432100Bit FieldNonVolatileNo NullPositi onPreferredStateLin earNoWrapAbsoluteArrayData1BufferedBytesVolatileNullStateNoPreferredNonLin earWrapRelative Variable
27、Conw5tantData/Constant :主项目之数据为可变值(设为 Data),或为固定不可变值(设为Constant)。Constant都用于Feature的报告,或是用于填充位(padding),使报告长度以字节为单位。Array/Variable :主项目之数据的每个字段可以表示几个不同的操作的其中一个被触发(设为Array ),或是每个字段仅表示一个操作(设为 Variable )。如果是 Variable ,贝U Report Count 的数据值等于报告数据的字段数。若是Array,则Report Count的数据值表示可以同时被触发的最多操作数目。后文中键盘之例会解说Ar
28、ray的用法。Absolute ),或是提供相对于前次报告的相对值(设为 Relative )。【范例说明】 前文中的音量操控范例,因为都是Data和Variable,二者的操作值皆为变化值,且一个字段仅表示一个操作。但是音量增减键的例子为Relative ,所以若报告值由0变成+1,则音量增大一个刻度,反之由0变作-1则音量减小一个刻度,因而音量大小因输入值而作相对的变化。然而音量旋钮的例子为 Absolute,当输入值为最小值0时,为静音,而输入值为最大值100时,为最大音量,其余值作百分比的音量调整,输入值和音量成绝对关系。No Wrap/Wrap:主项目的数据值达到极值后会转为极低值,
29、反之亦同,称作卷绕(设为Wrap)例如一个转钮可以做 360旋转,输岀值从 0至10,若设定为 Wrap,则值达10后,在同方向 旋转则值变为0,反之若达到0,再转就得到10。Lin ear/No nlin ear:主项目的数据与操作刻度为线性关系(设为Lin ear ),或为非线性(设为Nonlinear )。Preferred State/No Preferred :主项目对应的操作再不被触发时会自动恢复到初始状态(设为Preferred State ),或是不会恢复原状(设为 No Preferred )。例如键盘的按键和会自动置中 (self-ce nteri ng)的游戏杆,皆为 P
30、referred State 。【范例说明】再以音量操作为例,音量增减键的例子都没标注No Wrap, Li near , Preferred State ,但是没有标注即认定其属于默认值,所以等同于是这些设定,只是这些设定对此例的操作无意义,所以不标岀。音量旋钮的例子明确指岀其为No Wrap, Lin ear , No Preferred,可见旋钮不是循环旋转,输岀值与旋转角呈线性关系,旋钮释放开时会停留在释放前位置(因为No Preferred )。No Null Positio n/Null State:主项目对应的操和有一个状态,其不会送岀有意义的数据,即数据将不在 Logical
31、Minimum 和Logical Maximum之间,这种操控要标注Null State ,否则为No Null Position。例如几个按键,而无键被按下的用途没有声明在Usage之列,则可以在主项目的数据中设 Null State,将无键被按下的状态排除在Logical Minimum和Logical Maximum区间之外,进一步请参看 Universal Serial Bus HID Usage Tables 文件的 Appendix A.3 节 中范例。Non Volatile/Volatile :主项目Feature 的数据不允许被主机改变(设为 Non Volatile ),或
32、 是允许被主机改变(设为 Volatile )。注意主项目In put和Output,此标注设定无意义,所以 bit 7的代码必须为0。Bit Field/Buffered Bytes :主项目的数据格式要以字节为单位,不足构成字节时自动填充成字 节则设 Buffered Bytes 。最后来谈谈主项目的其它二个卷标:Collection和End Collection。以鼠标而言,在实体上是一个指针(po in ter),只是应用为计算机鼠标;而这个指针含有三个按键和二个平移轴X和丫。所以指针的报告是由不同格式的数据所构成,因而需要用到Collection 和End Collection 将几
33、个In put项目集结成一组,其用途为指针,再用Collection 和End Collection将指针括起来说明其应用为鼠标。卷标End Collection没有跟随任何资料。但是卷标Collection跟随一个字节的数据,例如指针的数据名为 Physical,而鼠标的为 Application。所有Collection的数据名称与代码如表7:表7:报告集合的名称与代码PhysicalApplicati onLogicalReportNamedArraryUsageModifierUsageSwitchReserved V,en dor-defi ned代码0x000x010x020x03
34、0x040x050x060x07-0x7f0x80-0xff用途CPCACLNaryUSUM1Collectio n的数据名称很难有一个准则来给定,Uni versal SerialBus HID Usage Tables文档中将各种用途的用途种类(usage type)列岀,使用者必须依据用途种类来指定Collection的数据名称,例如鼠标,键盘和游戏杆的用途种类为CA所以要用Collection(Application),而指针为 CP,所以用 Collection (Physical) 。编码报告描述符的项目编码有二种:短项目和长项目。长项目仅是保留给未来使用,所以不作介绍短项目的编码
35、形式如下:datadatabTagbTypebSize最低字节分别标注项目大小(bSize),项目类别(bType),和项目卷标(bTag);其中bTag占4个位,其余二者各占 2个位。BSize用来指岀项目的数据所需字节的数目该数 目仅可以为 0 (当 bSize=0 ),1 (当 bSize=1 ),2 (当 bSize=2 ),和 4 (当 bSize=3 );注意 不可以为3个字节。大部分的卷标仅需一个字节的数据;全局项目的卷标Unit比较特殊有可能最多用到4个字节来表示其资料。标签代码bTag已经于前章的表 1中描述,例如In put的标签代码0x8?中8即为bTag 之值;再如标签
36、 Feature 之bTag=11,而Unit 之bTag=6。主项目之 bType=0,全局项目之 bType=1,而区域项目之bType= 2。所以在前章的表 1中的主项目卷标代码中的?可以改为00nnB,全局项目的可以改为01 nnB,而区域项目的可以改为10nnB,其中nn代表bSize。实际范例这里举一个 Device Class Defi ni tio n for Human In terface Device文件的附录 E 中的整合鼠标的键盘装置的范例。这个装置只有一个组态描述符,但是这个组态具有二个接口,一个为键盘接口(接口编号为 0x00),另一个为鼠标接口(接口编号为 0x
37、01)。每一个接口都有一 个自己的中断型输入端点,输出则都靠内定的控制型端点0。这个整合鼠标的键盘装置的标准描述符,请参考附件中的USB标准描述符之技巧文件。在该文中所使用的范例即为整合鼠标的键盘装置,只是仅列岀一个接口描述符(即编号为0x00的键盘接口),另一个编号为0x01的鼠标接口在该文中没有列岀,读者可以自行参考本文所附的描述符程序代码descriptor.asm (即在标记为 interface_descriptor01 , hid_descriptor01,和口 endpoint_descriptor01处)。表8:范例的输入报告格式键盘(输入报告)鼠标(输入报告)Byte7654
38、3210Byte7654321 00Modifier keysPadButt ons1ReservedX displaceme nt2Keycode 1Y displaceme nt3Keycode 24Keycode 35Keycode 46Keycode 57Keycode 6表9:范例的输岀报告格式 键盘输岀报告Byte765432100Pad 1LED s这个范例有输入报告和输岀报告,其中输入报告有二组,一组属于键盘接口,另一组属于 鼠标接口。表8列出输入报告的数据格式。而输出报告只有键盘接口需要,表9为输出报告的数据格式。因为有二个接口,所以有二个报告描述符,分属于不同的界面,二个报
39、告描述元都列 于表10中。键盘的报告描述元中整个报告集合的用途为(Generic Desktop: Keyboard) ,由于键盘用途属于应用性,所以标签Collection的资料名为Applicati on。由于单独键本身的用途类页不再是 Generic Destop ,而是Keyboard (注意Keyboard也可为用途类页),所以在项目 Collection(Application)下重新声明用途页Usage Page (Keyboard)。根据 Universal SerialBus HID Usage Tables文件,鼠标是指针的一种,只是应用为计算机的鼠标,所以报告的内层 集合
40、的用途为 (Ge neric Desktop: Poi nter),外层的应用性集合的用途为(Ge neric Desktop:Mouse) o注意鼠标的按钮和位移轴又分属不同的用途类页,所以在内层集合中还要重新声明用途类页。按钮的用途类业为Butto ns,而二个位移轴所属的用途类业为Gen eric Desktop 。表10 :报告描述符范例键盘鼠标项目编码项目编码Usage Page (Ge neric Desktop),0x0105Usage Page (Ge nericDesktop),0x0105Usage (Keyboard),0x0609Usage (Mouse),0x0209
41、Collectio n (Applicati on).0x01A1Collectio n (Applicati on),0x01A1Usage Page (Keyboard),0x0705Usage (Poi nter),0x0109Usage Mini mum (224),0xE019Collectio n (Physical),0x00A1Usage Maximum (231),0xE729Usage Page (Butt on s),0x0905Logical Mi ni mum (0),0x0015Usage Mi ni mum (1),0x0119Logical Maximum (1
42、),0x0125Usage Maximum (3),0x0329Report Size (1),0x0175Logical Mi ni mum (0),0x0015Report Cou nt (8),0x0895Logical Maximum (1),0x0125n put (Data, Variable,Absolute),0x0281Report Size (1),0x0175Report Size (8),0x0875Report Cou nt (3),0x0395Report Cou nt (1),0x0195In put (Data, Variable, bsolute),0x028
43、1In put (C on sta nt),0x0181Report Size (5),0x0575Usage Mi ni mum (0),0x0019Report Cou nt (1),0x0195Usage Maximum (101),0x6529In put (C on sta nt),0x0181Logical Mi ni mum (0),0x0015Usage Page (Ge nericDesktop),0x0105Logical Maximum (101),0x6525Usage (X),0x3009Report Size (8),0x0875Usage (Y),0x3109Re
44、port Cou nt (6),0x0695Logical Mini mum (-127),0x8115n put (Data, Array),0x0081Logical Maximum (127),0x7F25Usage Page (LEDs),0x0805Report Size (8),0x0875Usage Mi ni mum (1),0x0119Report Cou nt (2),0x0295Usage Maximum (5),0x0529In put (Data, Variable, Relative),0x0681Logical Mi ni mum (0),0x0015End Co
45、llecti on,0xC0Logical Maximum (1),0x0125End Collectio n0xC0Report Size (1),0x0175Report Cou nt (5),0x0595Output (Data,Variable,Absolute),0x0291Report Size (3),0x0375Report Cou nt (1),0x0195Output (C on sta nt),0x0191End Collectio n0xC0从表8看岀,键盘的输入报告中最低的8位分别代表键盘上的8个修饰键(亦即左和右边的Control 键、Shift 键、Alt键、和 Windows键),平常每位的值为0,当对应的修饰键被压下时则位值为1。键盘报告描述符中第一个In put项目必须声明这 8位的格式。这8个修饰键为用途类页 Key Codes中的第224个键到第 231键,所以用 Usage Minimum (224) 和Usage Maximum(231)来声明。每一个按键的逻辑值不是0就是1,所以用Logical M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人痴呆症预防课件
- 重症ECMO患者护理查房与并发症管理
- 醉翁亭记课件教学
- 酿酒行业专业知识培训课件
- 花博园中国女排接待宴会
- 水溶液中的离子平衡(专练)-高考化学二轮考点复习(原卷版)
- CN120210108A 一种安全高效的低氧诱导细胞成脂分化的方法及应用
- 声现象-2023-2024学年八年级物理上学期复习分类汇编
- 陕西省延安市富县2024-2025学年七年级下学期期末教学检测英语试卷(含答案无听力原文及音频)
- 特殊疑问句-七年级英语暑假作业(人教版)
- 2025年房地产项目合作开发与城市更新协议
- 接种疫苗预防流感课件
- 《中国金融学》课件 第0章 绪论-课件
- 2025年中国烟草总公司天津市公司招聘考试笔试试卷【附答案】
- 加盟合同(标准版)
- 基于plc的恒压供水控制系统设计
- 2025中小学生法制知识竞赛题库及答案
- 七年级英语阅读理解55篇(含答案)
- 企业微信私域流量运营方案
- 中职学校《机械基础》第二学期全套电子教案(含教学进度计划)(配套教材:高教版中职统编)云天课件
- 《重性精神疾病管理治疗工作规范》综合解读
评论
0/150
提交评论