Scroll Reverser 完全指南:3 分钟让 Mac 触控板与鼠标滚动方向各归其位
Scroll Reverser 完全指南3 分钟让 Mac 触控板与鼠标滚动方向各归其位【免费下载链接】Scroll-ReverserPer-device scrolling prefs on macOS.项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser你在 MacBook 触控板上用惯了自然滚动一插上外接鼠标方向立刻叛变——往上滚页面却往下走。macOS 的自然滚动是个全局开关触控板和鼠标只能同进同退。Scroll Reverser 就是为这个矛盾而生的开源小工具它常驻菜单栏支持为触控板和鼠标分别设置滚动方向垂直、水平两个轴还能单独控制适合同时使用触控板和外接鼠标的 Mac 用户。一个全局开关管两个设备矛盾从何而来问题不在你的习惯而在系统设计。自然滚动决定了手指往下推时页面是否往上走而这个开关作用在系统层面不区分输入来源。于是典型的工作流变成了这样用触控板时希望保留自然滚动因为双指手势和惯性是绑定的换到鼠标时希望用传统方向因为滚轮肌肉记忆改不动结果只能在全局开或全局关之间二选一每次切换设备都要重新适应Scroll Reverser 的做法是把这两类设备的滚动事件拆开处理触控板的事件走一套规则鼠标的事件走另一套规则互不干扰。三步跑起来并完成 2 项系统授权 ️安装本身不复杂真正要花点时间的是系统权限。从仓库获取项目源码git clone https://gitcode.com/gh_mirrors/sc/Scroll-Reverser运行应用。首次启动会弹出一个欢迎窗口之后它只会安静地待在菜单栏里应用声明为LSUIElement没有 Dock 图标也不占任务切换器。按系统版本授予权限。应用会检测权限状态并在设置窗口的App Settings页提供一键跳转系统设置的按钮。不同 macOS 版本需要的权限并不一样来自权限管理模块 PermissionsManager.m 的逻辑macOS 版本所需权限10.14Mojave之前无需特殊授权10.14 – 10.14.x辅助功能Accessibility10.15Catalina及之后辅助功能 输入监控Input Monitoring一个容易踩的坑输入监控权限系统只允许主动弹框申请一次错过之后只能手动去系统设置 → 隐私与安全性 → 输入监控里勾选。所以第一次弹框时别急着点拒绝。设置界面逐项过方向矩阵怎么填点击菜单栏图标打开偏好设置窗口共两个标签页Scrolling Settings滚动设置和App Settings应用设置。所有改动保存即生效无需重启。滚动设置页的核心是一张 2×2 的方向矩阵垂直滚动水平滚动触控板Trackpad☑ 反转 / ☐ 不反转☑ 反转 / ☐ 不反转鼠标Mouse☑ 反转 / ☐ 不反转☑ 反转 / ☐ 不反转最常见的组合系统自然滚动保持开启触控板两格不勾鼠标两格勾上——触控板维持原生体验鼠标回到传统方向。其他值得知道的操作右键或 Control点击菜单栏图标直接开关 Scroll Reverser不用进设置窗口Option⌥ 点击菜单栏图标打开调试窗口实时查看事件日志Show in Menu Bar 取消勾选隐藏菜单栏图标图标会提示Icon HiddenStart at Login开机自动启动鼠标滚轮步长滑块当你接上传统物理滚轮鼠标后才会出现取值 0–100用来放大每一格滚轮的滚动量它凭什么分清触控板和鼠标 原理不神秘但细节讲究。Scroll Reverser 的核心代码集中在 MouseTap.m 一个文件里其余都是界面。它基于 macOS 的 Quartz Event Services 在系统事件流上安装了事件探针event tap滚动事件在送达应用之前先经过这里。有意思的设计是它用了两个探针被动探针只监听手势事件不修改任何事件。代码注释里写得很直白用主动探针盯手势会触发多余的授权弹窗、干扰摇动定位光标、还会卡住通知中心手势主动探针只负责改写滚轮事件的方向判断滚动来源的规则按优先级排列可直接在 MouseTap.m 的事件回调里找到对应逻辑非连续滚动滚轮一格一格报增量→ 判定为鼠标连续滚动且最近 222 毫秒内检测到双指及以上触摸 → 判定为触控板连续滚动但上一次触摸已过 333 毫秒以上 → 判定为鼠标比如惯性滚动早已结束此刻却在用鼠标信息不足 → 沿用上一次事件的判断结果另外两个细节Wacom 数位板接的鼠标其滚动被明确当作鼠标处理v1.7 起Mac 从睡眠唤醒后它会静默自我重启一次因为 macOS 有时在唤醒后停止发送手势事件导致触控板/鼠标区分失灵。调试日志没有用常规的 NSLog 逐条打印——作者认为那会拖慢事件处理速度而是写了一个更高效的自定义日志器。这也是它作为常驻进程能保持轻量的原因之一。进阶用法滚轮步长、远程桌面与 AppleScript基础功能之外的几个实用技巧传统滚轮太跳物理滚轮每次只报 1 个单位增量在高分屏上滚起来很费劲。接上传统鼠标后设置页会显示步长滑块把步长拉大就能让每一格滚轮滚动更多距离远程桌面场景如果你通过屏幕共享远程操控另一台 Mac滚动事件来自远端进程。代码中保留了只反转原始输入的选项让来自其他进程的滚动事件不被处理只反转本地设备的滚动脚本控制应用内置 AppleScript 支持见 ScrollReverser.sdefv1.7 加入可以写脚本自动化开关反转更新策略基于 Sparkle 框架默认开启自动检查更新、关闭自动下载安装另提供 beta 通道选项隐私Info.plist 中显式关闭了系统信息采集SUEnableSystemProfiling为 false所有设置都只存在本地如果某个设备识别不对用 Option点击打开调试窗口日志里每个事件都会带上source判定来源、ifd方向是否已被系统反转、continuous连续滚动等字段能很快定位是哪一步判断出了问题。兼容性一览表 项目说明当前构建的最低系统要求macOS 13.5见 Common.xcconfig更老版本的系统v1.6 起要求 OS X 10.7 Lionv1.5 支持到 10.4 Tiger触控板Magic Trackpad 及内置触控板鼠标Magic Mouse、传统滚轮鼠标、第三方 USB/蓝牙鼠标数位板Wacom 支持笔绘输入按数位板识别其鼠标按鼠标处理许可证Apache 2.0本地化内置简体中文、繁中、日语、德语、法语等二十余种语言见 v1.7.7 更新记录版本历史很长v1.0 发布于 2011 年完整的变更说明在 ReleaseNotes.md 里设备识别算法的历次改进都能在其中找到对应版本。想读源码入口只有一个文件这个项目体量很小适合当作 macOS 事件处理的阅读材料。项目结构在 README.md 里有说明作者的原话是核心都在 MouseTap.m其余全是界面装配。如果你打算自己编译克隆后执行git submodule update --init拉取 BuildScripts 子模块原代码签名证书属于作者需在 Xcode 的 Signing Capabilities 中换成自己的 Developer ID 证书Debug 构建产物名为 Scroll Reverser (Dev)、版本号显示 99999属正常现象功能完整推荐阅读顺序MouseTap.m的_callback回调事件如何被判定和改写→PermissionsManager.m权限检测与申请时机→PrefsWindowController.m设置界面如何与用户偏好联动。打开仓库克隆下来先给触控板和鼠标各配一套方向5 分钟后你就能同时拥有自然滚动和传统滚轮——两套习惯一次到位。【免费下载链接】Scroll-ReverserPer-device scrolling prefs on macOS.项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考