0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

汽车电子技术 来源:安卓脚本 作者: Mr.Yu 2023-03-03 13:45 次阅读

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

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

    评论

    相关推荐

    esp-idf传递鼠标数据延迟很大的原因?

    请假一下,用espidf通过wifi传递鼠标键盘时间,延迟很大,可能是哪地方的问题呢?采用select机制,鼠标数据通过uart回来,然后通过Wi-Fi
    发表于 06-14 06:19

    共享变量 数据传递

    labview生成安装程序(里面数据传递用共享变量) 在本电脑上可以传递数据,安装到其他电脑上无法传递数据,何解?
    发表于 07-08 13:57

    通过队列实现vi之间数据传递

    `各位高手,请教下如何用队列实现vi之间的数据传递,最好能给出个例子,我是初学者,谢谢`
    发表于 09-08 11:01

    单片机教程(9)数据传递类指令

    1.单片机数据传递类指令(1)以直接地址为目的操作数的指令(2)以间接地址为目的操作数的指令(3)十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数
    发表于 06-13 10:01

    如何利用ucos编程进行数据传递

    :int main (void){各种初始化while(1){ 触摸屏 LCD刷新 串口通信 } }就像这个小例子,触摸屏按键的操作和串口的数据要显示在LCD上。换做u/cos II的话,就是建立3个任务,然后之间再有一些数据传递
    发表于 04-04 06:36

    Vue中父组件与子组件之间的数据传递

    Vue中父组件(vue实例)与子组件(component)之间的数据传递
    发表于 06-01 17:28

    鸿蒙分布式任务调度——数据传递

    鸿蒙分布式任务调度之数据传递
    发表于 06-12 17:29

    蓝牙实现数据传递需要做些什么?

    实现数据传递需要做些什么?需要用到什么?怎么才能让数据传递到另一端?服务端客户端
    发表于 03-02 07:15

    espidf传递鼠标数据延迟很大是为什么呢?

    请假一下,用espidf通过wifi传递鼠标键盘时间,延迟很大,可能是哪地方的问题呢?采用select机制,鼠标数据通过uart回来,然后通过Wi-Fi
    发表于 03-06 08:09

    单片机教程九:单片机数据传递类指令

    单片机教程九:单片机数据传递类指令 单片机数据传递类指令 (3)以直接地址为目的操作数的指令 MOV direct,A 例: MOV 20H,A
    发表于 05-15 23:03 858次阅读
    单片机教程九:单片机<b class='flag-5'>数据传递</b>类指令

    鼠标按键

    鼠标按键数              按键数是指鼠标
    发表于 12-28 11:34 2687次阅读

    C#教程之屏蔽鼠标按键

    C#教程之屏蔽鼠标按键,很好的C#资料,快来学习吧。
    发表于 04-20 14:46 6次下载

    CY68013A进行数据传递FPGA进行格式转换的数据采集与仿真系统

    本文设计了一种专门用于底层协议栈开发的数据采集与仿真系统,利用USB高速传输特点以及物理连接的便利性,采用CY68013A进行数据传递,充分利用其GPIF资源,使用FPGA进行格式转换。文中对仿真
    的头像 发表于 08-30 10:44 7226次阅读
    CY68013A进行<b class='flag-5'>数据传递</b>FPGA进行<b class='flag-5'>格式</b>转换的<b class='flag-5'>数据</b>采集与仿真系统

    第9课:单片机数据传递类指令 2020/11/17

    第9课:单片机数据传递类指令 2020/11/17
    发表于 11-20 11:51 0次下载
    第9课:单片机<b class='flag-5'>数据传递</b>类指令 2020/11/17

    鼠标按键的“灵动”用法

    鼠标,能使电脑操作方便快捷 但是, 鼠标各键的用处 你知道多少呢? 01 按键一:滚轮 1、浏览器中滑动网页 当我们浏览网页的时候,滑动鼠标中间的滚轮,就可以实现上下浏览啦~ 且在浏览
    发表于 10-18 16:43 2976次阅读