
HID规范
最近更新
-
HID 设置报告请求SetReport
SetReport请求用于主机向设备发送报告请求。 详见:USB请求 bmRequestType(1):0x21bRequest(1): SET_REPORT,值为09.wValue(2):高字节报告类型,低字节为报告ID.01:表示输入报告02: 表示输出报告03: 表示特定报告wIndex(2):接口IDwLength(2):数据长度...
2022-12-21【HID规范】
阅读全文 -
HID 设置协议SetProtocol
SetProtocol用于设置ID设备的协议值。 对于USB引导设备,该协议是必须对;对于非引导设备,是可选的。 详见:USB请求 bmRequestType(1):0x21bRequest(1): SetProtocol,值为0bwValue(2):数据为0表示引导协议,为1表示报告协议。wIndex(2):接口IDwLength(2):数据长度,0字节。...
2022-11-06【HID规范】
阅读全文 -
HID 设置空闲SetIdle
SetIdle用于设置HID设备空闲速率。 默认情况下,空闲速率为0。 SetIdle是一个非必要请求。 bmRequestType(1):0x21bRequest(1): SET_IDLE,值为0A.wValue(2):高字节用于指定空闲速率,以4ms为单位,可选的值为4ms~1020ms,低字节为ReportId.wIndex(2):接口IDwLength(2):数据长度,为0 SetIdle由主机发输...
2022-12-21【HID规范】
阅读全文 -
HID协议SET_IDLE请求的解释说明
SET_IDLE请求会使HID设备相关的中断管道(端点)停止定时上报报告数据,直到有新的事件(有效数据)或直到的SET_IDLE时才继续上报报告数据。 在SET_IDLE的时间周期内,如果没有变化的情况下,由设备周期性地返回NAK。 关于SET_IDLE的功能讨论 HID设备以中断的方向进行上...
2022-12-28【HID规范】
阅读全文 -
HID 报告及报告描述简介
USB 中, USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。 USB 报告描述符(Report Descriptor)是 HID 设备中的一个描述符,它是比较复杂的一个描述符。 USB HID 设备是通过报告来给传送数据的,...
2022-11-18【HID规范】
阅读全文 -
HID报表描述符原理解释
一个报表描述符主要是为了描述报表的结构以及用途。 报表的结构主要由报表的字段的长度(size)、数量(count)、属性(输入、输出等)决定,而报表的用途则由 HID 用途表文档规定。 下面我们还是从 Kinetis KL25 USB 例程指南—进阶篇中的 USB 鼠标的报表描述符入手,...
2022-11-30【HID规范】
阅读全文 -
HID报告描述符教程 手把手教你编写HID报告描述符
USB HID报告描述符是USB主机可以从USB设备请求获取的描述符之一。HID 设备使用报告向主机发送数据,HID报告描述符告诉主机如何解释数据。这里我们将尝试向您展示如何编写这些描述符。 什么是USB HID 报告描述符? HID 协议使设备的实现非常简单。设备定义它们的数据...
2022-12-03【HID规范】
阅读全文 -
HID报告描述符分类大全
下表列出的是全部的项目的前缀字和简要功能说明。 项目类型 项目标志(Tag) 项目前缀,nn为数据长度 功能说明 Main Input 8x 1000 00 nn 定义输入报表,主机利用该信息解析设备提供的数据。主机向控制端口发送Get_Report实现输入 Main Output 9X 1001 00 nn 创建输出报表,通过向...
2022-11-16【HID规范】
阅读全文 -
HID 报表描述符/报告描述符
报表描述符用于描述USB HID设备与主机之间数据交互的格式。根据数据的传输方向,分为输入报告和输出报告。 输入报告是USB设备发送数据给主机的。大部分的USB HID设备主要实现的是输入报告。如我们平常使用的USB鼠标,就是通过我们点击鼠标按键或滑动鼠标流轮实现...
2022-12-07【HID规范】
阅读全文 -
HID报告描述符Report Descriptor解析分析
HID独有的报告描述符也叫报表描述符对于初学者来说比较复杂,但是如果真正理解了它,我们又不得不惊吧于设计者的巧妙设计。 HID报告描述符是由一系列的条目(item)组成的,一个item一般是又包括头部信息(bTag,bType,bSize)和数据内容。所以说item在HID的报告描述符中是...
2022-11-16【HID规范】
阅读全文 -
HID报告描述符详解
HID的报告描述符和其它描述符不一样,不是具有固定的数据结构,而是由固件开发商根据上报的数据自行组装的。这个组装的原材料是HID规范定义的ITEM。所以说HID报告描述符就像搭积木一样,其最终的数据结构和设计图纸是什么,都是由固件开发商决定的,但是其最...
2022-11-24【HID规范】
阅读全文 -
HID报告多字节的数据格式和Null值
HID报告中多个字节按照小端的形式组成,即最低有效字节位于最低地址。 Logical Minimum和Logical Maximum 用于表示数据的取值节围。 如果Logical Minimum和Logical Maximum 都是正值,则报告字段中不需要符号位,并且可以假定字段的内容是无符号值。 否则,所有整数值都是以 2 的...
2022-11-14【HID规范】
阅读全文 -
HID主条目input item、output item和feature item详解
HID的main条目按数据相关性可分为两种: 与数据相关的 input、output、feature input item、output item和feature item描述由一个或多个物理控件提供的数据的信息。 应用程序可以使用此信息来解释设备提供的数据。 单个item中定义的所有数据字段共享相同的数据格式。 input item、...
2022-12-21【HID规范】
阅读全文 -
HID主条目collection和end collection详解
与数据无关的collection和end collection collection item标识两个或多个数据(input、output或feature)之间的关系。例如,鼠标可以描述为两到四个数据(x、y、按钮 1、按钮 2)的collection。 当 Collection 项打开一个数据集合时,End Collection 项关闭一个集合. physical collection - 0 物理集...
2022-12-07【HID规范】
阅读全文 -
HID 全局条目(Global Item)
全局项目主要用来选择用途页(Usage Page),定义数据域的长度(Report Count)、数量(Report Size)、报告ID(ReportId)等。 全局项目描述对后续的所有项目有效,除非遇到有新的全局项目。 常见的全局项目有: Usage Page(用途页)Logical Minimum(逻辑最小值)Logical Maxinum(逻辑最大值)Phy...
2022-11-28【HID规范】
阅读全文 -
HID全局条目ReportId
大多数设备都是通过一个数据报告给主机的,但也可以通过ReportId实现实现一个设备返回多个数据报告。 例如,带有触摸设备的键盘可以独立报告同一端点上的“按键”数据和“指点”数据。ReportId用于区分不同的数据。 Report ID固定为1字节长度,在数据传输前位数据...
2022-11-25【HID规范】
阅读全文 -
HID局部条目
local item标记定义控件的特征。这些项目不会影响到下一个main item。如果一个主项定义了多个控件,则它前面可能有几个类似的local item。例如,一个input item可能有几个与其关联的usage item,每个控件一个。 Usage、 Usage Minimum 和 Usage Maximum 项目 这3个项目输入Local类型项目...
2022-12-11【HID规范】
阅读全文 -
HID报告描述符Usage
Usage是HID报告描述符的一部分,用于应用开发人员提供有关控制测量内容的信息。 Usage标签指示了设备供应商对其设备的控制或者设备控制组的特定用途建议。例如虽然报告描述符中定义了数据格式(例如,三个 8 位字段),但使用Usages定义了应对数据执行的操作含义...
2022-11-07【HID规范】
阅读全文 -
HID报告描述符协议
HID报告描述符通过报告描述符的条目定义了HID报告数据的格式。 对于大部分的HID设备来说,数据的传输方向都是输入的,即使用输入端点数据从设备端到主机端,并且使用的是中断的方式。 当然HID设备不仅仅为数据的输入,有时也需要数据的输出。这时就需要一个输...
2022-11-29【HID规范】
阅读全文 -
HID报告描述符ITEM的数据结构及代码分析过程
HID报告描述符是数据流的形式,其中最小单位是项英文ITEM,根据定义分为4种。分别为GLOBA,LOCAK和MAIN。 项分为长项和短项,这里我们只介绍短项。 短项头的一字节定义为: typedef struct{ UCHAR Size:2; UCHAR Type:2; UCHAR Tag:4;}ITEM_PREFIX, *PITEM_PREFIX; BIT0,BIT1代表的后续数据的个数:...
2022-12-31【HID规范】
阅读全文 -
HID报告描述符主项InputReport、OutputReport,FeatureReport
HID报告描述符主项除过COLLECTION项,就是输入报告InputReport,输出报告OutputReport和特性报告FeatureReport。 ITEM_PREFIX的BIT2,BIT3为00,bit4-7的值为: #define ITEM_TAG_MAIN_INPUT 0x8#define ITEM_TAG_MAIN_OUTPUT 0x9#define ITEM_TAG_MAIN_FEATURE 0xb InputReport、OutputReport,FeatureReport示例 INPUT (Data,Var,Abs) 81 ...
2022-12-10【HID规范】
阅读全文 -
HID报告描述符的GLOBAL ITEM
HID报告描述符的GLOBAL ITEM相当于报告描述符的全部变量,只能不更新,以前的值就永远有意义。 ITEM_PREFIX的BIT2,BIT3为01,bit4-7的值为: GLOBAL ITEM包括的内容有: #define ITEM_TAG_GLOBAL_USAGE_PAGE 0x0#define ITEM_TAG_GLOBAL_LOGICAL_MINIMUM 0x1#define ITEM_TAG_GLOBAL_LOGICAL_MAXIMUM 0x2#define ITEM_TAG_...
2022-11-15【HID规范】
阅读全文 -
HID报告描述符的四种类型MAIN ITEM/LOCAL ITEM/GLOBAL ITEM/LONG ITEM源码解析
HID的报告描述我们之前分为两大全,分别为短项和长项,其中短项又分为3种,分别为main,local,global,而长项只分为long。 HID报告描述符的项分类使用其首字节的BIT2,BIT3的值来区分,如下: #define ITEM_TYPE_MAIN 0x0#define ITEM_TYPE_GLOBAL 0x1#define ITEM_TYPE_LOCAL 0x2#define ITEM_TYPE_LONG 0x...
2022-11-10【HID规范】
阅读全文 -
HID报告描述符解析过程中的数据结构关系
Hid报告描述符的短项定义了MAIN,GLOBAL,LOCAL三种类型的项。 其中MAIN项主要定义了三个类型,分别为集合(COLLECTION),输入报告(Input Report),输出报告(Output Report)和特性报告(Feature Report). 在Windows系统的Parser驱动中,对于MAIN ITEM也是进行了足够的遵重,直接使用HID COLLECTI...
2022-11-03【HID规范】
阅读全文 -
HID报告描述符全局项REPORT_COUNT和REPORT_SIZE
HID报告描述符全局项ReportCount和ReportSize用于指示报告描述符数据项的大小,其中: REPORT_COUNT:用于指定LOCAL USAGE的个数REPORT_SIZE:用于指定每个USAGE的数据大小。 如鼠标的X和Y坐标 USAGE (X) 09 30 USAGE (Y) 09 31 LOGICAL_MINIMUM (-127) 15 81 LOGICAL_MAXIMUM (127) 25 7F REPORT_SIZE (8) 75 08 REPORT_...
2022-12-09【HID规范】
阅读全文 -
使用USB鼠标HID报告描述符分析HID_REPORT及成员HID_REPORT_ITEM关系
HID报告描述分过程比较麻烦,对于MAIN ITEM,相对来说比较简单,就是一个简单的树形结构。但对于GLOBAL ITEM和LOCAL ITEM组织的数据结构定义,还是相对比较麻烦的。 每一个HID报告描述符都会有很多集合,这是由MAIN ITEM的Collection关键字定义的,无论它是Application类型的还...
2022-11-10【HID规范】
阅读全文 -
HID报告描述符INPUT ITEM,OUTPUT ITEM,FEATERU ITEM Bit 1{Array (0) | Variable (1)}和HID_REPORT_IT
HID的MAIN ITEM的INPUT ITEM,OUTPUT ITEM,FEATERU ITEM Bit定义如下: 0:代表是数组1:代表变量 我们在 HID主条目input item、output item和feature item详解http://www.usbzh.com/article/detail-527.html 一文对此有详细的解释。不过这里我们从源代码的逻辑来解释其和HID_REPORT_ITEM的关系。 HID_REPORT_ITE...
2022-12-18【HID规范】
阅读全文 -
Windows系统HID报告描述符和HID报告数据最大最小长度
HID报告描述符 HID报告描述符的长度在HID描述符(HID_DESCRIPTOR )结构体的成员wReportLength指定。无论HID设备是何种设备类型,使用用途是什么,HIDCLASS与HID miniDrivers(hidusb.sys)之间通讯的HID报告描述符都有一个极大值。 报告数据内容长度 报告数据内容包括输入报告,输出报...
2022-12-02【HID规范】
阅读全文 -
Windows支持的所有HID驱动
HID全称HUMAN INTERFACE DEVICE,一般我们用USB的接口多一些,所以一般的HID也就指的是USB-HID设备了,不过像蓝牙等其它通讯协议,也可以支持HID的,像我们见到的蓝牙键盘,蓝牙鼠标等。也以其实也从这里可以理解到WINDOWS关于HID设备的驱动栈结构,其中HIDCLASS.SYS是通用的H...
2022-11-11【HID规范】
阅读全文 -
Windows系统HID键盘鼠标触摸板驱动程序架构
下图说明了Windows系统提供的用于 USB 键盘、鼠标和触摸板设备的驱动程序堆栈。 KBDHID.sys:用于键盘的 HID 客户端映射器驱动程序。将 HID USAGE转换为扫描码以与现有键盘类驱动程序交互。MOUHID.sys:用于鼠标/触摸板的 HID 客户端映射器驱动程序。将 HID USAGE转换为鼠标命...
2022-11-17【HID规范】
阅读全文
USB接口百科推荐
USB复合HID设备报告描述符的区分
HID 简介
HID主条目collection和end collection详解
HID 获取空闲请求GetIdle
使用USB鼠标HID报告描述符分析HID_REPORT及成员HID_REPORT_ITEM关系
HID报告描述符详解
HID报告描述符的四种类型MAIN ITEM/LOCAL ITEM/GLOBAL ITEM/LONG ITEM源码解析
HID设备的实现原理-HID描述符
HID主条目input item、output item和feature item详解
HID全局条目ReportId
HID规范、HID Usage Tables版本及文档分类
HID设备的bInterfaceClass、bInterfaceSubClass和bInterfaceProtocol
HID 设置空闲SetIdle
HID报告描述符主项InputReport、OutputReport,FeatureReport
HID报表描述符原理解释