Windows-style mouse scrolling for Mac: reverse mouse scroll direction, keep your trackpad natural, middle-click to autoscroll or open links in new tabs. Open-source macOS menu bar app.
Swift
13
7 commits
updated Oct 2, 2026
Reverse mouse scroll direction on macOS. Keep your trackpad natural. Middle-click to autoscroll or open a link in a new tab.
ScrollFix is an open-source Mac menu bar app for people who prefer Windows mouse behavior. macOS shares its Natural scrolling setting between mouse and trackpad. ScrollFix corrects recognized mouse-wheel input separately, with immediate wheel movement by default.
Installation guide · Build from source · Deutsch · Troubleshooting · Privacy

ScrollFix 0.3.2: mouse scrolling, middle-click and Home/End. UI labels are currently German.
ScrollFix also supports Home/End navigation and optional local zsh input selection. A global Ctrl/Cmd swap, Ctrl+wheel app zoom, Windows desktop shortcuts and display-quality changes are not included. See Terminal setup and compatibility.
Current version: 0.3.2. The source is updated; a verified DMG download is not available yet. The planned installer works like a normal Mac app: open the DMG, drag ScrollFix into Applications, then open it and allow macOS access. No Xcode or Terminal commands are needed with that download. Simple installation guide.
The maintainer still needs an Apple Developer ID certificate and notarization before publishing that DMG. Do not use the old preview expecting the features below.
The current features are available in the source. The old v0.1.0 preview does not include them. It is ad hoc signed, not notarized, and predates the signing changes. No new verified binary release is available yet.
Requirements: macOS 13 or newer, Swift 6, and the macOS SDK from Xcode or Command Line Tools. The default build targets your Mac. Set SCROLLFIX_BUILD_ARCHITECTURES=universal for Apple Silicon and Intel; the old preview is Apple Silicon only.
git clone https://github.com/eShok93/ScrollFix.git
cd ScrollFix
./scripts/build-app.sh
Move build/ScrollFix.app to /Applications, then open it there. Keep the app at that location when using login startup. The script signs local builds ad hoc; it does not notarize them. Rebuilding changes that local identity and may require renewing ScrollFix's macOS permission. Do not disable Gatekeeper globally.
The default wheel mode is Direkt (Windows). Mausrad, Mittelklick-Scrollen and Bei Anmeldung starten are enabled by default; saved choices are respected. macOS may also request permission to generate scroll movement for autoscroll or smooth scrolling. This means movement inside your apps, not sending data to a server.
In Feineinstellungen, click Terminal einrichten and confirm. ScrollFix backs up your startup file and installs the bundled module for your user. Open a new local zsh Terminal window afterward. No copied commands are required. Unsupported custom shell setups stay unchanged; see compatibility and removal.
| Mode in the app | Behavior |
|---|---|
| macOS | Keeps the native wheel distance, with ScrollFix's direction correction. |
| Direkt (Windows) | Moves immediately, with an adjustable minimum distance for small wheel steps. Default. |
| Weich | Spreads movement over frames for a soft start and short decay. |
Feineinstellungen is expanded by default. Scrollstrecke pro Radschritt adjusts the distance. These modes apply to recognized vertical line-wheel input; trackpad gestures, pixel-wheel streams and ambiguous input bypass the wheel-feel stage. Direct mode approximates the immediate feel of Windows, not an exact three-lines-per-notch setting across every app.
Click the wheel on ordinary content to set an autoscroll anchor. Move the pointer away to scroll vertically or horizontally. Another click stops scrolling.
On a recognized link, ScrollFix passes the original middle click to the browser. The browser decides whether to open a new tab. Controls, modified clicks and uncertain targets also keep their native behavior. Incomplete Accessibility support or custom canvas content can prevent link recognition or autoscroll. No click is copied or replayed. The middle-click filter now runs independently of the interface, with recovery for interrupted clicks and a bounded lookup for deeply nested links.
Yes, for recognized wheel input. Leave macOS Natural scrolling on to preserve the trackpad's native direction, then enable ScrollFix's Mausrad option. ScrollFix reads the macOS preference without changing it.
Dense, recognized line-wheel input uses a shorter smooth response, and reversing direction cancels the previous tail. ScrollFix does not identify a Logitech model or detect its mechanical wheel mode. Pixel-based driver output can bypass wheel processing. Results depend on the mouse, driver and target app.
It must intercept and change scroll movement across apps. Middle-click routing also checks Accessibility roles to preserve link clicks. The enabled Home/End feature also observes keyboard keycodes and modifiers. It does not record typed text or transmit events over a network. The optional Terminal setup reads and preserves your local shell startup file. See the exact scope in Privacy.
Device classification is heuristic: Quartz scroll phases and line-wheel events do not provide a documented per-event device identity. Unknown input passes through. High-resolution mice, unusual drivers, remote desktops and rapid device switches can remain ambiguous. Keep Natural scrolling on and test your own devices. Only vertical direction is corrected; another scroll utility can conflict.
ScrollFix uses Swift and SwiftUI with no external package dependencies. Automated checks help prevent regressions; real mouse, trackpad and keyboard tests are also needed. Users do not need to install or run the test suite. Developer verification details.
How it works · Contributing · Release requirements
Local builds are development artifacts. A public binary release requires Developer ID signing, Apple notarization and the release checks described above. Production does not retain QA event histories. A few transient timing values remain in memory; see Privacy.
Apache 2.0. License notices are in NOTICE; technical references are documented in Provenance.
Swift
96.8%
Shell
2.8%
Windows-style mouse scrolling for Mac: reverse mouse scroll direction, keep your trackpad natural, middle-click to autoscroll or open links in new tabs. Open-source macOS menu bar app.
Swift
13
7 commits
updated Oct 2, 2026
Reverse mouse scroll direction on macOS. Keep your trackpad natural. Middle-click to autoscroll or open a link in a new tab.
ScrollFix is an open-source Mac menu bar app for people who prefer Windows mouse behavior. macOS shares its Natural scrolling setting between mouse and trackpad. ScrollFix corrects recognized mouse-wheel input separately, with immediate wheel movement by default.
Installation guide · Build from source · Deutsch · Troubleshooting · Privacy

ScrollFix 0.3.2: mouse scrolling, middle-click and Home/End. UI labels are currently German.
ScrollFix also supports Home/End navigation and optional local zsh input selection. A global Ctrl/Cmd swap, Ctrl+wheel app zoom, Windows desktop shortcuts and display-quality changes are not included. See Terminal setup and compatibility.
Current version: 0.3.2. The source is updated; a verified DMG download is not available yet. The planned installer works like a normal Mac app: open the DMG, drag ScrollFix into Applications, then open it and allow macOS access. No Xcode or Terminal commands are needed with that download. Simple installation guide.
The maintainer still needs an Apple Developer ID certificate and notarization before publishing that DMG. Do not use the old preview expecting the features below.
The current features are available in the source. The old v0.1.0 preview does not include them. It is ad hoc signed, not notarized, and predates the signing changes. No new verified binary release is available yet.
Requirements: macOS 13 or newer, Swift 6, and the macOS SDK from Xcode or Command Line Tools. The default build targets your Mac. Set SCROLLFIX_BUILD_ARCHITECTURES=universal for Apple Silicon and Intel; the old preview is Apple Silicon only.
git clone https://github.com/eShok93/ScrollFix.git
cd ScrollFix
./scripts/build-app.sh
Move build/ScrollFix.app to /Applications, then open it there. Keep the app at that location when using login startup. The script signs local builds ad hoc; it does not notarize them. Rebuilding changes that local identity and may require renewing ScrollFix's macOS permission. Do not disable Gatekeeper globally.
The default wheel mode is Direkt (Windows). Mausrad, Mittelklick-Scrollen and Bei Anmeldung starten are enabled by default; saved choices are respected. macOS may also request permission to generate scroll movement for autoscroll or smooth scrolling. This means movement inside your apps, not sending data to a server.
In Feineinstellungen, click Terminal einrichten and confirm. ScrollFix backs up your startup file and installs the bundled module for your user. Open a new local zsh Terminal window afterward. No copied commands are required. Unsupported custom shell setups stay unchanged; see compatibility and removal.
| Mode in the app | Behavior |
|---|---|
| macOS | Keeps the native wheel distance, with ScrollFix's direction correction. |
| Direkt (Windows) | Moves immediately, with an adjustable minimum distance for small wheel steps. Default. |
| Weich | Spreads movement over frames for a soft start and short decay. |
Feineinstellungen is expanded by default. Scrollstrecke pro Radschritt adjusts the distance. These modes apply to recognized vertical line-wheel input; trackpad gestures, pixel-wheel streams and ambiguous input bypass the wheel-feel stage. Direct mode approximates the immediate feel of Windows, not an exact three-lines-per-notch setting across every app.
Click the wheel on ordinary content to set an autoscroll anchor. Move the pointer away to scroll vertically or horizontally. Another click stops scrolling.
On a recognized link, ScrollFix passes the original middle click to the browser. The browser decides whether to open a new tab. Controls, modified clicks and uncertain targets also keep their native behavior. Incomplete Accessibility support or custom canvas content can prevent link recognition or autoscroll. No click is copied or replayed. The middle-click filter now runs independently of the interface, with recovery for interrupted clicks and a bounded lookup for deeply nested links.
Yes, for recognized wheel input. Leave macOS Natural scrolling on to preserve the trackpad's native direction, then enable ScrollFix's Mausrad option. ScrollFix reads the macOS preference without changing it.
Dense, recognized line-wheel input uses a shorter smooth response, and reversing direction cancels the previous tail. ScrollFix does not identify a Logitech model or detect its mechanical wheel mode. Pixel-based driver output can bypass wheel processing. Results depend on the mouse, driver and target app.
It must intercept and change scroll movement across apps. Middle-click routing also checks Accessibility roles to preserve link clicks. The enabled Home/End feature also observes keyboard keycodes and modifiers. It does not record typed text or transmit events over a network. The optional Terminal setup reads and preserves your local shell startup file. See the exact scope in Privacy.
Device classification is heuristic: Quartz scroll phases and line-wheel events do not provide a documented per-event device identity. Unknown input passes through. High-resolution mice, unusual drivers, remote desktops and rapid device switches can remain ambiguous. Keep Natural scrolling on and test your own devices. Only vertical direction is corrected; another scroll utility can conflict.
ScrollFix uses Swift and SwiftUI with no external package dependencies. Automated checks help prevent regressions; real mouse, trackpad and keyboard tests are also needed. Users do not need to install or run the test suite. Developer verification details.
How it works · Contributing · Release requirements
Local builds are development artifacts. A public binary release requires Developer ID signing, Apple notarization and the release checks described above. Production does not retain QA event histories. A few transient timing values remain in memory; see Privacy.
Apache 2.0. License notices are in NOTICE; technical references are documented in Provenance.
Swift
96.8%
Shell
2.8%