从 GitHub Releases 下载最新的 Windows 安装包:
下载 VoiceDock 0.2.0(Windows x64)
当前安装包尚未购买代码签名证书。如果 Windows SmartScreen 显示提醒,请确认下载来源为本仓库,并核对 SHA-256:
9E0690C0FD3AF404CDA46949D209E529A66B4F990ACDA90B9868A57DD29163E8
猫咪踩过键盘、孩子误触 Enter,或者手边物品压到 Space,都可能把尚未完成的消息直接发送出去。VoiceDock 把“输入控制”和“键盘安全状态”放在一个始终可见的悬浮窗中:
- 高频操作交给屏幕虚拟按键。
- 开启 Pet Lock 后,物理键盘输入立即暂停。
- VoiceDock 自己发送的虚拟按键仍然可用。
- 主窗口和系统托盘持续显示当前锁定状态。
| 功能 | 默认映射 | 说明 |
|---|---|---|
| 语音输入 | Right Alt |
触发目标应用的语音输入快捷键 |
| 发送 | Enter |
发送或确认 |
| 删除 | Backspace |
删除前一个字符 |
| 撤销 | Ctrl+Z |
撤销最近操作 |
| 复制 | Ctrl+C |
复制选中内容 |
| 粘贴 | Ctrl+V |
粘贴剪贴板内容 |
| 宠物锁 | — | 锁定或恢复物理键盘 |
此外还包括:
- 简体中文 / English 双语界面,主窗、确认弹窗、设置与托盘同步切换。
- 整个非交互界面均可拖动;按钮、滑块和下拉框保持正常操作。
- 开机启动、默认锁定状态、空闲自动锁定、透明度与按键映射设置。
- 系统托盘状态、锁定切换、打开设置与退出入口。
- 设置本地持久化,不需要账号。
| 输入来源 | 未锁定 | 已锁定 |
|---|---|---|
| 物理键盘 | 正常输入 | 被拦截 |
| VoiceDock 虚拟按键 | 正常工作 | 正常工作 |
| 鼠标 | 正常工作 | 正常工作 |
| Raw Input 类全局热键(如千问语音输入) | 生效 | 仍然生效,无法拦截 |
flowchart LR
A[物理键盘事件] --> B[WH_KEYBOARD_LL Hook]
B --> C{来自 SendInput?}
C -- 是 --> D[放行]
C -- 否 --> E{Pet Lock 已开启?}
E -- 是 --> F[拦截]
E -- 否 --> D
G[VoiceDock 虚拟按键] --> H[SendInput]
H --> B
虚拟按键通过 Windows SendInput 注入,并带有 LLKHF_INJECTED 标记。低级键盘钩子只在 Pet Lock 开启时拦截物理输入,因此锁定期间仍可使用 VoiceDock 控制目标应用。
上述拦截机制只覆盖走 Windows 消息队列的按键。有些应用绕过消息队列,直接从 HID 设备层读取原始输入(Raw Input)。这类全局热键宠物锁无法拦截,VoiceDock 的虚拟按键也无法触发——因为 SendInput 注入的按键不经过 HID 设备栈,产生不了 Raw Input。
典型例子是千问输入法的语音输入热键(默认右 Alt):
- 宠物锁开启时,按物理右 Alt 仍会触发千问录音(拦不住);
- 点击 VoiceDock 的"语音输入"虚拟按键也无法唤起千问(触发不了)。
如果需要在锁定状态下使用语音输入,可以把语音按键映射到走标准消息通道的方案,例如 Typeless 或 Win+H(Windows 11 自带语音录入),二者的拦截与触发均正常。
- 所有设置和按键处理均在本机完成。
- 不需要登录,不包含遥测、广告或云端数据上传。
- Pet Lock 只在 VoiceDock 进程运行期间生效。
- 从托盘退出或结束进程后,Windows 会移除键盘钩子,物理键盘恢复正常。
- 开启 Pet Lock 前会显示确认弹窗,避免误锁。
VoiceDock 会使用 Windows 全局低级键盘钩子,这是 Pet Lock 的必要实现。源码位于
src-tauri/src/keyboard.rs,可直接审阅。
环境要求:Windows 10/11 x64、Node.js 20.19+、Rust stable、WebView2。
npm install
npm run tauri dev验证并生成 NSIS 安装包:
npm run check
npm run tauri build主要技术栈:
- Tauri 2 + Rust:原生窗口、系统托盘、设置持久化和键盘钩子。
- React + TypeScript:界面与状态交互。
- Windows API:
WH_KEYBOARD_LL、SendInput和空闲状态检测。
VoiceDock/
├─ src/ React 界面与中英文案
├─ src-tauri/src/ Rust 原生逻辑
│ ├─ keyboard.rs 键盘 Hook 与 SendInput
│ ├─ settings.rs 设置模型与持久化
│ └─ lib.rs Tauri 命令、托盘与窗口状态
├─ docs/images/ 产品截图
└─ README.md 产品与开发说明
VoiceDock is a floating Windows input controller designed for homes with pets. It provides virtual buttons for common keyboard actions and a Pet Lock mode that temporarily blocks physical keyboard input while keeping VoiceDock's injected controls available. The app supports Simplified Chinese and English, runs locally without an account or telemetry, and exposes its current keyboard state in both the floating window and system tray.
Copyright © 2026 antsally9-dev. No open-source license is currently granted.


