跳到主要内容

快捷键

主快捷键​

Alt + Shift + V

在任意应用窗口中按下,应用会:

  1. 取当前激活分组的队首项
  2. 写入剪贴板(文件走多格式投放,图片额外加位图数据)
  3. 检测前台 IM 类型,按需释放修饰键
  4. 发送 Ctrl+V
  5. 等待输入框接收内容
  6. 发送 Enter

每次触发后右下角 toast 显示剩余数量,发完提示「队列已清空」。

备用快捷键​

Shift + T

注意

任何输入大写 T 的场景都会触发,包括正常打字。仅建议在确认不会误触时启用。

为什么不需要先点应用窗口​

使用 Windows 低级键盘钩子(WH_KEYBOARD_LL)实现,而非 RegisterHotKey:

方案问题
RegisterHotKey微信等应用用自身键盘钩子抢先拦截,全局热键收不到
低级键盘钩子系统级分发,先于应用钩子收到按键

钩子回调里只做按键检测和信号通知,立即返回。所有耗时操作(剪贴板写入、SendInput、睡眠)都在独立工作线程完成。

这是必要的:Windows 对低级钩子回调有约 300ms 超时(LowLevelHooksTimeout),在回调内睡眠或做 IO 会导致钩子被系统静默移除 —— 表现为「第一次有效,之后再按没反应」。

为什么必须先释放修饰键​

你按 Alt+Shift+V 时,Alt 和 Shift 仍物理按住。钩子吞掉了 V,但修饰键状态还在。此时若直接发送 Ctrl+V,IM 收到的实际组合是:

Ctrl + Alt + Shift + V

这不是粘贴命令。所以发送前会显式补发 Alt/Shift 的 keyup 事件清除状态。

为什么 Enter 要等一等​

文字粘贴是瞬时的,但文件附件不是 —— IM 需要读磁盘、算哈希、生成预览卡片。若 Enter 早于附件就绪发出,等于对空输入框按回车,文件随后出现但永远不会被发送。

因此文件使用独立的更长等待区间(默认 400–900ms,可调)。

诊断​

curl http://localhost:8722/api/v1/status

关注三个字段:

字段含义
hotkey_installed钩子是否安装成功,必须为 true
hotkey_last_trigger最近触发时间戳,按了会更新
hotkey_last_result最近发送结果或具体错误

无需管理员权限​

  • 应用本身以普通用户权限运行
  • 开机自启动写 HKCU(当前用户)注册表,不需要提权
  • 低级键盘钩子不需要提权(除非目标 IM 以管理员身份运行,受 UIPI 限制)