键盘不够用,手指按不过来,程序员盯上了舞台吉他手的脚踏板。开发者 fretlessjazz 在 Hacker News 上展示了一个名为 fcbnerd 的开源项目,允许用户将 20 年前的百灵达 Behringer FCB1010 或任意 CoreMIDI 设备,变成 macOS 的系统级自动化控制器。踩一脚踏板执行一段 Shell 脚本,或者直接吐出一行格式整齐的 JSON,不需要给软件申请任何辅助功能(Accessibility)权限。
许多人初看以为这只是一个写给吉他爱好者的冷门外设驱动,实际上它是在 macOS 日益严苛的安全围墙下,摸出来的一条极其聪明的旁路。
避开沙盒权限的偏门解法
在 macOS 上做系统级自动化,最大的痛点不是编写逻辑,而是应付权限系统。苹果的沙盒机制逐年收紧,任何试图模拟键盘按键、操控前台窗口的应用,都必须索取辅助功能权限。诸如商业工具 Bome MIDI Translator Pro 针对 Intel 和 Apple Silicon 做了全架构适配,但一旦要转译为击键,依旧要迈过这道坎,论坛里至今常见特定系统更新后的兼容崩溃报告;Keyboard Maestro 界面强大,同样受制于 macOS 的桌面权限环境。
fcbnerd 的解法体现了纯粹的 UNIX 管道哲学。它采用 Swift 语言开发,依赖 macOS 13+ 与 Swift 5.9+ 构建运行,支持通过专用的 Homebrew tap(jamesryanatx/tap)直接安装,或者用 Swift Package Manager 自行编译。
关键差异在于输入与执行的解耦:
- 读取端.CoreMIDI 是专为音乐硬件设计的系统底层框架,macOS 对其读取完全不设沙盒拦截,无需弹出任何授权弹窗。
- 输出端.作为在终端直接由用户运行的 CLI 工具,它不需要模拟虚拟按键,而是直接将踏板信号派发给 Shell。
踏板踩下去,它要么通过 /bin/sh -c 触发一个绑定的脚本,要么在标准输出打印一行 NDJSON(每行一个 JSON 对象),把后续的逻辑分发交给 Hammerspoon 的 Lua 脚本或 jq 管道去处理。
规避安全壁垒最好的办法,就是根本不去触碰壁垒要防守的敏感接口。
高频踏板与进程雪崩
把 MIDI 映射给 Shell 听起来直接,但在真实的工程场景下,有一个极易被忽视的隐患:进程雪崩。
普通的踩踏开关(Switch)只发送瞬态的点按信号,但 Behringer FCB1010 还附带了 2 个连续的表情踏板(Expression Pedal)。当你用脚掌连续踩动表情踏板去调整屏幕亮度或输出音量时,硬件会在一秒钟之内产生几十次 CC(Control Change)数值。如果工具机械地针对每一个匹配事件都去派生(fork)一个 Shell 进程,macOS 会在瞬间累积上百个并发进程,导致系统严重卡顿。
fcbnerd 对此设计了一个折流机制:
- 对于含有通配符的表情踏板绑定,同一控制器同一时刻只允许运行一个进程实例。
- 当上一个脚本尚未退出、后续大量新 CC 值涌入时,工具不会队列堆叠,而是自动丢弃中间态,只保留最新到达的数值。
- 前序命令一跑完,立即用最新值启动下一次调用。
这一设计避免了高频调校时的 Shell 爆炸,还能确保踏板最终停留在物理脚位对应的数值上。但需要看清的是,该工具目前并不包含状态机管理。因为 FCB1010 在物理上松开踏板时不发送任何松手信号,如果开发者想要实现踩一下开启、再踩一下关闭的逻辑,必须由调用的下游脚本自己在 /tmp 目录写标志位,或者转交状态管理更完备的脚本框架。
硬件代差与极客现实
尽管 fcbnerd 展现了高超的软件设计取舍,但要把它真正搬进日常办公桌,硬件本身的分量需要理性评估。
| 评估维度 | Behringer FCB1010 (2000 年代经典) | 现代方案 (Nektar Pacer / Morningstar MC6 Pro) |
|---|---|---|
| 接口形态 | 仅 5-pin DIN 传统圆口 (需外接转换器) | 原生 USB-C / Class-Compliant 免驱直连 |
| 踏板规格 | 10 踩踏开关 + 2 集成表情踏板 | 6-10 踏板,外接表情扩展接口 |
| 交互反馈 | 纯数码管,机载按键编程晦涩 | 彩色液晶屏或 RGB LED 状态指示灯 |
| 适用场景 | 音乐人闲置设备复用、固定脚底重型宏控制 | 桌面通用办公自动化、现代演出流 |
Behringer FCB1010 是一块全金属外壳、重达数公斤的舞台老炮。它通体没有一个 USB 端口,必须额外插上一根诸如 Roland UM-ONE 之类的 5-pin 转 USB MIDI 线才能接入现代 Mac。加之它出厂自带的预设经常让同一开关在不同银行里发出不同的 CC 编码,表情踏板未校准时甚至会产生从极小突跳到极大的问题,这注定不是一套开箱即用的办公外设。
相比之下,现代的脚踏设备如提供 10 踏板且带 RGB 灯光的 Nektar Pacer,或是带有全彩屏与 USB-C 的 Morningstar MC6 Pro,在人体工学和视觉反馈上都要先进得多。
- 建议.手头若恰好有一块吃灰的 FCB1010,配合 fcbnerd 是性价比极高且有趣的极客玩具,能把闲置硬件榨出生产力。
- 风险.若为了办公自动化特意去二手市场淘这台重型老家伙,复杂的接线与晦涩的硬件调试,可能会迅速耗尽你的耐心。
归根结底,fcbnerd 最有价值的部分,并非它为一款老旧脚踏板延长了寿命,而是为 macOS 上的自动化探索撕开了一个裂口:原来那条几十年前为电子琴设计的、没有权限弹窗干扰的 CoreMIDI 通道,至今仍是一片清净之地。
