当前位置:首页 >> 电脑基础知识 >>

自己整理的USB-HID鼠标、键盘通讯格式


自己整理的USB-HID鼠标、键盘通讯格式,欢迎指教
【详细说明】自己整理的USB-HID鼠标、键盘通讯格式,欢迎指教

想用STM32做个无线键鼠遥控、找了好几天没有找到完整的USB鼠标键盘协议介绍。最后自己收集整理了一份,希望对需要的朋友有所帮助。
废话不多说,进入正题:

鼠标发送给PC的数据每次4个字节
BYTE1 BYTE2 BYTE3 BYTE4
定义分别是:
BYTE1 --
|--bit7: 1 表示 Y 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|--bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|--bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动
|--bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动
|--bit3: 恒为1
|--bit2: 1表示中键按下
|--bit1: 1表示右键按下
|--bit0: 1表示左键按下
BYTE2 -- X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
BYTE3 -- Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
BYTE4 -- 滚轮变化。
由于手上没有USB鼠标,对BYTE1的4-7位没有测试,对于BYTE2 BYTE3做个测试,BYTE1的4-7全为0的时候,BYTE2 BYTE3的正负表示鼠标移动方向

键盘发送给PC的数据每次8个字节
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8
定义分别是:
BYTE1 --
|--bit0: Left Control是否按下,按下为1
|--bit1: Left Shift 是否按下,按下为1
|--bit2: Left Alt 是否按下,按下为1
|--bit3: Left GUI 是否按下,按下为1
|--bit4: Right Control是否按下,按下为1
|--bit5: Right Shift 是否按下,按下为1
|--bit6: Right Alt 是否按下,按下为1
|--bit7: Right GUI 是否按下,按下为1
BYTE2 -- 暂不清楚,有的地方说是保留位
BYTE3--BYTE8 -- 这六个为普通按键
键盘经过测试。
例如:键盘发送一帧数据 02 00 0x04 0x05 00 00 00 00
表示同时按下了Left Shift + ‘a’+‘b’三个键
对于键码和PS2的键盘有所不同,具体请看附件。
USB HID to PS2 Scan Code 对照表.pdf
USB HID to PS2 Scan Code Translation Table.pdf (133.25 KB)

2011.6.23补充说明
补充对于键盘BYTE2的说明:
参照百合网(http://www.baiheee.com/OpenSourc ... 1%20Programer12.htm)键盘的报告描述符,如下
/*******************************************************************************************/
//这里只列出了第二个字节的说明
//这样的数据段个数为1
0x95, 0x01, // REPORT_COUNT (1)
//每个段长度为8bits
0x75, 0x08, // REPORT_SIZE (8)
//输入用,常量,值,绝对值
0x81, 0x03, // INPUT (Cnst,Var,Abs)

//上面这8个bit是常量,设备必须返回0
/*******************************************************************************************/
这里只是指明了这是一个以字节为单位的输入数据,并没有指明它的取值范围。

在HID1.11协议的Appendix B-->B.1 Protocol 1 (Keyboard) 的报告描述符中也有这样的说明(HID1.11协议的59页)
/*******************************************************************************************/
Report Count (1),
Report Size (8),
Input (Constant), ;Reserved byte
Report Count (5),
Report Size (1),
/*******************************************************************************************/
在注释中说明,这个字节是保留字节。
这里我也把HID1.11传上来给大家研究。

相关文章:
USB接口HID设备说明书_图文
是 直接与人交互的 USB 设备,例如键盘鼠标与游戏...固件的要求主机的驱动程序要与 HID 设备通信,设备的...所有的 HID 数据都必须使用定义过的报表格式来定义...
HID类键盘的报告描述符的理解
此软件可以观察到 USB 设备与主机(PC)之间的通讯 数据,特别那 11 个标准请求...对于 HID 类设备,特别 是鼠标键盘这类的,只需你能按照报告描述符所描述的格式...
USB HID键盘扫描码
USB HID键盘扫描码_信息与通信_工程科技_专业资料。Windows Platform Design Notes...USB HID 学习实例之如何... 20页 免费 自己整理的USB-HID鼠标、... 2页 ...
USBHID设备报告描述符详解
USB 通讯协议的规范是以 1ms USB/HID 设备报告描述符详解概述: 报告在这里意思...鼠标(输入报告) 6 5 4 3 2 1 0 Buttons 表 9:范例的输出报告格式 键盘...
USB学习小记-HID类学习流程
此软件可以观察到 USB 设备与主机(PC)之间的通讯数据,特别那11个标准请求的...对于 HID 类设备,特别是鼠标键盘这类的,只需你能按照报告描述符所描述的格式,...
Windows主机端与自定义USB HID设备通信详解
Windows主机端与自定义USB HID设备通信详解_计算机软件及应用_IT/计算机_专业资料...在此讨论的是 HID 自定义设备,对于标准设备,譬如 USB 鼠标键盘,由 于操作...
USB的HID通信协议
USB的HID通信协议_计算机软件及应用_IT/计算机_专业资料。USB的HID通信协议USB 事务处理是主机和设备之间数据传输的基本单位,由一系列具有特定格式的信息包组 成。因...
USB_HID_设备类协议入门
用 于控制计算机操作的一些方面,如 USB 鼠标,USB 键盘,USB 游戏操纵杆, USB ...HID 设备描述符 主要描述 HID 规范的版本号、HID 通信所使用的额外描述符、...
USB HID学习手册_图文
USB HID通讯 USB HID 学习笔记程序部分: 一、 PC...如鼠标键盘等。运行在 WINDOWS98 或其他更高的..., GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxx...
上位机编程实现与USB—HID设备通信
上位机编程实现与 USBHID 设备通信 【摘要】在...如键盘鼠标、 游戏杆等; 但是 HID 设备不一定...数据存储在报告的结构内,设备必须支持 HID 报告格式...
更多相关标签: