侧键映射与平滑滚动|Mac Mouse Fix 从上手到搞懂原理
【免费下载链接】mac-mouse-fixMac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix
把鼠标侧键按下去想切回上一个窗口,光标纹丝不动;滚轮一格一格地跳,快不了,也停不干净。macOS 的输入优化几乎全部围绕触控板设计,第三方鼠标的侧键和滚轮拿到的系统支持非常有限。Mac Mouse Fix 用后台 Helper 进程拦截并改写鼠标事件,把侧键映射、macOS 鼠标平滑滚动和指针加速调到你顺手的程度,配置全部留在本地。
看懂它怎么工作:三层结构 🔧
- UI 层:主应用只有四个标签页——通用、按键、滚动、关于,负责把配置写进文件。
- Helper 层:真正拦截并改写鼠标事件的后台进程 Mac Mouse Fix Helper,由 launchd 管理启停,与主应用通过 MessagePort 通信。
- 配置层:所有设置存在本地 config.plist,改完即时生效,不需要重启。
你关掉主窗口、甚至重启电脑,映射都还在——因为干活的从来不是那个窗口。
安装并授权 Mac Mouse Fix ⚡
- 终端执行安装命令,或用 Xcode 打开
Mouse Fix.xcodeproj从源码编译(源码仓库:https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix)。
brew install mac-mouse-fix- 启动应用,打开 Enable 开关,在系统弹窗里授予辅助功能权限——事件拦截依赖它,没勾上什么都不会发生。卡点提示:勾选后可能不会立刻生效,我当时的做法是直接退出应用再重新打开,之后就正常了。
- 进入Buttons标签页,把鼠标指针移进界面上方的"+"区域,单击鼠标上的 Button 5,弹窗提示该按键已被捕获,即完成第一次核心操作。
捕获侧键并绑定动作 🖱️
"捕获"是理解这个项目的关键:一个按钮一旦被 Mac Mouse Fix 捕获,其他应用就再也检测不到它——这既保证了映射稳定,也意味着想恢复原样,就得把该按钮的所有动作删掉。
- 触发动作:点按、点按两次、点按并拖移,以及"点按 Button 5 + 点按中键"这类多键组合;
- 默认预设:配置文件按三键 / 五键鼠标内置了 Remaps——五键鼠标 Button 4 点按是启动台、Button 5 是智能缩放、中键单击是 Mission Control、按住 Button 5 再滚动是缩放;
- 苹果特殊键:选择按键时按住 Option (⌥),可以看到亮度、音量、媒体播放这类只有苹果键盘才有的按键。
对实际使用的意义是:切窗口、开启动台、缩放页面都可以压在手侧的侧键上,手指不用离开鼠标。
配置平滑滚动与修饰键行为 📝
Scrolling 标签页对应配置文件里这四个键:
| 配置键 | 默认值 | 可选范围 | 体感差异 |
|---|---|---|---|
smooth | high | off / low / regular / high | 越高,滚轮从"一格格跳"越接近连续滑动 |
speed | medium | system / low / medium / high | 整体滚动快慢,system 跟随系统设置 |
reverseDirection | true | true / false | 反转方向,配合"自然滚动"习惯调整 |
trackpadSimulation | true | true / false | 开:应用把输入当触控板处理;关:更像原生滚轮 |
修饰键行为默认由四个位掩码定义(Command = 131072、Control = 262144、Option = 524288):
| 按住什么键 | 滚动时的效果 |
|---|---|
| Command | 水平滚动 |
| Control | 快速滚动 |
| Option | 逐像素精确滚动 |
| Command + Option | 缩放 |
开 trackpadSimulation 时,事件以 gesture scroll 和 momentum scroll 的形式发出,应用会把滚轮当触控板输入处理。对实际使用的意义是:滚轮的松手减速、方向手感都能对齐触控板,按住 Option 逐像素微调时不再"一松手就刹不住"。
看懂底层机制:双进程与平滑引擎 📝
双进程分工。主应用只是设置界面,事件拦截全部发生在 Mac Mouse Fix Helper 里。之所以这样拆,是因为 Helper 由 launchd 托管(HelperServices),主应用退出后它照跑不误;两者用 MessagePort 通信,应用内也内置了restartHelperWithDelay这类重启机制,权限出问题时不用手动杀进程。
滚动引擎。滚轮输入先经过 DoubleExponentialSmoother 双指数平滑:状态是平滑值 L 和趋势 T,参数 a 控制多信当前输入、y 控制多信既有趋势,之后由曲线和一段拖拽物理产生减速段,最后输出模拟的滚动事件。这就是 smooth 等级改变的是"减速手感"而不是单纯加速度的原因——它模拟的是动量,不是倍率。
指针加速写进驱动层。项目不在事件层做二次加速,而是把自定义加速曲线直接写入 Apple HID 驱动(PointerSpeed),再按轮询率与 CPI 做补偿。之所以要补偿,是因为高轮询率鼠标的原始位移天然偏小,不补偿的话加速曲线根本不会正常触发。配置改完即时生效:每次修饰键组合、输入轴、显示器的变化都会生成独立的配置副本(带缓存),所以按住 Option 滚一轮再松开,行为是即时切换的。
绕开真实使用中的坑 🖱️
- 事件完全不生效:辅助功能权限没勾上,或勾完没生效。解法:确认权限已勾选,退出并重新打开应用(Helper 会自动随应用重启)。
- 点按有明显延迟:给该按钮配了点按两次动作,系统要等你确认是否第二次点击。删掉这个动作,延迟立刻消失。
- 部分侧键识别不到:Logitech Options 这类厂商私有驱动生态的鼠标走私有协议而非标准 HID,部分按钮目前识别不了——这是功能边界,不是设置问题。
- Magic Mouse 用户白装了:本项目对 Magic Mouse 无效,它目前的定位是救"普通鼠标",不是替代触控板。
- 某款应用不兼容:在 General 开启 Show in Menu Bar 后,菜单栏可以随时临时关掉平滑滚动等功能,不用翻配置。
备份很简单:拷贝本地~/Library/Application Support/下对应 bundle 目录里的config.plist即可。
回到开头的两个痛点:侧键现在真的能切窗口了,滚轮也终于停得下来。配置留在本地、行为透明可改,这是最值得留它的一点。MMF 2 及以前永久免费,MMF 3 是 30 天免费后付费;项目已支持 20 多种语言,欢迎通过仓库提 issue 或贡献翻译。
【免费下载链接】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),仅供参考