搜索
bottom↓
回复: 166

自己整理的USB-HID鼠标、键盘通讯格式,欢迎指教

  [复制链接]

出0入0汤圆

发表于 2011-6-22 14:24:25 | 显示全部楼层 |阅读模式
想用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 对照表.pdfourdev_651088NZ5EKW.pdf(文件大小:133K) (原文件名:USB HID to PS2 Scan Code Translation Table .pdf)


2011.6.23补充说明
补充对于键盘BYTE2的说明:
参照百合网(http://www.baiheee.com/OpenSource/Easy%20USB%2051%20Programer/Easy%20USB%2051%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传上来给大家研究。
ourdev_651409JXHOAD.pdf(文件大小:661K) (原文件名:HID1.11协议.pdf)
ourdev_651410WJINWH.pdf(文件大小:745K) (原文件名:HID用途表1.12.pdf)

出0入0汤圆

 楼主| 发表于 2011-6-22 14:25:16 | 显示全部楼层
USB版块的处女贴,自己顶一下!

出0入0汤圆

发表于 2011-6-22 14:51:39 | 显示全部楼层
好,帮顶

出0入4汤圆

发表于 2011-6-22 15:14:01 | 显示全部楼层
整理得不错。

出0入0汤圆

发表于 2011-6-22 18:17:06 | 显示全部楼层
好帖

出0入0汤圆

发表于 2011-6-22 18:23:35 | 显示全部楼层
好贴,顶下

出0入0汤圆

发表于 2011-6-22 19:33:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-22 23:16:39 | 显示全部楼层
mark

出0入85汤圆

发表于 2011-6-23 00:09:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-23 21:01:50 | 显示全部楼层
很好,正在学习这方面的东西,正好参考参考。

出0入0汤圆

发表于 2011-6-24 08:10:06 | 显示全部楼层
好,谢谢。

出0入0汤圆

发表于 2011-6-24 08:25:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-24 08:28:57 | 显示全部楼层
整理的很好~~~~

出0入0汤圆

发表于 2011-6-24 09:16:40 | 显示全部楼层
mark!谢谢啦

出0入0汤圆

发表于 2011-6-24 10:07:57 | 显示全部楼层
收藏备用,谢谢。

出0入0汤圆

发表于 2011-6-24 14:47:40 | 显示全部楼层
不错 收藏一下

出0入0汤圆

发表于 2011-6-29 09:19:21 | 显示全部楼层
收藏备用!

出0入0汤圆

发表于 2011-6-29 09:30:27 | 显示全部楼层
好东西 正在做usb相关的 多谢

出0入0汤圆

发表于 2011-6-29 09:33:21 | 显示全部楼层
不错的好资料!标记备用

出0入0汤圆

发表于 2011-7-16 09:49:42 | 显示全部楼层
很好,我也在研究。。

出0入0汤圆

发表于 2011-7-20 01:23:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-20 12:36:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-20 12:45:40 | 显示全部楼层
mark!!!!!!!!

出0入0汤圆

发表于 2011-7-20 12:51:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-24 21:05:29 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-25 00:31:36 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-7-26 08:52:49 | 显示全部楼层
学习学习啊

出0入0汤圆

发表于 2011-7-26 09:01:36 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-7-26 11:46:07 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-7-26 12:00:43 | 显示全部楼层
好东西!

出0入0汤圆

发表于 2011-7-29 18:06:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-2 12:11:26 | 显示全部楼层
有些地方可能还需要再斟酌一下,最好再看看usb-hid spec

出0入0汤圆

 楼主| 发表于 2011-8-4 13:41:17 | 显示全部楼层
回复【36楼】f1yh1347  
有些地方可能还需要再斟酌一下,最好再看看usb-hid spec
-----------------------------------------------------------------------

是的,因为这只是我收集并对照hid1.11整理,并没有每一个都验证(帖子里也明确说明了),可能有一下地方不准确。
不过我觉得这个资料对学习USBHID键盘鼠标设备还是很有价值的。

诚请【36楼】f1yh1347把需要斟酌提出来,让大家把它弄明白。

出0入0汤圆

 楼主| 发表于 2011-8-4 13:58:14 | 显示全部楼层
把键盘的输出字节补充出来
USB-HID键盘一般还会有一个输出字节,由PC发送给键盘,控制键盘指示灯。
BYTE0
格式如下
BYTE0 --
       |--bit0:   NUM LOCK
       |--bit1:   CAPS LOCK
       |--bit2:   SCROLL LOCK
       |--bit3:   COMPOSE
       |--bit4:   KANA
       |--bit5:   CONSTANT
       |--bit6:   CONSTANT  
       |--bit7:   CONSTANT

       0 = OFF, 1 = ON
CONSTANT表示保留位,为常数0

出0入0汤圆

发表于 2011-8-4 14:02:12 | 显示全部楼层
收下,谢谢楼主!

出0入4汤圆

发表于 2011-8-4 14:04:29 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-8-4 14:18:45 | 显示全部楼层
八错八错,顶一下!

出0入0汤圆

发表于 2011-8-12 15:02:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-12 15:27:19 | 显示全部楼层
回复【37楼】lugang_2920213 小弥勒
回复【36楼】f1yh1347   
有些地方可能还需要再斟酌一下,最好再看看usb-hid spec
-----------------------------------------------------------------------
是的,因为这只是我收集并对照hid1.11整理,并没有每一个都验证(帖子里也明确说明了),可能有一下地方不准确。
不过我觉得这个资料对学习usbhid键盘鼠标设备还是很有价值的。

-----------------------------------------------------------------------

帮顶37楼!

出0入0汤圆

发表于 2011-8-13 08:15:08 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-8-13 11:29:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-8 08:34:24 | 显示全部楼层
回复【37楼】lugang_2920213  小弥勒
-----------------------------------------------------------------------

这种数据一般是根据Report Descriptor指定数据格式的,只能说大部分是你说的这样。我有一罗技的鼠标,它就包含有5个字节,关于X和Y每个有12bit,而不是1Byte(8bit)。有的多功能鼠标还包含其他功能,比如说前进,后退,肯定不止这些功能,所以数据肯定不止这些,你这样写让新入手USB的人造成困惑的。

出0入0汤圆

发表于 2011-10-8 10:56:06 | 显示全部楼层
HID USB spec上有对Report Descriptor的详细介绍,而且最后还有一个实例,就是用鼠标作例子,已经将USB鼠标的数据格式讲得比较清楚了,大家可以看一下。

出0入0汤圆

发表于 2011-10-8 11:09:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-8 13:12:35 | 显示全部楼层
谢谢楼主分享!!!!!

出0入0汤圆

发表于 2011-10-8 16:59:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-8 17:37:53 | 显示全部楼层
顶一记!

出0入0汤圆

发表于 2011-12-13 17:22:32 | 显示全部楼层
"对于键码和PS2的键盘有所不同,具体请看附件。
USB HID to PS2 Scan Code 对照表."
新手请教,键扫描码可以使用PS2的键码不?或者说模拟成PS2键盘?

出0入0汤圆

发表于 2011-12-15 08:16:13 | 显示全部楼层
顶.

出0入0汤圆

发表于 2011-12-15 09:38:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-15 10:42:07 | 显示全部楼层
看看,想找出 双飞燕4D++  通讯内容,嘿嘿。

出0入0汤圆

发表于 2011-12-20 18:50:25 | 显示全部楼层
很不错 浅显一动

出0入0汤圆

发表于 2011-12-20 20:06:31 | 显示全部楼层
整理得不错。

出0入0汤圆

发表于 2011-12-20 21:20:39 | 显示全部楼层
好资料啊,以后一定用得到的,HID协议不用自己写驱动,通用性非常好的

出0入0汤圆

发表于 2012-1-6 15:50:07 | 显示全部楼层
回复【楼主位】lugang_2920213  小弥勒
-----------------------------------------------------------------------

不错,做了个USB键盘,自动输入淘宝的密码,好像必须结尾多加入一个全0的数据发给主机,不然默认为持续按键
一开始没弄好,一直输入gggggggggggggggggggggggggggggggggggg,头疼死了,呵呵

出0入0汤圆

发表于 2012-1-6 16:02:31 | 显示全部楼层
USB键盘需要发送通码和断码的,通码断码就是全0

出0入0汤圆

发表于 2012-1-6 16:49:35 | 显示全部楼层
记号。

出0入0汤圆

发表于 2012-1-9 16:55:22 | 显示全部楼层
Mark,USB-HID鼠标、键盘通讯格式!

出0入4汤圆

发表于 2012-1-9 16:59:24 | 显示全部楼层
mark, USB键盘鼠标

出0入0汤圆

发表于 2012-2-9 11:11:29 | 显示全部楼层
这个有用哦!!!。

出0入0汤圆

发表于 2012-2-9 11:16:03 | 显示全部楼层
这个好,这几天正想琢磨一下空中鼠标。

出0入0汤圆

发表于 2012-6-5 09:18:37 | 显示全部楼层
下载不了,郁闷呀

出0入0汤圆

发表于 2012-6-5 09:59:10 | 显示全部楼层

好东西
USB鼠标键盘协议

出0入0汤圆

 楼主| 发表于 2012-6-7 16:50:26 | 显示全部楼层
sz135848 发表于 2012-1-6 15:50
回复【楼主位】lugang_2920213  小弥勒
--------------------------------------------------------------- ...

按键都有通码和断码,发送通码不发送断码就会自动打印该键码。你的情况就是发送路通码后没有发送断码,就好像你按下键盘上的键不放。

出0入0汤圆

发表于 2012-7-26 14:14:36 | 显示全部楼层
比如说按下左键,Mouse_Buffer[0] |= 0x01;会把这个数据发给电脑,在电脑端鼠标是左键是一直按下状态还是就按了一下。
如果是一直按着的话怎么让它松开呢?如果又不是一直按着的,那我想实现鼠标长按怎么办呢?

前面看到键盘需要通码和断码,鼠标也需要这些码?

出0入0汤圆

发表于 2012-8-18 10:24:32 | 显示全部楼层
MARK 这个有用

出100入143汤圆

发表于 2012-8-20 12:04:01 | 显示全部楼层
想问一下,a的编码0x04是怎么来的呢,如果想把ascii变为这样的编码该怎么处理啊

出0入0汤圆

发表于 2012-8-20 13:01:35 | 显示全部楼层
mark, thanks a lot.

出0入0汤圆

 楼主| 发表于 2012-8-21 22:05:03 | 显示全部楼层
zzh90513 发表于 2012-8-20 12:04
想问一下,a的编码0x04是怎么来的呢,如果想把ascii变为这样的编码该怎么处理啊 ...

键盘扫描码,是规定好的,可以查看附件里面表(USB HID to PS2 Scan Code 对照表)。要变成ASCII码,你可以读出键码后在查表。

出0入0汤圆

发表于 2012-8-21 22:23:18 | 显示全部楼层
mark,楼主好人

出0入0汤圆

发表于 2012-9-24 10:50:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-11-15 09:29:34 | 显示全部楼层
好帖,求 手机 支持Touch Pad 的 HID 格式说明!!

出0入0汤圆

发表于 2012-11-23 14:57:00 | 显示全部楼层
MARK                     

出0入0汤圆

发表于 2012-11-23 15:50:42 | 显示全部楼层
貌似这个是跟着“报告描述符”一起的吧。不同的报告描述符对应不同的数据格式。
头像被屏蔽

出0入0汤圆

发表于 2012-11-23 16:24:36 | 显示全部楼层
谢谢楼主 支持了

出350入8汤圆

发表于 2012-11-23 16:33:10 | 显示全部楼层
严重收藏,日后有用!

出0入0汤圆

发表于 2013-2-20 20:05:55 来自手机 | 显示全部楼层
不锆的呀

出0入0汤圆

发表于 2013-2-20 20:07:46 来自手机 | 显示全部楼层
不错的hid资料

出0入0汤圆

发表于 2013-2-21 10:09:30 来自手机 | 显示全部楼层
好资料多谢!

出0入0汤圆

发表于 2013-2-21 11:54:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-4-7 14:13:08 | 显示全部楼层
收藏!多谢楼主共享

出0入0汤圆

发表于 2013-4-7 15:43:15 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2013-4-7 21:58:47 | 显示全部楼层
好东西,收藏

出0入0汤圆

发表于 2013-4-8 13:27:01 | 显示全部楼层
很不错,收藏了

出0入0汤圆

发表于 2013-4-8 13:32:43 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2013-4-8 18:48:42 | 显示全部楼层
谢谢共享,学习一下~~~~~~~~~~~

出0入36汤圆

发表于 2013-6-28 11:02:48 | 显示全部楼层
收藏!多谢楼主共享

出0入17汤圆

发表于 2013-6-29 08:50:47 | 显示全部楼层
经典,收藏~
多谢楼主~

出0入0汤圆

发表于 2013-9-4 14:07:26 | 显示全部楼层
谢谢楼主!其他按键都模拟成功了,不过多媒体键盘上的音量控制那几个额外的按键怎么弄?为什么我弄了不行?

出0入0汤圆

发表于 2013-9-5 10:40:11 | 显示全部楼层
好东西啊

出0入0汤圆

发表于 2013-9-7 08:27:30 | 显示全部楼层
新鲜货,我看看

出0入0汤圆

发表于 2013-9-11 16:32:12 | 显示全部楼层
USB HID  KEYBOARD

出0入0汤圆

发表于 2013-9-11 16:42:33 | 显示全部楼层
很不错 收藏了

出0入0汤圆

发表于 2013-9-17 16:54:43 | 显示全部楼层
MARK HID   USB鼠标键盘协议

出0入0汤圆

发表于 2013-11-2 14:01:30 | 显示全部楼层
Mark,今晚回去试试

出0入0汤圆

发表于 2013-11-2 21:16:44 | 显示全部楼层
楼主辛苦了。要好好学习一下。

出0入0汤圆

发表于 2013-11-26 14:09:02 | 显示全部楼层
谢谢楼主,先收下了。

出0入8汤圆

发表于 2013-11-26 14:46:35 | 显示全部楼层
灰常有用  谢了

出0入0汤圆

发表于 2013-11-27 14:57:21 | 显示全部楼层
不错的资料,收藏

出0入0汤圆

发表于 2013-11-29 11:17:45 | 显示全部楼层
谢谢,正好在弄一个USB键盘,可以参考。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 12:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表