Files

8.4 KiB
Raw Permalink Blame History

更新日志

v1.1.0

这一版几乎全是**"用得久一点才会遇到"的问题**:重启后失灵、进程莫名消失、按键没反应却 查不出原因、蓝牙被禁用后设备全消失…… 逐个修掉,并且把"出事时该怎么看、怎么救"做进了程序。

新增

  • 自动解卡:日志连续几次出现「没扫到广播(多半被系统 HID 拿着连接)」时 —— 也就是 按键能用、只有语音键不行那种状态 —— 程序会自己用 Windows 的电台接口把蓝牙 关开一次(和「设置 → 蓝牙」那个开关同一机制,不需要管理员),并且每次都读回状态 确认确实开回来了;10 分钟最多一次,可用配置 "voice": {"auto_unstick": false} 关掉。
  • 开机自启看门狗:计划任务除了「登录时启动」,还带每 5 分钟自检 —— 进程万一崩溃/被强杀, 最多 5 分钟自己回来;已经在跑时新进程秒退(不弹窗、不刷日志)。
  • 两个自检按钮(设置 → 诊断):
    • 按键映射自检:宿主 PID、该宿主上「遥控器读」调用次数、报文长度分布、这台遥控器实际 发过哪些按键(含程序不认识的那些),外加一次注入能力测试(往普通进程注入一下, 立刻分清"杀软拦注入"和"我们自己的问题")。
    • 麦克风自检:读一秒系统默认输入设备并报峰值,同时说明 VB-CABLE 的 in/out 到底哪个是哪个。
  • "上次是不是正常退出"诊断:启动时若发现上次是异常结束(崩溃/被强杀)会在日志里写清楚; 被系统重启结束的则明确标为正常(不再吓人)。
  • Claude Code 预设:上/下/左/右=普通方向键、OK=Enter、返回=Backspace、主页=Esc、 静音=Enter、输入源=Shift+Tab、音量±=按住连续滚,三个"打字"键 = YouTube /clear、NETFLIX commit + push、电源 /exit(打完字自己按 OK 提交)。
  • 语音版离线包 vibe-mote-offline-voice-v1.zip(约 14MB,不含 frida):只要语音、 怕杀软或公司电脑选它;后续想加按键映射,联网点一下或把 frida 的 whl 丢进 wheels\ 即可。

修复

  • 重启后方向键失灵:蓝牙 HID 驱动宿主(WUDFHost)每次重启都会换进程,而钩子还挂在旧进程上 (界面照样显示"就绪",实际一个报文都收不到)。现在检测到宿主换了或没了就自动重挂。
  • 改遥控器地址要重启客户端才生效 → 现在保存即热更新并立刻按新地址重连。
  • 配置偶发读取失败就用默认值(Windows 共享冲突:一边写一边读)→ 现在重试 6 次, 真失败才退回默认值并写清楚(避免"我的设置莫名其妙变回默认了")。
  • "重置蓝牙电台"在部分 Intel 电台上会把蓝牙留在禁用状态(Windows 对那片电台报 Disable-PnpDevice : 不支持)→ 现在:先启用任何非正常状态的电台;本来就是禁用/异常时 启用成功就收手,绝不再"关开一次";"关开"首选 pnputil /restart-device(只重启,不存在 "禁用了没启用回来"的窗口);最后一定验证,没恢复就明确告诉你去设备管理器「启用设备」 或完全关机。
  • 蓝牙电台被禁用后会"设备全没了"(设置里连蓝牙开关都消失)→ 环境体检现在直接报出来并给救法。
  • 非原厂 VID/PID 的兼容款遥控器找不到 HID 宿主 → 现在会退一步认「任意 BLE HID 设备」; 设备身份(VID&xxxx_PID&xxxx)也写进日志,便于分辨原厂/兼容款。
  • 预设选错输入法 = 语音键永远不出字(千问只认 RALT)→ 启动时若发现"装了千问但注入的不是 RALT"会在日志里直接点名。
  • 杀软拦注入(公司电脑常见,日志反复 TransportError 而杀软界面没有任何记录)→ 现在日志给出 人话解释 + 缓解步骤(请 IT 给程序目录放行;放行前语音照常可用)。
  • 配对没配好(GATT Protocol Error: Insufficient Authentication)→ 日志直接给"删除设备 + 按住【返回 + 主页】重新配对"的步骤。
  • 音频出口日志不写设备名 → 现在写「写入「CABLE Input…」;输入法那边请选「CABLE Output…」」。
  • 开发副本会顶掉用户那份的开机启动(在开发目录里点了「一键优化」,任务就被改成指向开发目录) → 现在开发目录拒绝安装/改写自启任务。

文档

  • README / 说明 新增:支持的遥控器(原装 G9N9N、兼容款批次差异、"没有语音服务"怎么办)、 VB-CABLE 的 in/out 为什么看着是反的、"所有麦克风电平都是 0"怎么查、 "蓝牙设备全没了 / 设置里没有蓝牙开关"怎么救 等排障条目。

v1.0.0

把 Google TV / Chromecast 蓝牙遥控器变成 Windows 上的「按住说话 + 快捷键面板」。 纯用户态:不装驱动、不写系统目录、不弹黑框;语音不需要管理员,按键映射要一次提权 (Frida 注入蓝牙 HID 驱动宿主,点一次「一键优化」后不再弹)。限制与风险见 README 第五节第 5 小节。

功能

  • 按住遥控器语音键说话 → 遥控器麦克风 → 虚拟声卡(VB-CABLE)→ 输入法出字 (纯 Python 实现 IMA ADPCM 解码 + 重采样 + AGC,不需要 numpy)
  • 14 个按键可映射:上/下=鼠标滚轮(按住不放连续滚,轻点滚一格)、左/右=切换会话、 YouTube/NETFLIX=审批的「同意/拒绝」(Enter/Esc),其余在网页控制台里改。 映射类型有 单键 / 组合键 / 按住不放 / 按住组合键 / 鼠标 / 按住鼠标 / 文本; 「按键捕获」除了抓键盘键,滚一下滚轮或点一下鼠标键也能抓(并自动选好类型)
  • 预设方案:选「目标应用(WorkBuddy / Codex / Claude Code / 通用)+ 输入法(千问 / 搜狗 / 微信 / Windows 自带)」→ 一键配好整套键位
  • 首页「首次准备」清单:「运行依赖 / 虚拟声卡 / 千问注入 / 开机自启 / 一键优化」 五项的状态与按钮都在首页,每项标了必需还是可选,照着从上到下点一遍就能用
  • 缺虚拟声卡时顶部横幅会提示并给出「一键安装虚拟声卡」按钮; 首次启动会自动帮你把官方安装器拉起来(只自动试一次)。 官方安装器没有静默参数,所以那一下「Install Driver」和装完的重启省不掉
  • 网页控制台(127.0.0.1:8787,只监听本机):状态 · 按键映射(遥控器实物图)· 语音 · 设置 · 日志。单文件、零外部资源、完全离线可用
  • 装依赖自动轮询国内镜像(腾讯云 → 中科大 → 阿里云 → 华为云 → 官方),国内无 VPN 可用
  • 中英双语:右上角切换(首次按浏览器语言自动选,检测不出来用中文), 界面文案、后端主流程消息与全部文档都是双语的; 底层诊断流水(音频帧、ATVV、frida 挂载细节)保持中文
  • 启动失败有痕迹:日志落盘 client.log,启动器会确认程序是否真的起来, 起不来就弹提示并打开日志
  • 清理 / 卸载:逐项勾选、默认不勾;勾了却删不掉的项会如实回报。 另有「清除虚拟声卡残留(注册表 / 驱动包)」:装/卸卡住时,把官方卸载器不清的那几处 (两个服务键、HKLM\SOFTWARE\VB-Audio\Cable、「应用和功能」里那条、DriverStore 驱动包、 C:\Program Files\VB\CABLE)清掉 —— 同属 VB-Audio 的 Voicemeeter 的键和目录一律不碰。 彻底卸载=点一次「推荐清理」→ 删掉整个程序目录

两种分发包

包 大小 说明
vibe-mote-offline-v1.zip 约 61MB 自带 Python 运行时 + 预装依赖,没装 Python、没网也能用
vibe-mote-v1.zip 约 900KB 目标机器已装 Python 3.10+,首次运行联网装依赖

两个包都随包附带 VB-CABLE 的官方安装器 + 驱动文件(约 2.1MB)。 VB-CABLE 是 donationware(https://vb-cable.com/),本程序只原样带上官方文件、 不修改也不静默安装,细节见 THIRD-PARTY-NOTICES.md。

环境

Windows 10/11 x64 · Python 3.10 或更高 · 语音需要 VB-CABLE 虚拟声卡。