Scroll Reverser 完整指南:macOS 触控板与鼠标独立滚动设置
【免费下载链接】Scroll-ReverserPer-device scrolling prefs on macOS.项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser
你在触控板上习惯了双指自然滚动,接上外接鼠标往上拨,页面却往下跳;去系统设置里关掉"自然滚动",触控板又变得别扭。macOS 只有一个全局的滚动方向开关,它不关心触控板和鼠标是两种输入设备。Scroll Reverser 就是一个针对这个问题的 macOS 菜单栏工具:让触控板和鼠标各自拥有独立的滚动方向设置。
Scroll Reverser 的应用图标,安装后菜单栏会出现对应的滚动小图标
Scroll Reverser 是什么:只管一件事的菜单栏工具
它是一个纯后台的代理应用:没有 Dock 图标,没有主窗口,全部入口集中在菜单栏的小图标上。点一下弹出菜单,真正的配置都在偏好设置窗口里,结构分两层。
第一层是滚动轴:垂直和水平方向可以独立勾选是否反转;第二层是设备:触控板和鼠标各自独立勾选。于是"只反转鼠标的垂直方向、触控板保持原样"这种组合可以直接勾出来。默认状态是垂直开启、水平关闭、两个设备都开启。所有勾选改完立即生效,没有应用按钮,也不需要重启任何程序。
另外两个实用选项:滚轮步进大小(针对传统一格一格响的机械滚轮)和开机自启、隐藏菜单栏图标。配置都保存在本地,退出应用后方向即刻恢复系统默认。
三步完成安装与权限配置 🖱
应用可以从官方发布页下载,也可以自行从源码编译,后者需要先初始化构建脚本子模块:
git clone https://gitcode.com/gh_mirrors/sc/Scroll-Reverser cd Scroll-Reverser && git submodule update --init首次启动时系统会要求两项权限:辅助功能(macOS Mojave 及以上版本需要)和输入监控(Catalina 及以上版本需要)。偏好设置窗口里有直达对应系统设置页的按钮,授权完成后"启用 Scroll Reverser"这个总开关才能打开。
也就是说,从拿到应用到用起来一共三步:授权两项权限、勾选总开关、按你的习惯勾选要反转的方向和设备。
用起来什么样:右键切换,Option 键看日志
日常使用基本不用打开设置窗口。想临时开或关,直接右键(或 Control 键点击)菜单栏图标即可,不弹菜单、直接翻转状态,比进菜单快得多。
按住 Option 键点击图标会打开一个实时事件日志窗口,这是排查问题最有用的功能。每一笔滚动事件都会显示触点数量、各轴的滚动增量,以及它被判定为来自触控板还是鼠标。如果你疑惑"为什么这个鼠标被当成触控板处理了",日志会当场给出依据。日志写入的是专用缓冲区,事件回调里刻意不用 NSLog,因为那样会拖慢事件处理。
还有一个容易被注意到的细节:Mac 从睡眠中唤醒后,Scroll Reverser 会静默地重新拉起自己。这是为了绕开一个系统问题——唤醒后手势事件可能不再投递,导致它无法区分设备。如果你发现唤醒后滚动方向"变回了原样",重启进程后就会恢复正常,不需要手动干预。
项目还附带 AppleScript 定义文件(ScrollReverser.sdef),可以用脚本读取或切换它的启用状态。
它如何分辨触控板和鼠标 🔍
难点在于:滚动事件到达应用层时,并不自带"来自哪个设备"的标记。Scroll Reverser 的办法是在 macOS 输入流上挂一个事件钩子(event tap,基于 Quartz Event Services 接口),在系统分发事件前读到完整输入流,再从上下文推断来源。核心逻辑集中在 MouseTap.m 一个文件里,README 里作者的原话是:其余部分都只是界面接线。
判断依据有三个信号。其一看手势事件:有两指或更多触点按在触摸面上,随后的滚动基本来自触控板。其二看滚动事件的连续性:Mac 原装触控类设备产生连续滚动,传统机械滚轮产生离散滚动,不连续的直接判定为鼠标。其三看时间:如果上一次多指触点距今已超过 330 毫秒,当前这笔滚动更可能来自鼠标。三者结合,混用不同品牌的鼠标和触控板时判定也大多准确。
判定完成后,事件只会在配置的方向上取反滚动增量,再放行回系统事件流。整个过程发生在事件回调内部,使用时感知不到额外延迟。
适合谁,以及它的边界
如果你同时用 MacBook 触控板和外接鼠标,或者就想"触控板保持自然滚动、鼠标用传统方向",它就是为这个场景做的。Wacom 数位板的滚动会被当作鼠标类输入处理,方向同样可以单独调整。
边界也要说清楚:当前构建要求 macOS 13.5 及以上;它依赖辅助功能和输入监控两项系统级权限,如果这些权限你一律不给第三方应用,它跑不起来;它通过读取事件流工作,个别对滚动事件有自己处理逻辑的应用可能表现异常,遇到时用右键快速开关来验证即可。它是个单一用途工具,没有按应用分别设置、没有主题或插件体系,也不需要它做这些。
项目采用 Apache 2.0 许可。更多使用说明和版本历史见仓库里的 README.md 与 ReleaseNotes.md;想深入了解事件钩子的写法,从 MouseTap.m 读起即可。
【免费下载链接】Scroll-ReverserPer-device scrolling prefs on macOS.项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考