Mac Mouse Fix 鼠标优化指南:3套按键映射方案榨干每个侧键
【免费下载链接】mac-mouse-fixMac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix
按下鼠标左侧 Button 4 的那一刻,Chrome 没有后退,而是直接跳到了上一个文档。Mac Mouse Fix 的按键映射与鼠标优化,从此在后台接管了滚轮与侧键。它不做驱动层替换,而是用一套事件拦截加平滑算法,把一只几十块的普通鼠标重写成接近触控板的输入设备。
事件拦截与平滑算法:滚轮为何变得顺滑
macOS 原生的滚轮事件以「行」为单位送达,一行一行地跳,没有惯性。Mac Mouse Fix 的做法是把原始滚轮事件在系统底层截走,再自己生成像素级的连续滚动事件,逐帧回注给应用。
滚轮事件拦截链路
整个链路写在 Scroll.m 里,调用顺序如下:
CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventScrollWheel) → 捕获到滚轮事件后 return NULL,吞掉原始行式事件 → CGEventCreateCopy 复制事件,dispatch_async 到 serial 队列 → heavyProcessing(): 判断方向、跑加速度曲线 → TouchAnimator 把像素量拆成逐帧事件 → sendOutputEvents 重注入连续/手势滚动队列用QOS_CLASS_USER_INTERACTIVE优先级创建,保证滚动处理排在普通任务之前。事件复制而非原样透传,是为了让重活离开拦截线程,避免kCGEventTapDisabledByTimeout把事件钩子挂起。
双指数平滑公式
滚动之所以「有惯性」,来自 DoubleExponentialSmoother.swift 里的双指数平滑。它同时估计当前水平 L 和趋势 T,输出叠加趋势项,滚停后还能继续滑动:
L = α·Y + (1-α)·(L_prev + T_prev) T = β·(L - L_prev) + (1-β)·T_prev output = L # 前两个采样点 Y 直通,不进入平滑 # α=1 完全不平滑;α=0 输出恒定 # β 越大,趋势惯性越强,滚停滑行越久加速度不是线性放大,而是把「每秒 tick 数」scrollSpeed = 1/Δt送进一条 Bézier 曲线求值。Scroll.m 里连续快速甩轮时,还会乘一条fastScrollCurve,倍数被硬封顶在100000,防止自由滚轮的动画时长爆炸到几小时。
三套角色按键映射表与滚动参数
捕获(capture)是理解配置的前提:一个按键只要出现在 Buttons 标签左侧,就说明它已被 Mac Mouse Fix 独占,其他应用收不到它的信号。删掉某按键的全部绑定即可「释放」它。下面三套方案默认都从 default_config.plist 的指针加速度0.6875、灵敏度×1出发。
开发者
| 按键 | 触发动作 | 映射功能 | 适用软件 |
|---|---|---|---|
| Button 4 | 单击 | 切到上一个文件标签 | Xcode / VS Code |
| Button 5 | 单击 | 切到下一个文件标签 | Xcode / VS Code |
| Button 4 | 单击并拖动 | Scroll & Navigate(模拟双指划动切 Space) | VS Code 分屏 |
| 中键 | 单击并拖动 | Scroll & Navigate | Xcode 画布 |
| Button 5 | 双击 | 显示桌面 | 全局 |
- 滚动灵敏度提到×3,加速度降到0.4,长文件垂直滚动更可控。
- 开水平滚动,让代码块横向拖拽走 Button 4 拖动。
设计师
| 按键 | 触发动作 | 映射功能 | 适用软件 |
|---|---|---|---|
| Button 4 | 单击 | 放大 | Photoshop / Figma |
| Button 5 | 单击 | 缩小 | Photoshop / Sketch |
| 中键 | 单击并拖动 | Scroll & Navigate(3D 环绕与画布平移) | Blender / Figma |
| Button 4 + 5 | 组合单击 | Mission Control | 全局 |
| Button 5 | 长按 | 显示桌面 | 全局 |
- 平滑度选 Regular,加速度保持0.6875,缩放手感最接近触控板。
- 关闭指针加速度(macOS 14 起可在系统设置关掉),画布平移更线性。
文档处理
| 按键 | 触发动作 | 映射功能 | 适用软件 |
|---|---|---|---|
| Button 4 | 单击 | 后退 / 上一页 | PDF / Chrome |
| Button 5 | 单击 | 前进 / 下一页 | PDF / Chrome |
| 中键 | 单击 | Middle Click(新标签打开链接) | 浏览器 |
| 中键 | 单击并拖动 | 大尺寸文档平移 | Keynote / Pages |
| Button 4 + 5 | 双击 | 窗口最大化(配合 Swish 吸附) | 全局 |
- 自然滚动开启,加速度0.6875、灵敏度×2,PDF 翻页节奏均匀。
- 若中键单击在终端里粘不出来,属捕获冲突,见下方排查。
组合键与差异化动作的进阶玩法
- Button 4 + 中键 → Mission Control:多桌面之间跳来跳去时,比去摸触控板边缘更快。
- 同键单击/长按差异化:Button 5 单击前进一页,长按显示桌面。适合不想占用额外物理键的场景。
- 任意键绑定 Scroll & Navigate 的「单击并拖动」:等价于触控板双指滑动,可触发 Swish 窗口半屏吸附、App Exposé、Blender 环绕。用第三方鼠标补齐触控板手势时必备。
- 鼠标键直发 Apple 键盘专属键:把任意按键设为亮度、音量或媒体播放,按住 Option(⌥)可从列表里挑出这些特殊键。没有 Apple 键盘时控制音量最实用。
- 消除单击延迟:给某个按键配了「双击」动作后,单击会等一个判定窗口才触发。删掉该键的双击绑定,延迟即时消失。
安装、权限与性能落地
🚀 安装方式
包管理器:Homebrew 一条命令装好,后续用brew upgrade跟版本。
brew install mac-mouse-fix官网:从 Mac Mouse Fix 官网下载最新 dmg,拖进「应用程序」,首次运行授予权限即可,适合不想碰终端的用户。
源码:克隆仓库后在 Xcode 里选Appscheme、Release 配置构建:
git clone https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix cd mac-mouse-fix xcodebuild -project "Mouse Fix.xcodeproj" -scheme "App" -configuration Release✅ 权限清单
- 系统设置 → 隐私与安全性 →辅助功能:勾选 Mac Mouse Fix,负责全局事件钩子。
- 系统设置 → 隐私与安全性 →输入监控:勾选,负责拦截并改写输入。
- 授权后重启应用(或直接重开 Enable 开关),Helper 进程才会带上权限重新拉起。
- 若用了 App Translocation(从 Downloads 直接双击运行),事件钩子会受限,务必装进应用程序文件夹。
📈 性能与硬件兼容
- 指针加速度默认0.6875、灵敏度×1,可在 Pointer 标签逐设备改。
- 事件开关对 CPU 的开销极小:源码注释记录,按钮狂点、start/stop 高频切换的场景下,钩子开合几乎不影响占用。
- 分帧回注依赖 DisplayLink,120Hz屏上约8.3ms/帧,这是滚动惯性的物理下限。
- 完全兼容:Logitech 的 MX/G 系列(USB/蓝牙模式)、Microsoft、Razer、SteelSeries 的多数办公与游戏鼠标。
- 受限:依赖 Logi Options 等专有驱动协议的鼠标,部分按键走私有协议而非标准 USB,Mac Mouse Fix 暂不能识别全部键;Apple Magic Mouse 目前不受它影响。
- 系统要求macOS 11 Big Sur 及以上,更旧版本请退回 Mac Mouse Fix 2。
🐛 故障排查
滚轮/按键不生效 ├─ 菜单栏图标在不在? │ ├─ 否 → 打开 General 的 Enable 开关,让 Helper 重新拉起 │ └─ 是 ↓ ├─ 是按键失灵还是滚动不顺? │ ├─ 按键 → 该键是否已被捕获(Buttons 标签左侧可见) │ │ ├─ 已被捕获 → 检查是否与浏览器/游戏冲突,删掉冲突绑定 │ │ └─ 未被捕获 → 用「+」重新捕获该键 │ └─ 滚动 → 先关 Smooth Scrolling,再逐档调平滑度与加速度 └─ 权限是否齐全? ├─ 辅助功能未勾选 → 勾选后重开 └─ 输入监控未勾选 → 勾选后重开配置建议定期导出备份。把滚轮加速度、平滑度先定到 0.6875 / ×1 的基线,再按上面三张表微调,比一上来堆满功能更稳。现在就把 Button 4 和 Button 5 绑定上你最常用的两个动作,让这只鼠标今天就多干两份活。
官方文档:docs/official.md 核心模块路径:Helper/Core/ 配置模块:Shared/Config/
【免费下载链接】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),仅供参考