Mac Mouse Fix 完全指南:把 $10 鼠标变成类触控板,从安装、配置到排障
【免费下载链接】mac-mouse-fixMac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix
Mac Mouse Fix 是一款 macOS 鼠标增强工具,核心能力是平滑滚动、触控板手势模拟与任意按键重映射。本文依据项目官方 Readme、Support/Guides官方排障文档与仓库源码(Shared/Constants.h、Helper/Core/Coordinate/SwitchMaster.swift)整理,目标是让你完成四件事:装上跑通 → 配出常用效果 → 看懂核心机制 → 报错时能自行排障。
它是什么:一个双进程架构的鼠标驱动
一句话定位:Mac Mouse Fix 的目标是把普通鼠标变成"比 Apple 触控板更好用的 Mac 输入设备",Readme 里作者的原话是把它做成the best mouse driver of all time。
这个目标靠两个进程协作实现,这也是后续所有排障知识的前提:
| 进程 | 位置 | 职责 |
|---|---|---|
| 主应用(App) | App/ | 配置界面(Buttons / Scrolling / General 标签页)、授权引导 |
| 后台 Helper | Helper/ | 真正拦截并改写鼠标/滚轮事件,核心逻辑在 Helper/Core/ 的 Buttons、Scroll、Drag 等模块 |
一个关键细节:关闭主应用后功能依然生效,因为实际干活的是 Helper 进程(以 Login Item 形式常驻,见 Shared/Constants.h 中的kMFRelativeHelperAppPath)。这解释了为什么"启动电脑后 MMF 窗口自动弹出"往往只是因为你把它设成了登录项,而它其实根本不需要。
可操作建议:排查问题时先确认"是主应用没开,还是 Helper 没启用",两者互不依赖。
从零跑起来:安装、授权与兼容性一步到位
安装,二选一:
- 官网下载最新版(macmousefix.com,需自备网络访问);
- Homebrew 一行命令:
brew install mac-mouse-fix如需历史版本,去项目 Releases 页面下载(老系统需要旧版)。
授权:首次启动后按引导打开"系统设置 > 隐私与安全性 > 辅助功能",勾选 Mac Mouse Fix。源码依据:App/UI/Accessibility/ 下的AuthorizeAccessibilityView就是这个引导视图。授权完成后打开General > Enable Mac Mouse Fix主开关,Helper 进程随之后台常驻——主窗口可以关掉,功能不受影响。
兼容性速查:
| 系统版本 | 推荐方案 |
|---|---|
| macOS 11 Big Sur 及以上 | Mac Mouse Fix 3.x(最新版),Apple Silicon100% 原生运行 |
| macOS 10.13~10.15(High Sierra / Mojave / Catalina) | Mac Mouse Fix 2 最新版;3.x 可能可用但有界面与功能问题 |
| macOS 10.11~10.12(Sierra / El Capitan) | Mac Mouse Fix 2.2.0 或更低 |
卸载:直接把 App 拖进废纸篓即可停止全部功能。但配置数据残留在系统偏好设置区域(运行配置由 Shared/Config/Config.m 管理),macOS 不允许应用自删这些文件,官方推荐用 AppCleaner 一类工具清理残留。
能干什么:能力总览
| 能力 | 解决什么问题 | 仓库依据 / 入口 |
|---|---|---|
| 按键重映射(Remaps) | 中键、侧键等"废物键"绑定任意动作 | Shared/Config/default_config.plist 的Remaps段 |
| 平滑滚动 | 滚轮一格一格的生硬滚动变成丝滑动画 | Helper/Core/Config/ScrollConfig.swift |
| 触控板手势模拟 | 双指/三指滑动、四指捏合缩放 | Helper/Core/Drag/TwoFingerSwipe/ |
| 系统快捷键触发 | Mission Control、Launchpad、切换桌面(variant 32/160/118 等) | Shared/Constants.h 的MFSymbolicHotkey枚举 |
| Apple 键盘特殊键 | 亮度、音量、媒体播放 | 同文件MFSystemDefinedEventType(systemDefined子类型事件) |
| 指针控制 | 加速度 / 灵敏度独立于系统调节 | default_config.plist的Pointer段 |
理解这些能力,先掌握三要素模型(源码依据:Constants.h中kMFRemapsKeyTrigger / kMFRemapsKeyModificationPrecondition / kMFRemapsKeyEffect三个字典键):
- 触发器:
click(单击)、hold(长按)、drag(点击拖动)、scroll(滚轮滚动),可带"点击层级 level"——同一按键第一次点击是 level 1,快速第二次是 level 2(双击); - 前置条件:可叠加键盘修饰键(⌘⌥⌃⇧)或"按住鼠标其他按键";
- 动作:
symbolicHotkey、keyboardShortcut、systemDefinedEvent、mouseButton(模拟真实鼠标点击)、smartZoom、navigationSwipe及 modifiedDrag 手势。
高手玩法:三个真实场景
场景一:侧键拖动管理窗口(配 Swish)🪟
- 安装 Swish(触控板窗口吸附工具);
- 在 MMF 的
Buttons标签页,给任意侧键的Click and Drag动作选Scroll & Navigate; - 之后按住该键拖动,窗口即可吸附半屏/四分之一屏/全屏。
- 为什么有效:
Scroll & Navigate对应kMFModifiedDragTypeTwoFingerSwipe,它读取鼠标移动 delta,经 Helper/Core/Touch/ 下的TouchAnimator平滑后,由GestureScrollSimulator向系统发送 gesture scroll 事件——应用以为自己在接收真实的双指触控板滑动。触控板双指滑动能做的一切,它都能做。 - 边界:这是"模拟"而非真手势,低性能机器上可能略延迟(作者在源码注释中标注正在优化)。
场景二:鼠标直控亮度、音量与媒体播放
- 给任意按键绑定
keyboardShortcut类动作; - 按键选择器里**按住 Option(⌥)**切换到 Apple 键盘专属功能键;
- 绑定亮度/音量/播放键,从此不用伸手够键盘。
- 为什么有效:对应
systemDefinedEvent动作,源码在 Shared/Constants.h 第 260-273 行注明——这类事件走NSEvent的systemDefined子类型(subtype 8),信息编码在data1字段,效果等同于按下物理键。 - 边界:仅覆盖
ev_keymap.h已定义的系统键类型。
场景三:3D 软件中键环绕(Blender orbit)
- 步骤:中键的Click and Drag绑定Scroll & Navigate(原理同场景一)。
- 局限:该模拟事件 down/up 成对发出,适合"点击拖动"而非持续按压,重度使用下响应可能不如原生中键拖拽。
深潜核心机制:"捕捉(Capturing)"到底在做什么
这是 MMF 3 用户遇到问题时最该先懂的概念,官方为此单独写了指南 Support/Guides/CapturedButtonsMMF3.md。
原理:被捕捉的按键对 macOS 和其他应用完全不可见——MMF 必须把按键"藏起来",否则你按住按键 4 拖动切换桌面的同时,Chrome 会同时后退一页。拦截与否的总调度由 Helper/Core/Coordinate/SwitchMaster.swift 完成:它根据当前设备、remaps/scroll 配置、修饰键状态,动态开关键盘修饰键、滚轮、按键、移动四类事件 tap,目标是"未修改的输入 CPU 占用趋近于 0"。
机制速查表:
| 操作 | 做法 | 依据 |
|---|---|---|
| 判断哪些键被捕捉 | Buttons标签页左侧列出的按键即已捕捉 | 官方指南 |
| 解除捕捉 | 删掉该按键的全部条目 | 官方指南 |
| 保留捕捉但恢复旧功能 | 见下表 | 官方指南 |
| 按键 | 原有功能 | 在 MMF 中应绑定 |
|---|---|---|
| 中键 | 浏览器新标签开链接 / 终端粘贴 | Middle Click(绑定到单击) |
| 按键 4 / 5 | 应用内后退 / 前进 | Back/Forward(绑定到单击) |
| 中键 | Blender 环绕物体 | Scroll & Navigate(绑定到点击拖动) |
边界说明:Middle Click/Back/Forward这类模拟动作只支持"单击",因为 MMF 同时发送 down+up 事件,以避免与同按键上的其他手势互相干扰。
出问题怎么办:高频排障
以下每条按现象 → 原因 → 解法给出:
点击有明显延迟?原因:MMF 在等你完成可能的双击。解法:删掉该按键所有 Double Click 动作即可消除。源码佐证:Helper/Core/Buttons/RemapsAnalyzer.m 会先评估该按键"点击层级"上的动作分布,再决定事件立即透传还是等待。
侧键的前进/后退、中键粘贴失效了?原因:按键被捕捉(见上一节)。解法:按机制速查表绑定对应动作恢复功能,或删光该按键条目解除捕捉。
鼠标上部分按键识别不到?原因:该鼠标依赖厂商专有驱动协议(如 Logitech Options 系),不走标准 USB 协议。解法:目前无解,作者明确"工作量太大、短期内不会实现";换普通品牌鼠标最稳。
Magic Mouse 没效果?原因:MMF 目前对 Magic Mouse 无任何增强(未来可能支持)。解法:换第三方鼠标。
倾斜滚轮无法触发其他动作(如切换桌面)?原因:这需要重新编程鼠标固件,在倾斜时发送按键信号而非滚动信号,且必须走厂商私有协议,很多鼠标根本做不到。解法:接受现状——MMF 至少能让倾斜横滚更顺滑可控。
想关闭指针加速?原因:MMF 本身不提供该开关。解法:macOS 14 Sonoma 及以上可在
系统设置 > 鼠标 > 高级…中直接关闭系统指针加速。想在某个 App 里单独关掉平滑滚动?原因:MMF 3 尚无 App 专属设置(MMF 2 有
More… > App-specific settings)。解法:General标签页开启Show in Menu Bar,从菜单栏的 Scrolling 开关临时禁用——对应default_config.plist里的scrollKillSwitch键。点击拖动打开 App Exposé 没反应?原因:系统层面关闭了 App Exposé 触控板手势。解法:选
Spaces & Mission Control动作并向下拖动;仍无效则执行:
defaults write com.apple.Dock showAppExposeGestureEnabled -bool TRUE; killall Dock花钱、授权与隐私
- 定价:MMF 3 免费试用 30 天,之后付费买断;MMF 2 及更早版本永久免费。
- 许可证:一份许可证可用于你所有 Mac,同一 Apple Account 下还会经 iCloud 自动同步;覆盖所有 3.x 版本,未来 4.0 大版本可能需重新购买。不可公开分享(与家人共享可以)。
- 退款:无正式退款政策,但有 30 天免费试用兜底;购买后遇到问题联系作者即可。
- 开源与数据:商业化后依然开源,采用 License(MMF License,基于 MIT 改写,禁止恶意魔改与白嫖发布)。应用无广告、不收集个人信息;唯一例外是购买时刻销售平台 Gumroad 会收集邮箱等信息(发许可证与退款所需)。
参与项目
四条贡献途径,贡献者会记入 Acknowledgements.md:
- 反馈:通过 Feedback Assistant 提交 bug 与想法;
- 赞助:应用内购买,或 GitHub 月度赞助;
- 翻译:项目已支持中文在内的 20+ 语言(见 Markdown/LocalizedDocuments/),缺漏可去翻译指南下留言;
- 代码:欢迎 PR;不确定想法是否会被采纳时,可先提交一个"只描述方案、几乎不含代码"的初始 PR 征求反馈,避免白干。
需要本地读源码或 fork 贡献时:
git clone https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix附录:关键路径速览
Shared/Config/default_config.plist 是出厂配置的权威样例,configVersion当前为 24:
| 配置段 | 关键键 | 说明 |
|---|---|---|
Scroll | smooth(high)、speed(medium)、reverseDirection、trackpadSimulation、modifiers | 平滑度/速度/反向/触控板模拟/修饰键位掩码 |
General | showMenuBarItem、buttonKillSwitch、scrollKillSwitch | 菜单栏与两个"总开关" |
Pointer | acceleration(0.6875)、sensitivity、useSystemAcceleration | 指针控制 |
Remaps | 出厂为空数组 | 首次启动时由Constants.defaultRemaps程序化填充 |
Constants.defaultRemaps | threeButtons/fiveButtons | 三键与五键两套默认映射(如中键双击=Launchpad、按键 5 拖动=双指滑动) |
读透这份 plist 与ScrollConfig.swift中一一对应的懒加载属性,基本就掌握了应用的全部可调参数。
【免费下载链接】mac-mouse-fixMac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考