拍打 MacBook 笔记本时自动模拟按键或输入文字。
利用 Apple Silicon 加速计检测敲击/拍打,通过 CoreGraphics 模拟键盘事件。
- Apple Silicon Mac(M1+)
- sudo 权限(加速计需要 IOKit 直接访问)
- 辅助功能权限:系统设置 > 隐私与安全性 > 辅助功能 > 允许终端
- source-file
- go.mod: Go 模块定义
- go.sum: 依赖校验
- main.go: 主程序
- input_darwin.go: macOS 底层输入模拟
- README.MD: 此文档
| 命令 | 说明 |
|---|---|
sudo spank |
默认模式,拍一下按回车 |
sudo spank --help |
查看帮助 |
指定按下的按键。
sudo spank --key space # 按空格
sudo spank --key escape # 按 Esc
sudo spank --key enter # 按回车(默认)
sudo spank --key a # 按 A
sudo spank --key tab # 按 Tab
sudo spank --key backspace # 按退格
sudo spank --key up # 按上方向键
sudo spank --key down # 按下方向键
sudo spank --key left # 按左方向键
sudo spank --key right # 按右方向键
sudo spank --key 0-9 # 按数字键模拟鼠标点击。
sudo spank --mouse 0 # 拍一下鼠标左键
sudo spank --mouse 1 # 拍一下鼠标右键拍打时执行终端命令。同时支持 s= 分段语法,每次拍打切换执行不同命令。
sudo spank -c 'open ~/.zshrc' # 拍一下打开 .zshrc
sudo spank -c 's=| open ~/.zshrc|quit TextEdit' # 拍打循环:打开→退出注意:命令以原用户身份执行,会加载 ~/.zshrc,自定义 alias/函数可用。命令本身的输出不会显示。
| 值 | 说明 |
|---|---|
high |
敲桌子、碰一下都触发 |
mid |
适合大多数场景(默认) |
low |
得使劲敲才触发 |
sudo spank -v high # 高灵敏度
sudo spank -v low --mouse 0 # 低灵敏度 + 鼠标左键--word 模式改变 --key 的行为:
- 单个字符 → 直接模拟按键
- 多个字符 → 复制到剪贴板 + 模拟
Cmd+V粘贴输入 - 分段输出 → 用
s=前缀指定分隔符,每次拍打输出下一段,循环往复
sudo spank --word --key hello # 拍一下输入 hello
sudo spank --word --key "你好世界" # 拍一下输入 你好世界
sudo spank --word --key a # 拍一下输入 a(单个字符=按键)
sudo spank --word --key 's=."Hi.I'm.Claude.' # 分段输出 Hi → I'm → Claude| 序列 | 效果 |
|---|---|
\n |
换行 |
\t |
制表符 |
\\ |
反斜杠本身 |
sudo spank --word --key "line1\nline2" # 拍一下输入两行
sudo spank --word --key "a\tb\tc" # 拍一下输入制表符分隔用 r"..." 包裹则不解析转义,按原样输入。
sudo spank --word --key 'r"hello\n"' # 按原样输入 hello\n(不换行)# 摸鱼快捷键:拍一下发消息
sudo spank -v high --word --key "/whisper\n"
# 高频场景:拍一下粘贴常用命令
sudo spank --word --key "sudo systemctl restart nginx\n"
# 拍一下输入邮箱
sudo spank --word --key "example@gmail.com"
# 拍一下带格式输入
sudo spank --word --key "姓名:\t张三\n年龄:\t25\n"
# 低灵敏度 + 方向键翻页
sudo spank -v low --key space
# 拍一下按 Tab 切换焦点
sudo spank --key tab# 聊天常用语循环
sudo spank -w --key 's=."好的 ."收到 ."马上来 .'
# 逐行输入命令
sudo spank -w --key 's=,git add .\n,git commit -m "update"\n,git push\n'
# 电话话术分段
sudo spank -w --key 's=|您好,请问有什么可以帮您?|感谢您的来电,再见!|'
# 分步操作引导
sudo spank -w --key 's=.第一步:打开设置.第二步:点击账号.第三步:退出登录.'# 高灵敏度 + 换行文本
sudo spank -v high --word --key "docker ps\n"
# 低灵敏度 + 分段输出(使劲敲才切换下一段)
sudo spank -v low -w --key 's=.nextpage.'
# 鼠标左键 + 低灵敏度
sudo spank -v low --mouse 0# 快速回复常用消息
sudo spank -w --k 's=,好的马上到!,收到,谢谢!,稍后回复你,,'
# 输入代码片段
sudo spank -w --k 's=.import os.\nimport sys.\nimport json'
# 粘贴 API 密钥
sudo spank --word --k "sk-xxxxxxxxxxxxxxxx"
# 多行地址录入
sudo spank --word --k "广东省深圳市\n南山区\n科技园南路\n"
# 配合转义的复杂文本
sudo spank -w --k "# 标题\n\n这是**粗体**文本\n- 列表项1\n- 列表项2\n"
# 逐条发送消息
sudo spank -w --k 's=|你好!|在吗?|有个事想请教一下|算了没事了|'cd source-file
GOFLAGS=-mod=mod go build -o ../spank -ldflags="-s -w" .- 通过 IOKit 直接读取
AppleSPUHIDDevice加速计(taigrr/apple-silicon-accelerometer库) - 使用 CoreGraphics CGEvent 模拟键盘/鼠标事件
- 粘贴模式:
pbcopy+Cmd+V(支持中文等任意 Unicode 字符) - 零外部依赖,编译后单文件二进制
Changes were made based on the Spank project.