最近业余时间了解了下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轴的移动是修改第三个字节的数据. 但是我发现我这个小模块,我修改了第三字节的数据后. 不会生效...不知道为什么,剩下的再研究一下吧.
发布评论请先 登录
相关推荐
评论