资源描述
第8章 USB接口HID设备
HID(Human Interface Device,人机接口设备)是USB设备中惯用设备类型,是直接与人交互USB设备,例如键盘、鼠标与游戏杆等。在USB设备中,HID设备成本较低。此外,HID设备并不一定要有人机交互功能,只要符合HID类别规范设备都是HID设备。
Wndows操作系统最先支持HID设备。在windows 98以及日后版本中内置有 HID设备驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。
在设计一种USB接口计算机外部设备时,如果HID类型设备可以满足需要,可以将其设计为HID类型设备,这样可以省去比较复杂USB驱动程序编写,直接运用Windows操作系统对原则HID类型USB设备支持。
8.1 HID设备简介
8.1.1 HID设备特点
互换数据储存在称为报表(Report)构造内,设备固件必要支持HlD报表格式。主机通过控制和中断传播中传送和祈求报表来传送和接受数据。报表格式非常灵活。
每一笔事务可以携带小量或中量数据。低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B。一种报表可以使用多笔事务。
设备可以在未预期时间传送信息给主机,例如键盘按键或是鼠标移动。因此主机会定期轮询设备,以获得最新数据。
HID设备最大传播速度有限制。主机可以保证低速中断端点每10ms内最多1笔事务,每一秒最多是800B。保证全速端点每lms一笔事务,每一秒最多是64000B。保证高速端点每125 us一笔事务,每一秒最多是24.576MB。
HID设备没有保证传播速率。如果设备是设立在10ms时距,事务之间时间也许等于或不大于10ms。除非设备是设立在全速时在每个帧传播数据,或是在高速时在每个微帧传播数据。这是最快轮询速率,因此端点可以保证有对的带宽可供使用。
HID设备除了传送数据给主机外,它也会从主机接受数据。只要可以符合HlD类别规范设备都可以是HID设备。
设备除了HlD接口之外,它也许同步还包具有其她USB接口。例如影像显示设备也许使用HID接口来做亮度、对比度软件控制,而使用老式影像接口来传送要显示数据。USB扩音器可以使用实时传播来播放语音,同步使用HID接口来控制音量、低音等。
HID类别设备规范文献重要是如下两份:
Device Class Definition for Human interface Devices
HID Usage Tables
其中前者是HID基本规范文献,后者可以是前者附件,为开发人员提供实际控制类型描述。文献是用来定义让主机理解以及使用HID数据数值。这两份文献是由 USB Device Working Group制定,可以在网址。
8.1.2 HID设备硬件规定
HID接口必要符合Device Class Definition for Human interface Devices规范内所定义HID类别需求。在此文献内描述了所需描述符、传播频率以及传播类型等。为了符合规范,HID接口端点与描述符都必要符合数个规定。
所有HID传播都是使用默认控制管道或是一种中断管道,HID设备必要有一种中断输入端点来传送数据到主机,中断输出端点则不是必须。
HID类别
驱动程序
HID类别
设备
主机
外设
默认控制管道
中断管道
图8-1 HID传播传播类型
表8-1 HID设备传播类型
传播
类型
数据来源
数据类型
与否需
要管道
控制
设备(输入)
没有严格时间限制数据
是
主机(输出)
没有严格时间限制数据
或是没有中断输出管道时任何数据
中断
设备(输入)
定期或低延迟数据
是
主机(输出)
定期或低延迟数据
是
主机与设备之间所互换数据,可以提成两种类型:
低延迟数据,必要尽快地到达目;
配备或其她数据,没有严格时间限制需求。
中断管道是控制管道之外另一种数据互换方式,特别适合使用在接受端需要定期或是尽量及时收到数据时候。中断输入管道携带数据到主机,中断输出管道则是携带数据到设备。在总线忙时候,控制管道也许会被延迟,而中断管道保证会有可得到带宽。HID不需要一定有中断输出管道。如果没有中断输出管道,主机会在控制管道上使用HID设备特有Set_Report祈求来传送所有报表。
8.1.3 HID固件规定
主机驱动程序要与HID设备通信,设备固件必要符合下列需求:
设备描述符必要辨认该设备包具有HID接口。
除了默认控制管道外,固件必要此外支持一种中断输入管道。
固件必要包括一种报表描述符来定义要传送与接受设备数据。
如果要传送数据,固件必要支持Get_Report控制传播与中断输入传播。如果要接受数据,固件必要支持Set_Report控制传播与选取性中断输出传播。
所有HID数据都必要使用定义过报表格式来定义报表中数据大小与内容。设备可以支持一种或各种报表。在固件中一种报表描述符用来描述此报表,以及如何使用报表数据信息。
在每一种报表中一种数值,定义此报表是一种输入(Input)、输出(Output)或是特性(Feature)报表。主机在输入报表中接受数据,在输出报表中传送数据,特性报表可以在任何方向传递。
Windows 98以及日后版本HID驱动程序使用中断传播来传递输入报表。输出报表传播类型要依照设备支持端点与Windows版本而定。Windows 98 Gold只符合HID 1.0规范,它HID驱动程序使用控制传播来传递输出报表。Windows 98 SE、Wndows 符合HID 1.1规范,HID驱动程序在有中断输出端点时使用中断传播,否则使用控制传播来传递输出报表。特性报表都是使用控制传播。
8.2 HID设备描述符
HID设备连接到USB主机后,主机通过发送Get_Descriptor祈求读取HID设备描述符,理解描述符对理解USB设备是至关重要。
8.2.1 HID设备描述符
HID设备除了支持USB设备5种原则描述符之外,还支持HID设备特有3种描述符。这些描述符是:
USB原则描述符:设备、配备、接口、端点和字符串描述符。
HID特有描述符:HID、报表(Report)和实体(Physical)描述符。
从描述符关联关系看,HID描述符是关联于接口。因此如果一种HID设备有2个端点,设备不需要每个端点有一种HID描述符。
图8-2 HID描述符关联关系
接口描述符Interface
端点描述符
Endpoint
HID描述符
Hid
报表描述符
Report
实体描述符
Physical
HID、报表和实体描述符是HID设备特有描述符
从前面USB描述符可以看出一种规律,描述符第一、二字节分别是描述符长度和类型,描述符类型字段(bDescriptorType)表白描述符种类,下表列出了不同描述符类型字段数值。
表8-2 HID描述符
类型
描述符
应用
数值
原则
设备 Device
所有设备必要有,只能一种
01
配备 Configuration
所有设备必要有,至少一种
02
字符串 String
可选取
03
接口 Interface
每一种接口一种
04
端点 Endpoint
除端点0之外每个端点一种
05
设备限定 Device_Qualiffier
同步支持全速与高速设备必要有一种
06
Other_Speed_Configuration
07
Interface_power
08
类别
HID
HID设备必要有
21
Hub
29
HID
特定
报表 Report
HID设备必要有
22
实体 Physical
可选取
23
对于一种HID设备,设备描述符与配备描述符没有HID特定信息。其设备描述符bDeviceClass和bDeviceSubClass字段值为0,接口描述符bInterfaceClass字段值为03,表达设备该接口是HID类别。在接口描述符中其她包括HID特定信息字段尚有子类别码(blnterfaceSubClass)与合同码(blnterfaceProtocol字段)。
在接口描述符中子类别码字段等于1表达此设备支持启动接口(Boot Interface)。如果设备有启动接口,即便主机HID没有加载驱动程序,设备也可以使用。这种情形也许发生在计算机是由DOS直接启动,在启动时观看系统设立画面或使用Wndows安全模式时。
具有启动接口键盘或鼠标可以使用BIOS或许多主机支持默认简朴合同。HID规范定义了键盘与鼠标启动接口合同。
如果设备没有启动接口,并且接口描述符中合同码字段是1,表达设备支持键盘接口,合同码字段是2,表达支持鼠标接口。接口描述符中合同码字段是0,表达设备不支持启动合同。
在 HID Usage Tables规范中定义了键盘与鼠标启动描述符(Boot Descriptor)。BIOS不需要从设备中读取描述符,由于它懂得启动合同,并且假设设备支持启动合同。因此要启动设备不需要在固件内包括启动接口描述符,它只要在主机尚未规定在报表描述符中定义合同时支持启动合同即可。在操作系统加载HlD驱动程序后会使用Set_Protocol祈求,将设备由启动合同转换成报表合同。
8.2.2 HID描述符
HID描述符重要作用是用来辨认HID通信所使用额外描述符。下表是HID描述符构造。
表8-3 HID描述符构造
偏移
量
字段
字节
数
数值
类型
阐明
0
bLength
1
Numeric
描述符字节数
1
bDescriptorType
1
Constant
0x21 = HID描述符
2
bcdHID
2
Numeric
HID规范版本号(BCD)
4
bCountryCode
1
Numeric
硬件设备所在国家国家代码
5
bNumDescriptors
1
Numeric
类别描述符数目(至少有一种报表描述符)
6
bDescriptorType
1
Constant
类别描述符类型
7
wDescriptorLength
2
Numeric
报表描述符总长度
9
[bDescriptorType]...
1
Constant
附加描述符类型,可选
10
[wDescriptorLength]...
2
Numeric
附加描述符总长度,可选
bcdHID:设备与其描述符所遵循HID规范版本号码,此数值是4个16进位BCD格式字符。例如版本1.1bcdHID是0110h。
bCountryCode:硬件目国家辨认码。如果不阐明,该字段为0。
bDescriptorType:HID描述符附属描述符类型(报表或实体)。每一种 HID都必要至少支持一种报表描述符。一种接口可以支持各种报表描述符,以及一种或各种实体描述符。
HID描述符偏移量为9和10bDescriptorType和wDescriptorLength可以重复存在各种。
1. 报表描述符
报表描述符定义了执行设备功能数据格式和用法。
报表描述符和USB其她描述符是不同样,它不是一种简朴表格,报表描述符是USB所有描述符中最复杂。报表描述符非常复杂而有弹性,由于它需要解决各种用途设备。报表数据必要以简洁格式来储存,这样才不会挥霍设备内储存空间以及数据传播时总线时间。
事实上可以这样理解,报表内容简洁,是通过报表描述符全面、复杂数据描述实现。
报表描述符必要先描述数据大小与内容。报表描述符内容与大小因设备不同而不同,在进行报表传播之前,主机必要先祈求设备报表描述符,只有得到了报表描述符才可对的解析报表数据。
报表描述符是报表描述项目(Item)集合,每一种描述项目均有相对统一数据构造,项目诸多,通过编码实现。
(1)项目
报表描述符由描述HID设备数据项目(Item)构成,项目第一种字节(项当前缀)由三某些构成,即项目类型(item type)、项目的志(item tag)和项目长度(item size)。其中项目类型阐明项目数据类型,项目的签阐明项目功能,项目长度阐明项目数据某些长度。
HID项目有短项目和长项目两种,其中短项目格式如下图。
Data (可以是0、1、2、4个字节)
bTag
bType
bSize
7 6 5 4 3 2 1 0
位序
字段
图8-3 HID报表短项目格式
短项目数据字节数由bSize值定义,bSize为0、1、2、3时Data某些字节数分别为0、1、2、4个字节。短项目项目类型由bType定义,bType为0、1、2时分别为Main、Global和Local类型。
长项目可以携带较多数据,其格式如下图。
bDataSize
1 1 1 1 1 1 1 0
7 6 5 4 3 2 1 0
位序
字段
图8-4 HID报表长项目格式
bLongItemTag
Data
字节数
1
1
1
1~255
项目中第一种字节为上图中特定值时表白该项目是一种长项目。长项目中bDataSize阐明Data某些字节数,bLongItemTag在HID规范中没有定义。
下面是通过汇编实现一种简朴报表描述符,描述符每一行是一种项目,该描述符描述了一种从设备接受2个字节输入报表和发送2个字节到设备输出报表。
HID_Report_desc_table:
db 06h,A0h,FFh ;Usage Page(Vendor defined) 定义设备功能
db 09h,A5h ;Usage(Vendor Defined) 定义用法
db A1h,01h ;Collection(Application) 开一种集合
db 09H,A6h ; Usage(Vendor defined) 定义用法
; 输入报表
db 09h,A7h ; Usgae(Vendor defined) 定义用法
db 15h,80h ; Logical Minimum 定义输入最小值=-128
db 25h,7Fh ; Logical Maximum 定义输入最大值=+27
db 75h,08h ; Report Size 定义报表数据项大小=8
db 95h,02h ; Report Count 定义报表数据向个数=2
db 81h,02h ; Input(Data,Variable,Absolute) 输入项目
; 输出报表
db 09h,A9h ; Usgae(Vendor defined) 定义用法
db 15h,80h ; Logical Minimum 定义输入最小值=-128
db 25h,7Fh ; Logical Maximum 定义输入最大值=+27
db 75h,08h ; Report Size 定义报表数据项大小=8
db 95h,02h ; Report Count 定义报表数据向个数=2
db 91h,02h ; Output(Data,Variable,Absolute) 输出项目
db C0h ;End Collection 关闭集合
(2)项目分类
报表项目有Main、Global和Local三大类,每一类均有各种不同项目,实现不同描述。
Main类项目用于定义报表描述符中数据项。也可以组合其中若干数据项成为一种集合。Main项目可以分为带数据Main项目和不带数据Main项目。带数据项Main用于生成报表中数据项,涉及Input、Output和Feature项目。不带数据Main项目不生成报表中数据项,涉及Collection和End Collection项目。
Global类项目实现对数据描述,用来辨认报表并且描述报表内数据,涉及数据功能、最大与最小容许值以及数据项大小与数目等。变化由Main类项目生成项目状态表。Global类项目描述对后续所有项目有效,除非遇到有新Global类项目。
Local类项目定义控制特性,这一类项目作用域不超过下一种Main项目,因此在每一Main项目之前也许有各种Local项目。Local项目用于描述背面Input、Output和Feature项目。
下表列出是所有项当前缀字和简要功能阐明。
表8-4 HID项目列表
项目
类型
项目的志(Tag)
项当前缀,nn为数据长度
功能阐明
Main
类项目
Input
1000 00 nn
定义输入报表,主机运用该信息解析设备提供数据。主机向控制端口发送Get_Report实现输入
Output
1001 00 nn
创立输出报表,通过向设备发送Set_Report实现输出
Feature
1011 00 nn
定义送往设备设立信息
Collection
1010 00 nn
定义2个以上数据(Input、Output和Feature)关系为集合,Collection开始一种集合,之后End Collection结束集合。Collection项目数据某些阐明Collection类型
End Collection
1100 00 nn
Global
类项目
Usage Page
0000 01 nn
指定设备功能
此外由于Usage项目有32位数据值,Usage Page项目用于为Usage项目在报表描述符中占居存储空间。用于存储后续Usage项目高16位。
Logical Minimum
0001 01 nn
定义变量或数组项目逻辑最小值和最大值
Logical Maximum
0010 01 nn
Physical Minimum
0011 01 nn
定义变量或数组项目物理最小值和最大值,分别和Logical Minimum、Logical Maximum相应
Physical Maximum
0100 01 nn
Unit Exponent
0101 01 nn
定义数值是基于10指数
Unit
0110 01 nn
单位
Report Size
0111 01 nn
指定报表数据区域所包括位数
Report ID
1000 01 nn
报表ID,该项目在报表中插入一种字节报表ID
Report Count
1001 01 nn
报表中数据域数目
Push
1010 01 nn
将Global项目状态表送入堆栈
Pop
1011 01 nn
从堆栈恢复Global项目状态表
1100 01 nn –
1111 01 nn
保存
Local
类项目
Usage
0000 10 nn
用法索引值,表达对项目或集合建议用法,用于当一种项目描述各种控制,对每一种变量和数组元素均有建议用法
Usage Minimum
0001 10 nn
定义阵列或位图中控制操作第一种和最后一种用法
Usage Maximum
0010 10 nn
Designator Index
0011 10 nn
拟定用于控制实体,指向物理描述符中目的
Designator Minimum
0100 10 nn
定义阵列或位图目的起始和终结索引值
Designator Maximum
0101 10 nn
String Index
0111 10 nn
拟定字符串描述符中索引值
String Minimum
1000 10 nn
定义用于阵列或位图控制中字符串序列索引值最小值和最大值
String Maximum
1001 10 nn
Delimiter
1010 10 nn
定义一组Local项目开始和结束,1=开始,0=结束
1010 10 nn –
1111 10 nn
保存
在这些项目中,Usage Page用来指定设备功能,而Usage项目用来指定个别报表功能。Usage Page项目相称于是HID子集合,Usage相称于是Usage Page子集合。
2. 报表描述符项目
(1)Input、Outpot和Feature项目
这3个项目用来定义报表中数据字段。
Input项目可以应用到任何控制、计数器读数或其她设备传给主机信息。一种输入报表包括一种或各种Input项目,主机使用中断输入传播来祈求输入报表。
Ouput项目用来定义主机传送给设备信息。一种输出报表包括一种或各种Outpot项目。输出报表包括控制状态数据。如果有中断输出管道,HID1.1兼容主机使用中断输出传播来传送输出报表,否则使用Set_Report控制祈求。
Feature项目应用到主机传送给设备信息,或是主机从设备读取Feature项目。一种特性报表包括一种或各种Feature项目,Feature项目普通是包合影响设备与其组件整体行为配备。特性报表普通是控制可以使用实际控制面板调节设立,例如主机可以使用虚拟控制面板来让顾客选取控制特性。主机使用 Set_Report与Get_Report祈求来传送与接受特性报表。
在每一种Input、Output和Feature项当前缀字之后是32位描述数据,当前最多定义了9个位,余位则是保存。位0~8定义中只有位7不能应用于Input项目,除此之外其她位定义都适应于Input、Output和Feature项目。
表8-5 Input、Output和Feature项目数据项阐明
数据字段
含义阐明
位
值
名称
0
0
Data
数据:表达项目内容是可更改(读/写)。
1
Constant
常数:表达项目内容是不可更改(只读)。
1
0
Array
数组:报告所有控制状态。如在键盘报表中每一种键在报表中占一位,报表传播所有键状态,可以同步按下任意各种键。
1
Variable
变量:报告作用中控制。如在键盘报表中只报告按下键编号,可以同步按下键数目等于报表计数(Global类项目Report Count)
2
0
Absolute
绝对:表达数值以一种固定值为基准。游戏杆普通是报告绝对数据(游戏杆当前位置)。
1
Relative
相对:表达数据变化以上一种读数为基准。鼠标普通是报告相对数据(鼠标移动位置)。
3
①
0
No Wrap
如果设立为1表达回转,当数值超过最小值到最大值范畴时将回转,如果最小值是0而最大值是10,超过最大值下一种数值是0。
1
Wrap
4
①
0
Linear
线形:表达测量数据与报表数据有线性关系。
1
Non-Linear
非线性:表达测量数据与报表数据没有线性关系。
5
①
0
Preferred
优选状态:表达控制在没有顾客交互时会回到一种特定状态。如按钮就有优选状态,在无操作时保持未按下状态。
1
Non-Preferred
非优选状态:它维持在上一种顾客选取状态。如交替开关就没有优选状态。
6
①
0
No Null Position
无空状态位置:表达控制永远在传送有效数据。
1
Null State
空状态:表达控制支持一种没有传送有效数据状态。如操纵杆也许具备一种多方向按钮开关,在没有按下时在空状态,这时控制将传送一种在 Logical Minimum与Logical Maximum范畴之外数值来表达它在空状态。
7
②
0
Non-Volatile
不可变:表达设备只有在主机祈求时才变化数值。当主机传送一种报表并且不要变化不可变项目时,如果该项目是定义成相对(Relative),数值0表达不变化数据,如果不可变项目是定义成绝对(Absolute),超过范畴外数值则表达不变化数据。
1
Volatile
可变:表达设备可以自己变化数值,并不是必要主机传送报表规定给设备来变化数值。例如设备控制面板可以由主机软件传送一种报表给设备,也可以由顾客自己按设备上实际按钮。
8
①
0
Bit Field
位字段:表达每一种位或是一种字节内一组位可以代表一份数据。
1
Buffered Bytes
缓冲字节:表达信息包括一种或各种字节,缓冲字节报表大小必要是8。
9~31位
保存
注: ①:该位不能应用到数组。
②:只应用于Output和Feature项目,对于Input项目该位保存。
(2)Collection和End Collection项目
所有报表类型都可以使用Collection与 End Collection项目来将有关Main类型项目构成群组。这两个项目分别用于打开和关闭集合。所有在Collection与End Collection项目之间Main类型项目都是 Collection一某些。
Collection有3种类型:Application、Physical与Logical,其项目数据项值分别为1、0和2。厂商也可以自己定义Collection类型,数据项值为80h~FFh保存给厂商定义。End Collection项目无数据项。
Application Collection包具有共同用途项目或执行单一功能项目。例如键盘开机描述符将键盘按键与LED批示灯数据集合成一种Application Collection。所有报表必要在一种Application Collection内。
Physical Collection包括在一种单一几何点上数据项目,可以将每个位置数据集合成一种 Physical Collection。在设备报告各种传感器位置时候,使用Physical Collection指明不同数据来自不同传感器。
Logical Collection形成一种数据构造,包括由 Collection所连结不同类型项目。例如数据缓冲区内容以及缓冲区内字节数目计数。
(3)Usage Page和Usage项目
Usage page项目数据某些为1~2个字节,当前定义所有都是一种字节。Usage Page定义了惯用设备功能,关于Usage Page(以及其她项目)详细定义内容,可以查阅HID Usage tables(),下表是来自HID Usage tablesUsage Page定义。
表8-6 Usage Page定义
Page ID
Page Name
00
Undefined
01
Generic Desktop Controls
02
Simulation Controls
03
VR Controls
04
Sport Controls
05
Game Controls
06
Generic Device Controls
07
Keyboard/Keypad
08
LEDs
09
Button
0A
Ordinal
0B
Telephony
0C
Consumer
0D
Digitizer
0E
Reserved
0F
PID Page
10
Unicode
11-13
Reserved
14
Alphanumeric Display
15-3f
Reserved
40
Medical Instruments
41-7F
Reserved
80-83
Monitor pages
84-87
Power pages
88-8B
Reserved
8C
Bar Code Scanner page
8D
Scale page
8E
Magnetic Stripe Reading (MSR) Devices
8F
Reserved Point of Sale pages
90
Camera Control Page
91
Arcade Page
92-FEFF
Reserved
FF00-FFFF
Vendor-defined
关于Usage Page每一种有效定义项,均有一种相应下一级定义,如Usage Page数据项数值为1,则设备定义为Generic Desktop Controls,关于该类设备详细功能可以在HID Usage Tables中查到详细定义。下表是HID Usage Tables中对Generic Desktop Controls设备功能定义。
表8-7 Generic Desktop Controls 用法定义
Usage ID
Usage Name
Usage Type
参阅HID Usage Tables中有关章节
00
Undefined
01
Pointer
CP
4.1
02
Mouse
CA
03
Reserved
04
Joystick
CA
4.1
05
Game Pad
CA
06
Keyboard
CA
07
Keypad
CA
08
Multi-axis Controller
CA
09
Tablet PC System Controls
CA
0A-2F
Reserved
30
X
DV
4.2
31
Y
DV
32
Z
DV
33
Rx
DV
34
Ry
DV
35
Rz
DV
36
Slider
DV
4.3
37
Dial
DV
38
Wheel
DV
39
Hat switch
DV
3A
Counted Buffer
CL
4.6
3B
Byte Count
DV
3C
Motion Wakeup
OSC
4.3
3D
Start
OOC
3E
Select
OOC
3F
Reserved
40
Vx
DV
4.3.1
41
Vy
DV
42
Vz
DV
43
Vbrx
DV
44
Vbry
DV
45
Vbrz
DV
46
Vno
DV
47
Feature Notification
DV,DF
4.8
48
Resolution Multiplier
DV
49-7F
Reserved
80
System Control
CA
4.5
81
System Power Down
OSC
82
System Sleep
OSC
4.5.1
83
System Wake Up
OSC
84
System Context Menu
OSC
4.5
85
System Main Menu
OSC
86
System App Menu
OSC
87
System Menu Help
OSC
88
System Menu Exit
OSC
89
System Menu Select
OSC
8A
System Menu Right
RTC
8B
System Menu Left
RTC
8C
System Menu Up
RTC
8D
System Menu Down
RTC
8E
System Cold Restart
OSC
4.5.1
8F
System Warm Restart OSC
90
D-pad Up
OOC
4.7
91
D-pad Down
OOC
92
D-pad Right
OOC
93
D-pad Left
OOC
94-9F
Reserved
A0
System Dock
OSC
4.5.1
A1
System Undock
OSC
A2
System Setup
OSC
A3
System Break
OSC
4.9
A4
System Debugger Break
OSC
A5
Application Break
OSC
A6
Application Debugger Break
OSC
A7
System Speaker Mute
OSC
4.5.1
A8
System Hibernate
OSC
A9-AF
Reserved
B0
System Display Invert
OSC
4.10
B1
System Display Internal
OSC
B2
System Display External
OSC
B3
System Display Both
OSC
B4
System Display Dual
OSC
B5
System Display Toggle Int/Ext
OSC
B6
System Display Swap Primary/Secondary
OSC
B7
System Display LCD Autoscale
OSC
B8-FFFF
Reserved
用法(Usage)定义了各种各样设备特性,对于Usage Page每一项都定义了惯用各种用法。
用法阐明了3种信息,即控制、集合和数据。控制阐明设备状态,如on/off、Enable/Disable等。集合阐明控制和数据组合关系。
上表中用法类型(Usage Type)描述了应用程序如何解决由Main类型项目生成数据,详细定义和详细阐明请参阅HID Usage Tables。
(4)Report ID项目
Report ID放在信息包中报表数据之前,设备可以支持各种相似类型报表,每一种报表包括不同数据与其特有ID。
在报表描述符中,Report ID项目作用于其后续所有项目,直到遇到下一种Report ID为止。如果报表描述符中没有Report ID项目,默认ID值是0,描述符不能定义一种为0Report ID,输入报表、输出报表与特性报表可以分享同一种Report ID。
在Set_Report和Get_Report祈求传播中,主机在设立事务 wValue字段低字节中指定一种Report ID。在中断传播中如果接口支持一种以上 Report ID,Report ID必要是传送报表中第一种字节。如果接口只支持数值为0默认Report ID,此Report ID不应当在中断传播中随着报表一起传送。
(5)Logical Minimum和Logical Maximum项目
Logical Minimum与 Logical Maximum项目定义报表变量(Variable)或阵列(Array)数据限制范畴,此限制范畴以逻辑单位来表达。例如设备报表一种电流值读数是500mA,而一种单
展开阅读全文