USB鼠标、键盘数据格式

news/2024/11/16 13:41:00/
鼠标发送给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),  
/*******************************************************************************************/
在注释中说明,这个字节是保留字节。

http://www.ppmy.cn/news/485094.html

相关文章

按键精灵调用迅雷下载文件

Set ThunderAgent CreateObject("ThunderAgent.Agent") 建立迅雷接口对象 ThunderAgent.AddTask "http://10.10.10.10/电影世界/12新电影/随风而逝.rmvb", "随风而逝.rmvb", "", "", "", - 1 , 0, - 1 …

最新大学计算机专业实习心得报告

最新大学计算机专业实习心得报告(篇1) 一、实习目的 通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,为顺利毕业进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。通过这次实习&#xff…

【产品运营】如何通过数据分析掌握用户行为?

对于运营来说,需要掌握用户行为来制定不同的运营策略。而用户行为是通过数据分析得出的,那么,具体的数据分析是哪些数据,不同的数据又有什么区别? 通过本文能够学到什么? 快速了解一款APP。行业趋势&#…

游戏盒子怎么玩

百度的SEO优化更加注重内部链接,什么是内部链接?就是你站内的元素要想通,让它进去可以畅通无阻,比如新闻文章页面关键词要跟其他栏目相通,做些互联,这个工作量有点大,可以技术解决。当然这种优化…

dgen模拟器 linux,game_box: GameBox 是一款游戏家用机模拟器,本项目基于Qt,可在windous\mac\linux等多平台使用。...

game box 概述 GameBox是一款游戏家用机模拟器,本项目基于Qt,可在windous\mac\linux等多平台使用。由于本项目基于多种开源代码开发而成,强烈提醒注意license说明。 平台支持 基于InfoNES实现NES游戏模拟器(基本完成,InfoNES的好处是性能开销…

防止小孩长时间沉迷电脑游戏-卓越电脑定时关机软件

防止小孩长时间沉迷电脑游戏--卓越电脑定时关机软件 可以限制小孩使用电脑的时间 1、可设置电脑定时关机,定时重启,定时注销,定时锁屏,定时睡眠,定时休眠,定时待机,定时提醒,定时关闭电脑显示器,定时打开任意程序,定时关闭任意程序等多种定…

方盒游戏

问题描述 POJ1390 方盒游戏 #include<cstring> #include<iostream> using namespace std; struct box_segment {int color;int len; }; struct box_segment segment[200]; int score[200][200][200];//score[i][j][k] 是在i-- j中所有的大块&#xff0c;k是最右边…

一文了解:计算机视觉领域下自监督学习方法原理

计算机视觉领域下自监督学习方法原理 导语为什么在计算机视觉领域中进行自我监督学习&#xff1f; 自监督学习方法Generative methodsBEiT 架构 Predictive methodsContrastive methodsBootstraping methodsSimply Extra Regularization methods 导语 自监督学习是一种机器学习…