罗技 无线鼠标 USB HID数据格式

最近在使用 pyusb 进行 鼠标原始数据的读取,使用的是树莓派linux环境,将踩过的“坑”记录下来:

  1. 一般需要使用 sudo 运行程序,否则linux系统会报“权限不够”;

  2. 对于同时支持无线鼠标、键盘的无线接收器设备,一定要找对接口。一般会有3个接口,但只有一个接口可以被正常读取;

  3. 无线接收器返回的数据,不像网上说的什么,鼠标返回 4字节,键盘返回8字节,罗技的 unifying 无线接收器,能正常读取数据那接口,最多返回32字节,一般返回15字节数据;

  4. 关于返回的数据,经逆向破解,基本为:
    字节0 32(十进制,以下皆用10进制表示),为鼠标或键盘数据
    字节1 鼠标数据为2,键盘数据为1
    字节2 和字节1相同
    字节3 鼠标数据中,为按键信息,bit0-2依次为:左键、右键、中键,按下为1
    字节4 我测试时总是为0,可能为某种ID值
    字节5-7 鼠标数据中,存X\Y方向上移动数据,比较复杂,等下说
    字节8 鼠标数据中,滚轮数据,补码表示滚动值和方向
    其它字节 总是为0,不关心了

    对于字节5-7 的意义:
    字节6的低4位bits + 字节5,构成12bits的X移动数据,补码表示
    字节7 +字节6的高4bits,构成12bits的Y移动数据,补码表示
    似乎是高4bits为符号位,但可以统一这样解码:
    如果最高bit0, 其值直接为正向移动值;
    如果最高bit
    1,则12bits数据按位取反,然后+1,得到移动值,但表示为负向移动值;

  5. 有线鼠标的数据,和网上常见的数据格式一样,返回4字节,自行去网上找吧;

  6. 如果 pyusb 总是读不出值来,尤其是在window环境,大概率是没有安装好libusb,注:win下一般使用的是 hidusb 类型驱动,不是libusb,但我更换成libusb后,虽能读取到数据了,但鼠标不动了。当然,基于window的虚拟机linux环境中,应该先保证win下能正常读取鼠标数据,否则还是读不到的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值