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 S2 Scan Code 对照表.pdfourdev_651088NZ5EKW.pdf(文件大小:133K) (原文件名:USB HID to S2 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 rotocol 1 (Keyboard) 的报告描述符中也有这样的说明(HID1.11协议的59页)  
/*******************************************************************************************/  
   Report Count (1),    
   Report Size (8),   
   Input (Constant),              ;Reserved byte   
   Report Count (5),    
   Report Size (1),   
/*******************************************************************************************/  
在注释中说明,这个字节是保留字节
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值