USBHID鼠标按键及数据传递格式

描述

最近业余时间了解了下HID键鼠设备协议相关的东西.主要想通过安卓手机连接HID设备完成点击和滑动动作.

起因是一些app屏蔽了无障碍和ADB方式的点击滑动, 但没有屏蔽蓝牙鼠标的按键动作. 所以想做一个HID的驱动搭配Autojs脚本来实现一些非常规操作...

就是这么个东西...然后连接到手机上为其供电...

但我是个小白, 对于HID这种底层的协议,没有丝毫的基础.通过不断的查资料,终于今天迈出了第一步...特此记录一下

ps: 百度真的是个垃圾搜索引擎,搜资料能用google还是用google吧,用百度简直就是浪费生命

我用的这个HID设备是别人特制的一个小模块,大概30块钱左右,有鼠标和键盘功能,这里我就不挂链接了. 所以发送数据与普通的HID设备不同,需要在末尾多加一个字节的数据.

00000001 ----> 代表调用键盘按键

00000010 ----> 代表调用鼠标按键

然后普通的HID鼠标发送的数据是 4 个字节 (1个字节即为: 1 Byte = 8 bit)所以 00 00 00 00到11 11 11 11之间的数占用1个字节(便于区分我加了空格)代表的10进制是 0 到 255

按照常规的计数规则, 左边的数字单位要比右边的数字单位大.

所以呢在用二进制的时候. 由于数字比较长, 划分的时候,我们习惯了从左往右的顺序分组, 这里会造成混淆, 所以需要明白 右边是头 左边是尾 最右边的是第一个字节

BYTE3     BYTE2    BYTE1     BYTE0
00000000  00000000  00000000  00000000

其数据划分和键位说明. 我画了一张图, 字写的很烂. 凑合着看看吧~

因为我买的这个设备是自制的.所以还有一个BYTE4 第五个字节数据是表明前四个字节要发给键盘还是鼠标的.

安卓设备屏幕处在坐标系的第四象限, X轴不变, Y轴向下为正. 所以Y轴的坐标正数是向下移动, 负数是向上移动.

这里需要说一下怎么表示2进制的负数:

验证一下是否正确, 找个windows计算器

所以我要是想让鼠标向右移动10像素需要发送的五个字节数据为:

02 00 00 0A 00 --> 鼠标向右移动10像素

02 00 00 F6 00 --> 鼠标向左移动10像素

02 00 00 0A 01 --> 按住鼠标向右移动10像素

02 00 00 00 00 --> 抬起所有按键

理论上Y轴的移动是修改第三个字节的数据. 但是我发现我这个小模块,我修改了第三字节的数据后. 不会生效...不知道为什么,剩下的再研究一下吧.

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分