Scroll Reverser 使用指南:轻量滚动方向控制
【免费下载链接】Scroll-ReverserPer-device scrolling prefs on macOS.项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser
经常同时用触控板和鼠标的人,多半经历过这种瞬间:触控板上往下滑,鼠标滚轮却要往上推。macOS 的"自然滚动"开关对所有设备一视同仁,方向只能全局二选一。Scroll Reverser 是一个轻量级的开源工具,常驻菜单栏,可以按设备分别设置滚动方向,让触控板保持自然滚动、鼠标走传统方向。
安装与首次运行 📦
从仓库获取源码,在 Xcode 中构建:
git clone https://gitcode.com/gh_mirrors/sc/Scroll-Reverser cd Scroll-Reverser && git submodule update --init- 用 Xcode 打开 ScrollReverser.xcodeproj,替换为自己的签名证书后构建运行。
- 首次运行需要辅助功能和输入监控权限,按提示在系统设置中授权即可。
- 点击菜单栏的双向箭头图标,进入设置界面完成配置。
核心能力拆解 🎛️
按设备独立控制 —— 鼠标和触控板滚动方向分别设置
macOS 原生只有全局滚动方向,Scroll Reverser 把它拆成Trackpad和Mouse两列,垂直与水平方向各自独立勾选。勾选后对应设备的方向立即反转,改动保存在本地,重启应用后依然生效。设置面板在 PrefsWindowController.m 中实现,另外提供一个滚轮步长滑杆,机械滚轮一格跳太猛时把它调低,滚动会平滑不少。
手势事件识别 —— 自动分清滚动来自哪里
设备判断的核心逻辑在 MouseTap.m 里。应用通过安装事件监听(event tap)接入系统事件流,在滚动事件进入系统处理之前读取手势信息。触控板上有两根以上手指时,判定为触控板输入,否则归为鼠标。识别结果决定走哪一列的翻转规则,非苹果品牌的鼠标也能被正确分类。
轻量驻留 —— 后台安静运行
应用是纯菜单栏工具,不占 Dock 位置。事件处理路径刻意避开了慢速的日志输出,默认情况下后台运行几乎没有可感知开销。macOS 睡眠唤醒后偶尔会停发手势事件,应用会静默重启自己来恢复识别,这一点写进了版本说明。
实战场景 💼
触控板加外接鼠标的日常办公
最常见的组合。触控板勾上垂直方向,保持自然滚动;鼠标保持传统方向,两只手都不用重新适应。水平滚动按个人习惯单独勾选就行,一般默认不动。
设备经常换来换去
自带触控板、工位一个滚轮鼠标、家里一个蓝牙鼠标。建议只反转 Mouse 列,所有滚轮类设备共用一个方向。触控板方向保持不变,换设备时没有记忆负担。
只固定用触控板,偶尔插鼠标
只勾选 Mouse 列的垂直方向。平时完全按系统默认行为滚动,插上鼠标方向才反转,拔掉自动恢复。不需要在应用设置里来回切换。
兼容性与限制 ⚠️
- 系统要求:macOS 13.5 及以上,最低版本配置在 Common.xcconfig 的 BUILDSCRIPTS_MINIMUM_SYSTEM_VERSION 中。
- 支持设备:Apple 触控板与外部触控板、USB 和蓝牙鼠标、滚轮鼠标。
- 设备识别依赖手势事件,不发手势的设备(如多数数位板)一律按鼠标处理。
- 已知局限:macOS 睡眠唤醒后偶尔停发手势事件,靠应用自重启恢复;极端情况可手动退出重开。
- 项目采用 Apache 2.0 许可证,可自由使用和修改。
常见问题 ❓
会不会拖慢系统?监听线程只做方向判断和数值取反,处理量很小,日常使用感知不到延迟,资源占用维持在较低水平。
为什么需要两项权限?辅助功能用于拦截和改写滚动事件,输入监控用于读取手势信息。两项权限都在 PermissionsManager.m 中检测,缺失时设置界面会给出状态提示。
会收集使用数据吗?不会。偏好全部存在本地,应用没有遥测代码,只有手动点击检查更新时才会联网。
方向没反转怎么办?先确认对应设备列的勾选状态和权限是否齐全。仍不生效就把应用退出重开,让事件监听重新初始化。
菜单栏图标能隐藏吗?可以。取消设置里的 Show in Menu Bar 即可,需要时重新启动应用再勾回。
回到开头那个瞬间:触控板往下、滚轮往上,两边终于不用互相迁就。Scroll Reverser 适合同时用触控板和鼠标、又被方向问题困扰的人;只用单一设备且对方向满意的话,用不上它。仓库地址见文首命令,感兴趣可以拉下来试试。
【免费下载链接】Scroll-ReverserPer-device scrolling prefs on macOS.项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考