一个无线鼠标的HID Report Desc

2023-05-16

HID设备是USB规范定义的设备类型之一,其分类号为0x03.
关于USB设备类型定义,可参见本站:USB设备类型定义 - USB中文网

HID设备除了用于专门的输入输出设备外,有时也与其它的设备类型组合成一个复杂的设备。如对于UVC摄像头设备,可以附带一个UAC麦克风音频设备和一个HID设备用于固件升级或自定义通讯。

HID设备类型定义于接口描述符中,通过bInterfaceClass、bInterfaceSubClass和bInterfaceProtocol来标识。

HID设备Class

对于HID类设备,接口描述符的bInterfaceClass字段值固定为0x03.

HID设备SubClass

在HID规范的早期,SubClass用于标别不同类型HID类设备的特定协议,但随着HID设备附加功能的变化,但很快就发现这种方法限制太多。设备需要适应狭义定义的子类,并且不能提供子类所支持的功能以外的任何功能。例如,带有定位器的键盘,或提供击键的定位器。

接口描述符的字段bInterfaceSubClass仅用于设备是否支持启动接口。

Subclass CodesSubclass Code Description
0No Subclass
1Boot Interface Subclass
2 - 255Reserved
  • BIOS下识别USB键盘 BIOS下识别USB键盘 - USB中文网

HID设备Protocols

HID设备支持多种协议。接口描述符的bInterfaceProtocol成员只有在InterfaceSubClass支持启动接口时才有意义,否则为0。
支持boot interface subclass的设备也只有两种,分别为键盘和鼠标:

Subclass CodesSubclass Code Description
0None
1Keyboard
2Mouse
3 - 255Reserved

HID设备连接到USB主机后,主机通过发送Get_Descriptor请求读取HID设备的描述符,了解描述符对了解USB设备是至关重要的。

HID设备的描述符

HID设备除了支持USB设备的5种标准描述符之外,还支持HID设备特有的3种描述符。这些描述符是:

USB标准描述符:设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。
HID特有的描述符:HID描述符、报表描述符(Report)和实体描述符(Physical)

从描述符的关联关系看,HID描述符是关联于接口。所以如果一个HID设备有2个端点,设备不需要每个端点有一个HID描述符。

从前面的USB描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长度和类型,描述符的类型字段(bDescriptorType)表明描述符的种类,下表列出了不同描述符的类型字段数值。

描述符应用数值类型
设备描述符所有设备必须有,只能一个1
配置描述符所有设备必须有,至少一个2
字符串描述符可选择3
接口描述符每一个接口一个4
端点描述符除端点0之外的每个端点一个5
设备限定描述符 Device_Qualiffier同时支持全速与高速的设备必须有一个6
其它速率配置描述符 Other_Speed_Configuration7
Interface_power8
HID描述符HID设备必须有21
Hub描述符29
报表描述符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请求,将设备由启动协议转换成报表协议。

 硬件描述

code:0121                 .byte 0x12              // bLength
code:0122                 .byte    1              // USB_DEVICE_DESCRIPTOR_TYPE
code:0123                 .word 2                 // bcdUSB
code:0125                 .byte    0              // bDeviceClass
code:0126                 .byte    0              // bDeviceSubClass
code:0127                 .byte 0                 // bDeviceProtocol
code:0128                 .byte 8                 // bMaxPacketSize
code:0129                 .word 0xF204            // VID
code:012B                 .word 0x2311            // DEVICE ID
code:012D                 .word 2                 // bcdDevice
code:012F                 .byte 1                 // USBD_IDX_MFC_STR
code:0130                 .byte    2              // USBD_IDX_PRODUCT_STR
code:0131                 .byte 0                 // USBD_IDX_SERIAL_STR
code:0132                 .byte    1              // USBD_CFG_MAX_NUM

code:0133                 .byte 9                 //  //配置描述符的字节数大小,固定为9字节
code:0134                 .byte    2              // 描述符类型编号,为0x02
code:0135                 .byte 0x5B              // WORD wTotalLength;     //配置所返回的所有数量的大小
code:0136                 .byte    0
code:0137                 .byte 3                 // /*bNumInterfaces: 3 interface*/
code:0138                 .byte    1              //   /*bConfigurationValue: Configuration value*/
code:0139                 .byte    0              //  /*iConfiguration: Index of string descriptor describing
code:013A                 .byte 0xA0              // /*bmAttributes: bus powered and Support Remote Wake-up */
code:013B                 .byte 0x32 ; 2          //   /*MaxPower 100 mA: this current is used for detecting Vbus*/


//interface 0
code:013C                 .byte 9                 // //设备描述符的字节数大小,为0x09
code:013D                 .byte 4                 //  //描述符类型编号,为0x04
code:013E                 .byte 0                 //   /*bInterfaceNumber: Number of Interface*/ 编号
code:013F                 .byte 0                 //     BYTE bAlternateSetting;//备用的接口描述符编号
code:0140                 .byte 1                 //     BYTE bNumEndpoints;     //该接口使用端点数,不包括端点0
code:0141                 .byte    3              //     BYTE bInterfaceClass;   //接口类型  3, hid
code:0142                 .byte    1              //     BYTE bInterfaceSubClass;//接口子类型, 1 for boot
code:0143                 .byte 1                 //    BYTE bInterfaceProtocol;//接口所遵循的协议  1 for keybarod
code:0144                 .byte    0              //      BYTE iInterface;         //描述该接口的字符串索引值 


//HID DESCRIPTOR
code:0145                 .byte 9
code:0146                 .byte 0x21              // HID_DESCRIPTOR_TYPE  HID设备的描述符
code:0147                 .byte 0x11              // bcdHID	 HID规范版本号(BCD) byte 0  bcdHID:设备与其描述符所遵循的HID规范的版本号码,此数值是4个16进位的BCD格式字符。例如版本1.1的bcdHID是0110h。
code:0148                 .byte    1              // bcdHID	 HID规范版本号(BCD) byte 1
code:0149                 .byte 0                 //bCountryCode	1	Numeric	硬件设备所在国家的国家代码	
code:014A                 .byte 1                 //bNumDescriptors	1	Numeric	类别描述符数目(至少有一个报表描述符)
code:014B                 .byte 0x22              //bReportType	1	Constant  总是0x22?
code:014C                 .byte 0x41              // wReportLength	2	Numeric	该类别描述符的总长度 Total length of Report descriptor
code:014D                 .byte    0              //【wDescriptorLength】

//端口1, IN, EP1, maxpacketsize
code:014E                 .byte 7
code:014F                 .byte 5                 //; USB_ENDPOINT_DESCRIPTOR_TYPE
code:0150                 .byte 0x81               //; IN 1
code:0151                 .byte 3
code:0152                 .byte 8                  //;wMaxPacketSize 
													/*
														USB2.0时:
														对于同步端点,此值用于指示主机在调度中保留的总线时间,这是每(微)帧数据有效负载所需的时间,
														有效负载时间就是发送一帧数据需要占用的总线时间,在实际数据传输过程中,管道实际使用的带宽
														可能比保留的带宽少,大家想想,如果实际使用的带宽比保留的还多,那就丢数了;
														对于其类型的端点,bit10~bit0指定最大数据包大小(以字节为单位);
														bit12~bit11对于高速传输的同步和中断端点有效:bit12~bit11可指定每个微帧的额外通信次数,
														这里大家一定要知道是在高速传输中,当一个事务超时时,在一个微帧时间内重传的次数,如果设置为
														00b(None),则表示在一个微帧内只传输一个事务,不进行额外的超时重传,如果设置为01b,
														则表示在一个微帧内可以传输两次事务,有一次额外的重传机会,从下面可以看出,一个微帧最多可以
														有两次重传事务的机会,如果微帧结束了还是失败,就需要等到下一个微帧继续发送该事务;
																											*/
code:0153                 .byte 0


code:0154                 .byte 0xA                 //主机查询端点的时间间隔 


code:0155                 .byte 9
code:0156                 .byte 4
code:0157                 .byte 1                 //   /*bInterfaceNumber: Number of Interface*/ 编号
code:0158                 .byte    0               //备用编号
code:0159                 .byte 1                 //     BYTE bNumEndpoints;     //该接口使用端点数,不包括端点0
code:015A                 .byte    3               //  BYTE bInterfaceClass;   //接口类型  3, hid
code:015B                 .byte    1              //      BYTE bInterfaceSubClass;//接口子类型   boot
code:015C                 .byte 2                  //    BYTE bInterfaceProtocol;//接口所遵循的协议  2 for mouse
code:015D                 .byte    0

code:015E                 .byte    9
code:015F                 .byte 0x21              //  HID_DESCRIPTOR_TYPE
code:0160                 .byte 0x11
code:0161                 .byte 1
code:0162                 .byte    0
code:0163                 .byte 1            //bNumDescriptors	1	Numeric	类别描述符数目(至少有一个报表描述符)
code:0164                 .byte 0x22 ;      //bReportType	1	Constant  总是0x22?
code:0165                 .byte 0x5F        // wReportLength	2	Numeric	该类别描述符的总长度 Total length of Report descriptor
code:0166                 .byte 1

code:0167                 .byte    7
code:0168                 .byte    5             //USB_ENDPOINT_DESCRIPTOR_TYPE
code:0169                 .byte 0x82             //IN EP2
code:016A                 .byte    3
code:016B                 .byte 0x20             //wMaxPacketSize 
code:016C                 .byte    0
code:016D                 .byte    4

code:016E                 .byte    9
code:016F                 .byte    4
code:0170                 .byte    2         //   /*bInterfaceNumber: Number of Interface*/ 编号         
code:0171                 .byte    0         //备用编号
code:0172                 .byte    2         //     BYTE bNumEndpoints;     //该接口使用端点数,不包括端点0    
code:0173                 .byte 3            //  BYTE bInterfaceClass;   //接口类型  3, hid             //     BYTE bInterfaceClass;   //接口类型  3, hid
code:0174                 .byte 0           //      BYTE bInterfaceSubClass;//接口子类型   not boot 
code:0175                 .byte 0          //    BYTE bInterfaceProtocol;//接口所遵循的协议  0 for None
code:0176                 .byte 0

code:0177                 .byte 9
code:0178                 .byte 0x21              ; HID_DESCRIPTOR_TYPE
code:0179                 .byte 0x11
code:017A                 .byte 1
code:017B                 .byte    0
code:017C                 .byte 1
code:017D                 .byte 0x22
code:017E                 .byte 0x1A         // wReportLength	2	Numeric	该类别描述符的总长度 Total length of Report descriptor
code:017F                 .byte 0

code:0180                 .byte 7
code:0181                 .byte 5                 // USB_ENDPOINT_DESCRIPTOR_TYPE
code:0182                 .byte 0x83              //IN EP3 
code:0183                 .byte 3
code:0184                 .byte 0x40               //wMaxPacketSize 
code:0185                 .byte    0
code:0186                 .byte 0xA

code:0187                 .byte 7
code:0188                 .byte 5                 // USB_ENDPOINT_DESCRIPTOR_TYPE
code:0189                 .byte    3              //  OUT EP3
code:018A                 .byte 3
code:018B                 .byte 0x20                //wMaxPacketSize 
code:018C                 .byte    0
code:018D                 .byte    6


code:018E                 .byte 4
code:018F                 .byte 3                 ; USB_STRING_DESCRIPTOR_TYPE

code:0190                 .byte 9
code:0191                 .byte 4
code:0192                 .byte 0x10
code:0193                 .byte    3              ; USB_STRING_DESCRIPTOR_TYPE
								/*
													09 04 10 03 43 00 68 00  69 00 63 00 6F 00 6E 00  ....C.h.i.c.o.n.
													79 00 20 03 57 00 69 00  72 00 65 00 6C 00 65 00  y. .W.i.r.e.l.e.
													73 00 73 00 20 00 44 00  65 00 76 00 69 00 63 00  s.s. .D.e.v.i.c.
													65 00                                             e
								*/
code:0194                 .byte 0x43 ; C
code:0195                 .byte 0
code:0196                 .byte 0x68
code:0197                 .byte 0
code:0198                 .byte 0x69
code:0199                 .byte 0
code:019A                 .byte 0x63
code:019B                 .byte    0
code:019C                 .byte 0x6F ; o
code:019D                 .byte 0
code:019E                 .byte 0x6E
code:019F                 .byte 0
code:01A0                 .byte 0x79
code:01A1                 .byte    0
code:01A2                 .byte 0x20
code:01A3                 .byte 3                 
code:01A4                 .byte 0x57
code:01A5                 .byte 0
code:01A6                 .byte 0x69
code:01A7                 .byte 0
code:01A8                 .byte 0x72
code:01A9                 .byte    0
code:01AA                 .byte 0x65
code:01AB                 .byte    0
code:01AC                 .byte 0x6C
code:01AD                 .byte 0
code:01AE                 .byte 0x65
code:01AF                 .byte    0
code:01B0                 .byte 0x73
code:01B1                 .byte 0
code:01B2                 .byte 0x73
code:01B3                 .byte    0
code:01B4                 .byte 0x20
code:01B5                 .byte 0
code:01B6                 .byte 0x44
code:01B7                 .byte    0
code:01B8                 .byte 0x65
code:01B9                 .byte    0
code:01BA                 .byte 0x76
code:01BB                 .byte    0
code:01BC                 .byte 0x69
code:01BD                 .byte 0
code:01BE                 .byte 0x63
code:01BF                 .byte    0
code:01C0                 .byte 0x65 ; e
code:01C1                 .byte 0

报告描述

//interface 0
0x05 0x01 Usage Page (Generic Desktop)
0x09 0x06 Usage (Keyboard)
0xa1 0x01 Collection (Application)
	0x05 0x07 Usage Page (Keyboard)
	0x19 0xe0 Usage Minimum (-32)
	0x29 0xe7 Usage Maximum (-25)
	0x15 0x00 Logical Minimum (0)
	0x25 0x01 Logical Maximum (1)
	0x95 0x08 Report Count (8)
	0x75 0x01 Report Size (1)
	0x81 0x02 Input (Data,Var,Abs)
	0x95 0x08 Report Count (8)
	0x75 0x01 Report Size (1)
	0x81 0x01 Input (Cnst,Ary,Abs)
	0x05 0x08 Usage Page (LEDs)
	0x19 0x01 Usage Minimum (1)
	0x29 0x03 Usage Maximum (3)
	0x95 0x03 Report Count (3)
	0x75 0x01 Report Size (1)
	0x91 0x02 Output (Data,Var,Abs)
	0x95 0x01 Report Count (1)
	0x75 0x05 Report Size (5)
	0x91 0x01 Output (Cnst,Ary,Abs)
	0x05 0x07 Usage Page (Keyboard)
	0x19 0x00 Usage Minimum (0)
	0x2a 0xff 0x00 Usage Maximum (255)
	0x15 0x00 Logical Minimum (0)
	0x26 0xff 0x00 Logical Maximum (255)
	0x95 0x06 Report Count (6)
	0x75 0x08 Report Size (8)
	0x81 0x00 Input (Data,Ary,Abs)
0xc0 End Collection

//interface 1
0x05 0x01 Usage Page (Generic Desktop)
0x09 0x80 Usage (System Control)
0xa1 0x01 Collection (Application)
	0x85 0x01 Report ID (1)
	0x19 0x81 Usage Minimum (-127)
	0x29 0x83 Usage Maximum (-125)
	0x15 0x00 Logical Minimum (0)
	0x25 0x01 Logical Maximum (1)
	0x75 0x01 Report Size (1)
	0x95 0x03 Report Count (3)
	0x81 0x02 Input (Data,Var,Abs)
	0x95 0x05 Report Count (5)
	0x81 0x01 Input (Cnst,Ary,Abs)
0xc0 End Collection
0x06 0x00 0xff Usage Page (Vendor Defined Page 1)
0x09 0x01 Usage (Vendor Usage 1)
0xa1 0x01 Collection (Application)
	0x85 0x02 Report ID (2)
	0x1a 0xf1 0x00 Usage Minimum (241)
	0x2a 0xfb 0x00 Usage Maximum (251)
	0x15 0x00 Logical Minimum (0)
	0x25 0x01 Logical Maximum (1)
	0x75 0x01 Report Size (1)
	0x95 0x0b Report Count (11)
	0x81 0x02 Input (Data,Var,Abs)
	0x95 0x05 Report Count (5)
	0x81 0x01 Input (Cnst,Ary,Abs)
0xc0 End Collection
0x05 0x0c Usage Page (Consumer Devices)
0x09 0x01 Usage (Consumer Control)
0xa1 0x01 Collection (Application)
	0x85 0x03 Report ID (3)
	0x15 0x00 Logical Minimum (0)
	0x25 0x01 Logical Maximum (1)
	0x75 0x01 Report Size (1)
	0x95 0x08 Report Count (8)
	0x19 0xb5 Usage Minimum (-75)
	0x29 0xb8 Usage Maximum (-72)
	0x09 0xcd Usage (UNK)
	0x09 0xe2 Usage (Mute)
	0x09 0xe9 Usage (Volume Up)
	0x09 0xea Usage (Volume Down)
	0x81 0x02 Input (Data,Var,Abs)
	0x0a 0x83 0x01 Usage (UNK)
	0x0a 0x8a 0x01 Usage (UNK)
	0x0a 0x92 0x01 Usage (UNK)
	0x0a 0x94 0x01 Usage (UNK)
	0x0a 0x21 0x02 Usage (UNK)
	0x1a 0x23 0x02 Usage Minimum (547)
	0x2a 0x25 0x02 Usage Maximum (549)
	0x81 0x02 Input (Data,Var,Abs)
	0x0a 0x26 0x02 Usage (UNK)
	0x0a 0x27 0x02 Usage (UNK)
	0x0a 0x2a 0x02 Usage (UNK)
	0x95 0x03 Report Count (3)
	0x81 0x02 Input (Data,Var,Abs)
	0x95 0x05 Report Count (5)
	0x81 0x01 Input (Cnst,Ary,Abs)
0xc0 End Collection
0x05 0x01 Usage Page (Generic Desktop)
0x09 0x02 Usage (Mouse)
0xa1 0x01 Collection (Application)
	0x09 0x01 Usage (Pointer)
	0xa1 0x00 Collection (Physical)
		0x85 0x04 Report ID (4)
		0x05 0x09 Usage Page (Button)
		0x19 0x01 Usage Minimum (1)
		0x29 0x03 Usage Maximum (3)
		0x15 0x00 Logical Minimum (0)
		0x25 0x01 Logical Maximum (1)
		0x95 0x03 Report Count (3)
		0x75 0x01 Report Size (1)
		0x81 0x02 Input (Data,Var,Abs)
		0x95 0x05 Report Count (5)
		0x81 0x01 Input (Cnst,Ary,Abs)
		0x05 0x01 Usage Page (Generic Desktop)
		0x16 0x01 0xf8 Logical Minimum (-2047)
		0x26 0xff 0x07 Logical Maximum (2047)
		0x75 0x0c Report Size (12)
		0x95 0x02 Report Count (2)
		0x09 0x30 Usage (X)
		0x09 0x31 Usage (Y)
		0x81 0x06 Input (Data,Var,Rel)
		0x15 0x81 Logical Minimum (-127)
		0x25 0x7f Logical Maximum (127)
		0x75 0x08 Report Size (8)
		0x95 0x01 Report Count (1)
		0x09 0x38 Usage (Wheel)
		0x81 0x06 Input (Data,Var,Rel)
	0xc0 End Collection
0xc0 End Collection
0x06 0x01 0xff Usage Page (UNK)
0x09 0x01 Usage (UNK)
0xa1 0x01 Collection (Application)
	0x85 0x05 Report ID (5)
	0x95 0x01 Report Count (1)
	0x75 0x08 Report Size (8)
	0x15 0x00 Logical Minimum (0)
	0x25 0x0a Logical Maximum (10)
	0x09 0x20 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x27 0xff 0xff 0x00 0x00 Logical Maximum (65535)
	0x75 0x10 Report Size (16)
	0x09 0x27 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x23 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x24 Usage (UNK)
	0xb1 0x03 Feature (3)
0xc0 End Collection
0x06 0x01 0xff Usage Page (UNK)
0x09 0x02 Usage (UNK)
0xa1 0x01 Collection (Application)
	0x85 0x06 Report ID (6)
	0x95 0x01 Report Count (1)
	0x75 0x08 Report Size (8)
	0x15 0x00 Logical Minimum (0)
	0x25 0x0a Logical Maximum (10)
	0x09 0x20 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x27 0xff 0xff 0x00 0x00 Logical Maximum (65535)
	0x75 0x10 Report Size (16)
	0x09 0x27 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x23 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x24 Usage (UNK)
	0xb1 0x03 Feature (3)
0xc0 End Collection
0x06 0x01 0xff Usage Page (UNK)
0x09 0x03 Usage (UNK)
0xa1 0x01 Collection (Application)
	0x85 0x07 Report ID (7)
	0x95 0x01 Report Count (1)
	0x75 0x10 Report Size (16)
	0x15 0x00 Logical Minimum (0)
	0x27 0xff 0xff 0x00 0x00 Logical Maximum (65535)
	0x09 0x27 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x75 0x08 Report Size (8)
	0x26 0xff 0x00 Logical Maximum (255)
	0x09 0x21 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x22 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x25 Usage (UNK)
	0xb1 0x03 Feature (3)
	0x09 0x26 Usage (UNK)
	0xb1 0x03 Feature (3)
0xc0 End Collection
0x06 0x01 0xff Usage Page (UNK)
0x09 0x08 Usage (UNK)
0xa1 0x01 Collection (Application)
	0x85 0x08 Report ID (8)
	0x06 0x00 0xff Usage Page (Vendor Defined Page 1)
	0x09 0x05 Usage (UNK)
	0x19 0x00 Usage Minimum (0)
	0x2a 0xff 0x7f Usage Maximum (32767)
	0x15 0x00 Logical Minimum (0)
	0x26 0xff 0x7f Logical Maximum (32767)
	0x75 0x10 Report Size (16)
	0x95 0x04 Report Count (4)
	0xb1 0x02 Feature (2)
0xc0 End Collection

interface 2
0x06 0x01 0xff Usage Page (UNK)
0x09 0x04 Usage (UNK)
0xa1 0x01 Collection (Application)
	0x85 0x04 Report ID (4)
	0x19 0x00 Usage Minimum (0)
	0x2a 0xff 0x00 Usage Maximum (255)
	0x15 0x00 Logical Minimum (0)
	0x26 0xff 0x00 Logical Maximum (255)
	0x75 0x08 Report Size (8)
	0x95 0x1f Report Count (31)
	0xb1 0x02 Feature (2)
0xc0 End Collection

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个无线鼠标的HID Report Desc 的相关文章

  • 将计算机设置为通过 ps/2、usb 或其他有线连接连接到另一台计算机的 HID 设备

    我有兴趣设置一台机器 主机 A 并通过 USB 或 ps 2 将其连接到另一台机器 主机 B 以便主机 B 将主机 A 识别为键盘 在主机 A 上 运行着一个人工神经网络 它会动态生成输入序列 对我来说很重要的是 主机 A 只能以 人类 方
  • 将 Oracle 报告 (.rdf) 转换为 BIRT 报告

    我有一些 Oracle 报告 rdf 正在考虑将其转换为 BIRT 报告 有没有办法将 rdf 文件转换为 BIRT 报告设计文件 完全自动化的解决方案可能是不可能的 您可以部分自动化转换过程 如下所示 将 RDF 文件转换为 XML 提取
  • 如何可靠地将 X11 键码转换回扫描码或隐藏使用 ID

    几乎自己解决了 背景信息 Linux 密钥代码 以下内容来自 linux xmodmap tutorial 扫描码 键盘发送到计算机的数字 USB用 键盘 它是由 USB 标准定义的 Keycode Linux 内核用来表示按键 或鼠标 的
  • HID 兼容设备不会在 ChromeOS 上使用 chrome.hid API 进行枚举

    使用 USB HID 传感器我似乎只能用chrome usb API https developer chrome com apps usb在 Chrome 操作系统上 在 OS X 上我可以枚举chrome hid API https d
  • 使用报表查看器在运行时将未知数量的图像插入到报表中

    我正在使用reportviewer 我想在运行时向报告中添加未知数量的图像 用户应该选择一些图像 在另一个地方 这些图像应该一个接一个地显示在报告中 您知道如何使用报表查看器来做到这一点吗 谢谢 奥菲尔 有很多方法可以做到这一点 这是一种可
  • “崩溃发生在 Java 虚拟机之外的本机代码中。”如何解决此错误(Java)?

    使用此链接中的库http www blog kslemb com doku php en projects globx java hid http www blog kslemb com doku php en projects globx
  • 创建docx word文档 web api .net core 2.0

    我正在Asp net core 2 0中开发一个Web API项目 我需要一个库或方法来创建 Word 文档 我搜索了一个尝试过的 NPOI 和 DocX 两者都没有想象中那么好 有人能给我推荐一个工具吗 乍一看 以下链接可以有所帮助 ht
  • python读取HID

    我想做一个程序 它从连接到 Linux 系统的 HID 获取输入并从中生成 MIDI 我在 MIDI 方面还不错 但在 HID 方面却遇到了困难 虽然这种方法工作正常 取自 usr bin python2 import struct inp
  • 在 Django 中生成带有内联摘要的列表/报告

    我正在尝试编写一个视图 该视图将生成一个报告 显示我的库存系统中的所有项目 并在某个点提供摘要 顺便说一下 这个报告纯粹是一个 HTML 模板 就我而言 每个项目都是订单的一部分 一个订单可以有多个项目 我希望能够在每个订单结束后显示基于
  • 为什么没有 oracle Forms 或 Reports 反编译器? (技术上)

    我不明白为什么我找不到这样的工具 oracle Forms 或 Reports 反编译器 这是非常有价值的 因为很多企业都使用基于oracle的系统 有谁知道 FMX 或 REP 格式文件结构有什么特殊之处 导致无法为其构建反编译器 鉴于他
  • NodeJS 从后台进程读取 stdin

    我有一个在 Ubuntu 12 04 LTS 下作为服务运行的节点进程 它在 etc init 下有一个配置文件 该系统在连接了条形码阅读器的无头 x86 路由器板上运行 我需要做的是能够读取来自条形码阅读器的输入 其行为类似于 USB 键
  • 如何防止浏览器标题中出现 blob + guid

    基本上 我正在做的是在服务器上生成一个 PDF 文件并通过 javascript 在浏览器中显示它 如下所示 file new window Blob data type application pdf var fileUrl URL cr
  • Tableau Javascript API HTTPS 不起作用

    我正在尝试将报告嵌入到我的网站上 但出现以下错误 混合内容 页面位于 https mywebsite com blah blah https mywebsite com blah blah 通过 HTTPS 加载 但请求了不安全的资源 ht
  • 通过 HID OMNIKEY 5427 CK 向卡发送 APDU 命令

    我正在尝试通过 HID OMNIKEY 5427 CK 通过 APDU 命令来操作 MIFARE 卡 即 Ultralight C 卡 在 Windows 10 x64 操作系统环境上使用 WinSCard dll 我已签署 NXP NDA
  • 如何对 USB/HID/蓝牙适配器进行逆向工程。使用什么工具?

    需要对蓝牙USB鼠标适配器进行逆向工程 并使用鼠标板测量距离 并用绘图库 http matplotlib org 我发现这些工具可以帮助完成此任务 Linux lsusb usbmon usbhid转储 rfcomm hidrd 转换 xx
  • WriteFile 返回错误代码 87

    我正在开发一个写入 HID 设备的程序 但收到错误 87 WriteFile 函数参数无效 我从 Jan Axelson 的 USB Complete 获得了这些功能 所以我不确定为什么会收到错误 我用它来查找我的设备 private vo
  • 使用 SQL 获取每小时统计信息

    我们有一张桌子 名字 员工注册 有字段 employeeNo employeeName Registered on Here 注册日期是一个时间戳 我们要求在几天内按小时进行注册 例如 08 年 1 月 1 日 12 点 下午 1 点 15
  • 如何在 odoo 中打印重复的 qweb 报告?

    我创建了一份运行良好的报告 现在我在表单的标题名称 打印重复 中创建了一个按钮 它将打印相同的报告 但是 当我点击 打印副本 按钮 我想在报告顶部打印 重复报告 截屏 https i stack imgur com Hiu67 png 单击
  • 如何计算预渲染 MorphX 报告中的报告页数?

    我们试图强制 morphX 报告的长度为偶数页 以便我们的自动折叠机可以正确处理工作量 但在使用时没有成功element pagesTotal 这样做 其他人如何获得元素级别每个实体报告的页数 这是 Dynamic ax 2009 对不起
  • 我想从 Crystal Report .rpt 文件中提取 SQL 查询,有办法做到这一点吗?

    我想从 Crystal Report rpt 文件中提取 SQL 查询 有办法做到这一点吗 我没有任何 Crystal Reports 产品 只有 rpt 文件 下面是一个 Net 代码示例 它从给定目录中的所有 Crystal Repor

随机推荐

  • 利用火狐浏览器脚本功能_充分利用Firefox

    利用火狐浏览器脚本功能 Firefox 0 8的发布消息是凤凰网 Firebird Mozilla浏览器系列中的最新版本 xff0c 目前 xff0c Web开发社区对此感到非常关注 该发行版标志着Mozilla项目独立浏览器的第三个也是最
  • 串口接收无定长数据

    1 原理 xff1a 1 使能串口接收中断 定时器中断 xff1b 2 在串口第一次进入到中断后 xff0c 使能定时器计时 xff1b 3 在串口每次进入中断后 xff0c 清空定时器 xff1b 4 当定时器溢出时 xff0c 判定数据
  • OpenWRT 小记

    查看openwrt内核版本 xff1a cat proc version uname r 生成配置文件 xff1a config generate 查看DHCH 已经分配的IP cat var dhcp leases 分割cat tmp d
  • OpenWrt OpenMPTCProuter feed

    echo 34 src git OpenMPTCProuter https github com Ysurac openmptcprouter feeds git 34 gt gt feeds conf default echo 34 sr
  • openwrt路由器接华为E3372(E8372)网卡实现4G转有线和WIFI

    Hilink 在openwrt系统中安装kmod usb net rndis kmod usb net kmod usb2 usb modeswitch kmod usb net cdc ether 安装完成后 xff0c 把E3372 x
  • windows 10 内存居高不下,实际没开多少进程

    windows 10 内存居高不下 xff0c 实际没开多少进程 关闭快速启动 就好了
  • opkg list 报错

    opkg list Collected errors opkg conf load Could not lock var lock opkg lock Resource temporarily unavail echo 34 nameser
  • openwrt opkg install 强制替换安装

    查询 opkg list installed grep XXX opkg install XXX ipk force downgrade
  • stm32 硬件spi半双工三线的一些研究心得

    a7105可以使用四线spi 或者3线spi 但是之前都是使用3线的软件模拟的三线spi的 xff0c 所以不想改其它代码了 xff0c 就想可以提高一个spi的读写速度 xff0c 原来软件方式的读写速度 xff0c 在48Mhz的03x
  • Openwrt tftp刷机

    第一次写论坛 xff0c 今天早上才拿到路由器 开始学习openwrt 之前学过嵌入式Linux arm 移植 xff0c 开始正题 xff1a 拿到开发板后 xff0c 就开始烧写自己编译的 bin文件 xff0c 在烧写的过程中出现了问
  • openwrt ipk 安装 luci 界面

    试试看可行不 慢慢更新 opkg update 更新 opkg list grep svn
  • OpenWRT php 安装

    一 安装PHP opkg update opkg install php5 php5 mod apc opkg install php5 mod gd php5 mod session opkg install php5 mod pdo m
  • ESP8266 固件擦除

    折腾了两天 真是醉了 首先确认安装 python python2是否安装 python2 version sudo apt isntall python pip 安装pip和他的许多其他依赖 pip 9 0 1 from usr lib p
  • 第二次实验报告:使用Packet Tracer分析应用层协议

    姓名 xff1a 刘钰学号 xff1a 201821121036班级 xff1a 计算1812 1 实验目的 熟练使用Packet Tracer工具 分析抓到的应用层协议数据包 xff0c 深入理解应用层协议 xff0c 包括语法 语义 时
  • C++的类与C语言结构体比较

    C 43 43 的类与C语言结构体比较 C 43 43 的类与C语言结构体比较 一 结构体 xff0c 类的介绍二 结构体和类的具体区别1 C语言对结构体数组初始化 必须要在定义时初始化 xff1a 2 C 43 43 的类的初始化 构造函
  • CPP-网络/通信:经典HTTP协议详解

    2008 11 03 09 11 by Hundre 266688 阅读 23 评论 收藏 编辑 转自 xff1a http blog csdn net gueter archive 2007 03 08 1524447 aspx Auth
  • 串口编程3:使用串口读取GPS信息

    关于GPS的使用 xff0c 参考 本文主要参考的博客 xff0c 在此表示感谢 xff01 xff01 xff01 主函数 主函数gps main c xff0c 这里便涉及到了串口的打开 xff0c 读操作 xff0c 以及调用了串口设
  • 基于单片机语音智能导盲仪仿真设计-毕设课设资料

    资料下载地址 1110 xff08 百度网盘 xff09 xff1a 点击下载 包含超声波传感器检测障碍物 xff0c 温度传感器检测当前温度 可以通过按键设置距离报警范围 xff0c 报警装置通过声光报警 包含的电路有电源电路 显示电路
  • 宏定义详解

    宏定义有无参数宏定义和带参数宏定义两种 无参数的宏定义的一般形式为 define 标识符 字符序列 其中 define之后的标识符称为宏定义名 简称宏名 xff0c 要求宏名与字符序列之间用空格符分隔 这种宏定义要求编译预处理程序将源程序中
  • 一个无线鼠标的HID Report Desc

    HID设备是USB规范定义的设备类型之一 xff0c 其分类号为0x03 关于USB设备类型定义 xff0c 可参见本站 xff1a USB设备类型定义 USB中文网 HID设备除了用于专门的输入输出设备外 xff0c 有时也与其它的设备类