news 2026/10/3 8:16:47

Mac Mouse Fix 滚轮捕获机制详解:彻底关闭滚轮捕获,让滚动交由其他应用接管

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mac Mouse Fix 滚轮捕获机制详解:彻底关闭滚轮捕获,让滚动交由其他应用接管
  • 桌面应用
  • 系统编程

【免费下载链接】mac-mouse-fix

Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!

项目地址:https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix
点击查看免费下载

Mac Mouse Fix(MMF)默认会“捕获”鼠标滚轮事件,以便实现平滑滚动、方向反转、滚轮加速与键盘修饰键等增强功能。本指南基于官方用户文档 CapturedScrollWheels.md 展开,结合仓库源码说明“滚轮捕获”到底是什么、如何通过Scrolling设置面板彻底关闭捕获,以及关闭后 MMF 的滚轮事件拦截行为会发生什么变化,帮助你理解捕获判定逻辑,并将滚动处理交给 MOS 等其他应用。

什么是“滚轮捕获”

与 MMF 对鼠标按键的“捕获”行为(参见 CapturedButtonsMMF3.md)类似,Mac Mouse Fix默认会捕获鼠标滚轮事件。这意味着 MMF 会从系统事件流中拦截滚轮输入,再根据自己的配置(平滑度、速度、方向、修饰键等)重新生成滚动事件。

从源码上看,这一拦截行为由 Helper 进程中的 Scroll.m 实现:它通过CGEventTapCreate(kCGHIDEventTap, ...)注册了一个仅监听kCGEventScrollWheel事件的全局事件回调,只要“捕获”处于激活状态,滚轮输入就会先经过 MMF 的 ScrollAnalyzer 与动画系统处理,而不是直接由当前前台应用消费。

如何取消滚轮捕获

如果你希望 MMF 不再介入滚轮事件(例如你更愿意让 MOS、Logi Options 等其他滚动增强工具来处理滚轮),可以按以下步骤操作:

  1. 打开 Mac Mouse Fix 主窗口,进入'Scrolling'(滚动)标签页;
  2. 关闭该页面上的所有选项,具体包括:
    • 'Speed'(速度)选项:将其设为'macOS'(即让 MMF 放弃自己的加速算法,完全沿用 macOS 提供的滚轮行为);
    • 'Keyboard Modifiers'(键盘修饰键):逐一点击每个修饰键条目右侧的'x'按钮,将全部条目删除。

完成上述操作后,界面中应当会出现一条提示消息,表明滚轮已不再被捕获。

底层捕获判定逻辑

“是否捕获滚轮”并非一个独立的开关,而是由配置派生而来。在 SwitchMaster.swift 的scrollConfigChanged(scrollConfig:)方法中,核心判定代码如下:

self.defaultModifiesScroll = (scrollConfig.smoothEnabled || scrollConfig.u_speed != kMFScrollSpeedSystem || scrollConfig.u_invertDirection == kMFScrollInversionInverted)

也就是说,只要满足以下任意一个条件,MMF 就会认为“默认需要修改滚轮事件”,从而开启捕获:

条件对应设置关闭方式
smoothEnabled为真'Smoothness'(平滑度)不为off将平滑度设为关闭
u_speed != kMFScrollSpeedSystem'Speed'(速度)不是macOS将速度设为 'macOS'
方向反转开启'Reverse Direction'(反转方向)为开关闭方向反转

随后toggleScrollTap()会根据该状态调用Scroll.startReceiving()或Scroll.stopReceiving()来启用或停用上述滚轮事件拦截。用户界面侧的捕获状态检测也有完全一致的对应关系——在 ScrollTabController.swift 中,代码同时检查了平滑度、方向、速度以及全部键盘修饰键:

let isCaptured = smooth1 != "off" || reverse1 || speed1 != "system" || horizontal1 != 0 || zoom1 != 0 || swift1 != 0 || precise1 != 0

注意:该判定同时覆盖了Scroll.modifiers.horizontal / zoom / swift / precise四类键盘修饰键(它们在 default_config.plist 中对应Scroll字典下的modifiers子字典),这正对应文档中“删除所有 Keyboard Modifiers 条目”的步骤。

配置默认值速查

仓库中 default_config.plist 展示了Scroll配置的默认形态,可供对照:

<key>Scroll</key> <dict> <key>modifiers</key> <dict> <key>horizontal</key> <integer>131072</integer> <key>precise</key> <integer>524288</integer> <key>swift</key> <integer>262144</integer> <key>zoom</key> <integer>1048576</integer> </dict> <key>reverseDirection</key> <true/> <key>trackpadSimulation</key> <true/> <key>precise</key> <false/> <key>smooth</key> <string>high</string> <key>speed</key> <string>medium</string> </dict>
  • smooth取值:off/low/regular/high,对应 ScrollConfig.swift 中的u_smoothness解析(枚举定义见 ScrollConfigObjC.h);
  • speed取值:system/low/medium/high,其中system表示完全沿用 macOS 原生的滚轮行为(kMFScrollSpeedSystem);
  • 默认配置下smooth = high、speed = medium、reverseDirection = true,因此默认状态下滚轮必然处于“被捕获”状态——这正是文档开头“默认捕获”说法的依据。

滚轮不再被捕获之后会发生什么

当你完成了上述设置并看到“滚轮已不再被捕获”的提示后,Mac Mouse Fix 会完全忽略你的滚轮:

  • 零 CPU 占用:滚轮事件不会再进入 MMF 的分析与动画管线,滚动期间 MMF 不会消耗处理器资源;
  • 零电量损耗:不会因为持续的滚轮事件处理而消耗额外的电池电量;
  • 零干预:MMF 不会以任何方式干扰、改写或转发你的滚轮事件。

从源码角度看,toggleScrollTap()会调用Scroll.stopReceiving(),关闭注册在kCGHIDEventTap上的滚轮事件回调,滚轮输入将直接、完整地传递到 macOS 与前台应用。

这也意味着你可以放心地把滚轮交给其他应用来处理,例如常见的平滑滚动工具 MOS 或 Logi Options——MMF 不再与它们竞争滚轮事件,两者之间不会产生冲突或重复处理。

补充说明

  • 取消滚轮捕获不会影响 MMF 对鼠标按键(如中键、侧键)的捕获与按键绑定功能;如果你希望同时恢复按键的原始行为,可参考 CapturedButtonsMMF3.md 中关于“删除按键绑定以取消捕获”与“分配等价动作以保留原功能”的说明。
  • 如果你只想在特定场景下临时停用 MMF 的滚动处理,还可以通过General配置中的scrollKillSwitch(见 default_config.plist)一键禁用滚动拦截,而不必修改Scrolling面板中的各项设置;SwitchMaster的toggleScrollTap()会优先检查该开关。

相关文档

  • Captured Mouse Buttons 指南:了解 MMF 对鼠标按键的捕获机制与恢复原始功能的三种方式;
  • CapturedScrollWheels.md(英文原版):本指南对应的官方文档;
  • ScrollConfig.swift 与 SwitchMaster.swift:滚轮配置解析与捕获开关调度的核心实现。
  • 桌面应用
  • 系统编程

【免费下载链接】mac-mouse-fix

Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!

项目地址:https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix
点击查看免费下载

相关推荐

上一篇:5个实用技巧让Hydra启动提速60%:从卡顿到秒开的优化指南
下一篇:LinkSwift:免费网盘直链下载脚本,九大网盘一键获取官方直链

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 8:13:06

如何安全制作系统启动盘:Balena Etcher 镜像烧录全流程

如何安全制作系统启动盘&#xff1a;Balena Etcher 镜像烧录全流程 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 把系统镜像写进 SD 卡或 U 盘时&#xff0c;最…

作者头像 李华
网站建设 2026/10/3 8:08:40

力科Summit T3-8 PCIe协议分析仪实战:从LTSSM到TLP的调试指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华