多显示器环境下,向特定程序发送空格键并恢复焦点(Quark 网盘)
最近在使用夸克看教程,需要频繁地暂停并跟着视频做。当前夸克是不支持通过媒体按键控制播放和暂停的,只能使用空格控制,并只有获取到焦点时才能生效。
现在需要无需切换光标或窗口,就能对另一个屏幕上的程序发送控制命令(如播放/暂停)。
以 macOS 为例,使用 Hammerspoon 实现以下自动化流程:
- 聚焦某个程序(如 Quark 网盘)
- 向其发送空格键(控制播放/暂停)
- 然后自动恢复原程序焦点与鼠标位置
🛠️ 工具准备
- Hammerspoon:macOS 上强大的自动化与快捷键工具
官网:https://www.hammerspoon.org
💡 实现逻辑
- 使用快捷键(如
Option + 空格)触发脚本 - 记录当前前台应用与鼠标位置
- 激活目标程序(Quark 网盘)并发送空格键
- 智能判断鼠标是否移动,决定是否恢复位置
- 切回原程序
📜 脚本代码
将以下代码添加到你的 ~/.hammerspoon/init.lua 中:
1 |
|
更新版本
1 | -- 监听系统的播放键(Play/Pause) |
最终版?
1 | local log = hs.logger.new("🔊 播放键", "info") |
最最终版
加上多窗口的处理
1 | local log = hs.logger.new("🔊 播放键", "info") |
✅ 使用说明
- 启动 Quark 网盘并加载播放界面
- 回到其他应用继续工作(如浏览器、VS Code)
- 按下
Option + 空格
- 自动切换至 Quark
- 空格键触发播放/暂停
- 稍后自动回到原应用
- 如果鼠标没动,还原到原本的鼠标位置
🔧 技术细节优化
- 使用
hs.eventtap.event.newKeyEvent(),更底层模拟空格键,更兼容 Electron 应用(如 Quark 网盘) app:activate(true)+win:focus()保证窗口成为第一响应者- 鼠标恢复前做位置差判断,避免“跳回”造成干扰
🧾 总结
通过 Hammerspoon 脚本,可以在 macOS 上无感控制任意 App。即使是在多屏使用场景,也能做到。
不打断当前任务,一键遥控另一个程序行为。
自动化提升的不只是效率,更是专注力。
