跳转至内容
Xdea
创造精彩
XdeaXdea
  • 主页
  • 技术日志
  • 线下活动
Search:
Github page opens in new window
登录
  • 主页
  • 技术日志
  • 线下活动

双系统共享蓝牙配对实现鼠标无缝切换

您在这里:
  1. 首页
  2. 技术日志
  3. 双系统共享…

罗技的 Master 3 鼠标最多可以同时配对三个设备并使用鼠标底部的按钮进行切换,在此之前,我一直将它们分配给我的主机(Windows)、主机(Linux)和 Surface Pro 并在每次切换系统时手动使用按钮切换连接,然而在拿到了公司的 Macbook Pro 后,三个通道就变得不再够用,而频繁的配对连接更是让人无法接受。由于蓝牙配对使用设备 Mac 地址和对应的 Key 识别连接,我便寻思着通过共享设备的配对信息来统一双系统下的蓝牙配对,同时留出一个通道给新的设备。

在 Linux 下配对蓝牙鼠标

完成配对后,你应该可以在 /var/lib/bluetooth/主机蓝牙设备地址/鼠标蓝牙设备地址 下看到配对信息,在 info 中就存有配对验证使用的 IdentityResolvingKey 和 SlaveLongTermKey 。

➜  ~ sudo ls /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY
attributes  info

在 Windows 下配对鼠标并获取配对信息

进入 Windows,使用相同通道配对鼠标,其配对信息被保存在注册表的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\主机蓝牙设备地址\鼠标蓝牙设备地址 下。但是,由于权限问题我们无法通过传统方式访问这一地址(管理员也不行),需要使用 PsExec 以系统身份运行注册表才能查看。

PsExec64.exe -s -i regedit
注册表下的蓝牙配对信息

记录下其中的 Address(设备地址)、IRK(IdentityResolvingKey) 和 LTK(SlaveLongTermKey)。

将得到的配对信息应用到 Linux 下

回到 Linux 下,用上一步得到的 IRK 和 LTK 覆盖蓝牙配对信息中的对应值即可。需要注意的是,对于 Master 3,每次配对都将导致蓝牙设备地址自增,因此我们还需要重命名文件夹使蓝牙设备地址与 Windows 下获取到的地址相同,完成修改后,通常还需要重启主机使配置生效。

Category: 技术日志ctrysbita2021年2月1日评论

作者: ctrysbita

https://www.xdea.xyz

文章导航

历史的文章历史的文章:Flutter Native Channel 设计与实现未来的文章未来的文章:米家LED灯泡蓝牙MESH版拆解

Related posts

米家LED灯泡蓝牙MESH版拆解
2021年6月26日
Flutter Native Channel 设计与实现
2021年1月26日
Flutter Platform Channel 和 FFI 通道性能测试
2020年11月21日
解决 Ubuntu 安装 WPS 后无法启动的问题
2019年6月7日
为 Flutter 应用添加 Sentry 异常收集
2018年12月20日

发表回复 取消回复

你的电子邮件地址不会被公开 * 为必填字段

提交评论

近期文章
  • Xdea Privacy Policy
  • 米家LED灯泡蓝牙MESH版拆解
  • 双系统共享蓝牙配对实现鼠标无缝切换
  • Flutter Native Channel 设计与实现
  • Flutter Platform Channel 和 FFI 通道性能测试
近期评论
    Xdea
    © 2013-2021 Xdea Team. All Rights Reserved. | 闽ICP备18003472号