这次的结论有点反直觉:不是我们没找到 BetterTouchTool 的正确开关,而是调到最后发现,某些“手感”问题很可能不是靠继续调参数能解决的。
背景是一个特别日常、但高频到足以影响整天体验的动作:三指轻点绑定 Command+W 关闭窗口/标签页。我很久以前用过 Jitouch,它的三指轻点非常宽容:三个手指不需要姿势很标准,手掌略微旋转也能触发;One-Fix Left-Tap / One-Fix Right-Tap 这种一个手指固定、另一侧轻敲的手势也很自然。换到 BetterTouchTool 以后,理论上同样能配置三指轻点,但实际触发总是“不灵”,尤其是系统里还要开 macOS 的三指拖移时。
这次我们一路查下来,最后基本放弃继续调 BTT 的三指轻点了。不是因为 BTT 不强,而是因为它和 Jitouch 在这件事上的底层目标很不一样。
我们实际排查了什么
先看本机状态:
- macOS 的
TrackpadThreeFingerDrag = 1,也就是三指拖移开启。 - BTT 的
BTTThreeFingerDragCompatibilityMode = 1,也就是三指拖移兼容模式也已经开启。 - BTT 里三指轻点 trigger 仍然存在,类型是
104,动作是Command+W。 - 权限和事件注入不是主因,因为 BTT 能触发,只是大量轻点没有被稳定识别成目标手势。
我们做过几轮实测:用户连续做二十次左右的三指轻点,通常只有少数几次成功,而且经常是最开始几次成功,后面明显掉下来。这个现象不像“快捷键发送失败”,更像前面的手势分类没有稳定通过。
中间还发现了一个旁支问题:BTT 右键画线手势里,旧的禁用预设残留会和新中文手势竞争识别,例如旧的 dr 会抢走新的 右下。我们后来备份后删掉了禁用预设 1 里的 54 个 drawing 残留,Chrome 里只保留现役的 左上 / 右上 / 左下 / 右下。这让鼠标画线手势清爽了很多,但三指轻点的问题依旧存在,说明三指轻点不是单纯的旧配置污染。
为什么 Jitouch 会显得特别灵
这也是这次最有意思的部分。
我们之前已经把 Jitouch 整理成了一个 Apple Silicon 友好的版本:jitouch-arm64:把那个特别灵敏的 Jitouch 迁到 Apple Silicon。在源码和构建产物里能看到,它不是把所有输入都抽象成通用 trigger,而是围绕触控板做了非常窄的识别器:
- 工程直接链接 Apple 私有的
MultitouchSupport.framework。 - 源码里有
MTDeviceCreateDefault、MTRegisterContactFrameCallback、MTDeviceStart这一类低层触控帧接口。 - 手势列表里,
Three-Finger Tap、One-Fix Left-Tap、One-Fix Right-Tap都是一等公民,不是用其他通用触发器近似出来的。 - Jitouch 的优势不是功能多,而是对“手指怎么落下、怎么抬起、怎么略微偏斜”这类细小状态更宽容。
所以这次体验差异大概不是玄学。BTT 是一个非常强的 macOS 自动化平台,目标是覆盖触控板、鼠标、键盘、窗口、脚本、菜单、剪贴板等大量场景;Jitouch 更像一个专门吃原始触控帧、用短状态机判断手势的窄工具。窄,反而让它在三指轻点这种微交互上很准。
这次的反思
我一开始的直觉是“BTT 一定能调好”。因为 BTT 功能太全了,配置项又多,很容易让人以为任何输入问题都只是某个参数没找到。但这次排查下来,我觉得这个想法不完全对。
通用自动化工具的优势是“动作编排”和“系统集成”,不一定是“最底层、最宽容的触摸识别”。一个老工具能在 2026 年仍然让人觉得顺手,往往不是因为它功能更多,而是因为它把一个很小的交互做到了足够细。三指轻点这种动作,用户感受到的是 100 毫秒级别的“我刚刚明明点了”,而不是软件理论上支不支持这个 trigger。
还有一个教训是:不要把所有问题都归因到配置。我们确实清掉了 BTT 里的旧 drawing 残留,也打开了三指拖移兼容模式,但三指轻点仍然不如 Jitouch。到这一步,继续追 BTT 参数的收益就很低了。失败本身反而帮我们确认了工具边界。
给 BTT 的建议
如果把这件事反馈给 BetterTouchTool,我会提几个比较具体的建议:
- 当 macOS 三指拖移开启时,在三指轻点相关 trigger 上给出更明确的提示:这个系统手势可能会影响识别稳定性。
- 提供一个更可解释的 gesture debug 面板:不只显示成功触发,也显示“这次三指接触为什么被拒绝/被判成别的候选”。
- 给三指轻点增加更宽容的 raw-contact/tolerant recognizer 模式,让用户可以牺牲一点误触风险,换更高触发率。
- 把
One-Fix Left-Tap/One-Fix Right-Tap这种手势做成一等公民,而不是让用户用组合条件去近似。 - 对 drawing 手势增加“识别候选审计/清理”工具,避免旧预设、禁用预设或历史残留继续影响新手势的判断。
我不觉得这是“BTT 做得差”。恰好相反,BTT 的问题是它太全了。越是大而全的工具,越需要在某些高频微交互上给用户更多透明度和更低层的选择。
后续计划
现在我的取舍会变成这样:
- BTT 继续负责复杂自动化、动作编排、应用条件、脚本、窗口和一些鼠标手势。
- Jitouch 或我们自己的轻量 helper 负责三指轻点、One-Fix 这类必须极灵敏的触控板手势。
- 如果继续二次开发,就尽量保持克制:只做少数高频手势、低 CPU、低内存、少配置、可黑名单应用、把动作输出成快捷键或交给 BTT/Raycast 接管。
也就是说,不再强行让 BTT 做所有事情。对这种“轻轻一点就必须马上发生”的交互,专门的低层识别器可能才是正确答案。
这次有趣的地方就在这里:我们不是调出一个完美参数,而是通过一次调不出来,确认了一个更重要的边界。
更新:已经把这次调查整理成英文反馈发到 BetterTouchTool 社区,主要集中在三指拖移开启时三指轻点识别不稳定、gesture debug 可解释性、One-Fix 手势一等公民支持、以及 drawing 手势候选审计这些建议上: