Third-party mice, just as good on macOS
A native macOS app that fills in everything macOS leaves out for a third-party mouse.
- Smooth Scrolling
- Button Mapping
- Hardware control
- Push-to-talk dictation
- Input source switching
macOS 13.3 or later, Apple Silicon or Intel. Release notes →
Wheel events, untouched
one jump per detent, no frames in between
Through the Standard Scroll Curve
spread over the curve you set below
Put the pointer over the panels and turn the wheel.
Both panels get the same wheel events from your mouse. The left one applies them the way your system hands them over; the right one runs them through the Scroll Curve, the same code that ships in the app. Move the sliders to reshape the curve.

DPI, SmartShift, battery and the control table, read and written over HID++. No Logitech software running, no account.

Switch input source by front app, or by the domain of the browser tab you are actually looking at.
Three things it does
Smooth Scrolling
Replaces the discrete scroll-wheel events your mouse sends with synthesized, pixel-level inertial scrolling. The Scroll Curve (minimum step, velocity gain, duration, decay) is edited visually with a live preview, and can be overridden per app.
Wheel events, untouched
56 px
one jump per detent, no frames in between
Through the Standard Scroll Curve
56 px · 320 ms
most of the distance lands in the first few frames
Button Mapping
A button holds a list of Triggers, and each Trigger points at exactly one Action. Here, click sends a keyboard shortcut and long press holds a modifier down. Triggers go up to a four-way drag, a Chord, or Hold + Scroll; Actions go up to an AppleScript or a shell command. Both can be overridden per app.
Wheel Mode Button
Click
Keyboard shortcutfnSpaceLong press
Hold modifierfnHeld only while the mouse button is down.
DPI, SmartShift and battery
On a mouse MouseTuner recognizes, it reads and writes these over HID++, the same wire protocol Logitech's own software speaks. No Logitech software running, no account. Any other mouse still gets Smooth Scrolling and Button Mapping.
MX Master 3S Bluetooth
DPI1000SmartShiftRatchetAuto-disengage threshold10Only used while SmartShift follows the device.
Battery85%Buttons7 buttons
Hold a side button, talk, let go
Modifier Hold is the one Action with a beginning and an end. Map it to Fn and any push-to-talk dictation tool starts and stops with your thumb.
Shipping notes for this week:
Click the Wheel Mode Button to start talking, or press and hold it.fn up · 0.00 s
- Map a side button's long press to Hold modifier → Fn.
- Hold the button and speak. The tool records for exactly as long as you hold.
- Let go. The modifier is released and the button goes back to doing nothing.
Works with anything that listens for a held key: Typeless, Wispr Flow, superwhisper, macOS Dictation.
A modifier stuck in the down position is the worst thing this app could do to you, so the Buttons panel always carries a “Release Held Modifiers” button, and the engine releases on app switch, on permission loss, and on tap failure.
One less thing to switch by hand
Rules pick your input source by front app, or by the domain of the browser tab you are on. Matching falls back from the exact host to its parent domain and ignores a www. prefix. Reading a browser's URL needs Accessibility; switching by app does not.
Domain Rule — the tab you are looking at right now
gist.github.com → no rule → github.com → ABC
App Rule — the front application
not reached
Global default — everything else
not reached
Switch the frontmost app or tab. The first layer that matches decides the input source; the layers under it are never consulted.
What's different
A native Swift app
MouseTuner isn't sandboxed, which is what lets it read raw HID input and intercept global events in the first place. That also means no Mac App Store distribution: it ships Developer ID–signed and notarized, plus a Homebrew Cask.
A network request list you can check yourself
Every outbound connection the app makes is documented on the privacy page with its trigger, destination, and payload, including the two that can't be turned off. You can check the whole list against a packet capture.
Read the full request list →Hardware control is included
HID++ device control (DPI, SmartShift, battery) is there from the start. There is one version of the app, with no features held back for a paid step up.
Unmapped keys behave like MouseTuner isn't installed
That is the default. Anything without a mapping, any device without a profile, any feature without permission: the behavior stays identical to not having the app, and the interface explains why.
Wheel Mode Button
0x00C4 → Hold modifier · fn
The one button on this mouse with a mapping. Hold it and Fn stays down for exactly as long as you hold it.
$9.9 once, three machines
Thirty days of everything with no account and no card, then a one-time purchase. Fourteen days to change your mind, no questions asked.
Questions
Will it work with my mouse?
Smooth Scrolling and Button Mapping work with any mouse. They operate on system input events, not on the device. The extra HID++ controls need a Device Profile, and those are still being captured on real hardware.
What about my trackpad?
Untouched. Smooth Scrolling applies to wheel mice only; trackpads and the Magic Mouse already send pixel-level events and pass straight through.
Why isn't it on the Mac App Store?
Raw HID access and global event interception are both unavailable under the App Sandbox, and the App Store requires it. So it ships Developer ID–signed and notarized, with a Homebrew Cask, and updates through Sparkle.
What happens when the trial ends?
Enhanced features (Scroll Curve customization, Button Mapping, HID++ device control) turn off. The app keeps running with default OS behavior; nothing stops working, it just stops doing more than the OS already does.
Try it for 30 days, no account required
Full features, no sign-up, no credit card. If it's not for you, it's a refund within 14 days of buying, no questions asked.
Download MouseTuner



