Everything Logi Options+ did for your buttons, in one small native app.
Upright lives in the menu bar, looks like part of macOS, and only does what you set up.
Buttons
Give every button a job.
Map Back, Forward, the top button, the wheel click and any other button your mouse lets software take over to Mission Control, a keyboard shortcut, an app, a URL or a Shortcuts.app shortcut.
Mission Control
App Exposé
Show Desktop
Spaces
Media keys
Any shortcut
Open App
Run Shortcut
Gestures
One button, five actions.
Set a button to Gestures and it gets a click plus hold-and-move up, down, left or right, while the mouse reports raw movement so the cursor stays where it is.
UpShow Desktop
LeftSpace left
RightSpace right
DownApp Exposé
ClickMission Control
Per-app profiles
Different buttons for different apps.
Keep one global setup and let apps override single buttons while they're in front, so in Safari the thumb buttons switch tabs and everywhere else they go back and forward.
Several mice · Battery alerts
Every mouse you own, at once.
USB cable, Bluetooth, Unifying, Bolt or Nano in any mix: each mouse gets its own row with its connection and battery, and a mouse that's asleep never holds up the others.
Low-battery alerts at 15% and 5%, for each mouse.
Pointer speed
Pick a speed. Keep it.
Set the DPI with a slider, save presets and map a button to cycle through them; Upright applies your speed again whenever the mouse reconnects, rounded to what that mouse supports.
Mice with ADJUSTABLE_DPI (0x2201)
Wheel vs trackpad
Set the wheel apart from the trackpad.
Reverse the mouse wheel without touching the trackpad's Natural Scrolling, change the speed from 0.5× to 3×, or try the experimental smooth scrolling, all off until you turn it on.
Privacy
Leaves nothing behind.
Upright talks to your mouse and nothing else. It doesn't phone home or collect anything.
Nothing written to the mouse
Buttons are only diverted while Upright runs. Quit it, or switch the mouse off and on, and every button is back to factory behavior.
No drivers, no daemon
One native SwiftUI app in your menu bar. No kernel extension, no background service, no Logitech software and no account.
Never reads your typing
Upright only opens Logitech HID interfaces and only sends the actions you assign. Keyboards are never opened.
What Upright touches
Your mouse
Buttons diverted while it runs, handed back when it quits
Your keyboard
Never opened
The network
Doesn't phone home or collect anything
Permissions
Accessibility, to send the actions you assign
HID++ 2.0 over USB, Bluetooth and receivers0x1B04 REPROG_CONTROLS_V40x2201 ADJUSTABLE_DPIWritten from public protocol documentation only
Supported mice
Built on the MX Vertical. Ready for more.
The MX Vertical is tested on real hardware. Twenty-two more models are in the catalog, built from published device data and tested against Upright's mouse simulator, so they're expected to work but haven't been verified on hardware yet.
Connections: USB cable, Bluetooth, Unifying, Bolt and Nano receivers. G-series and PRO gaming mice keep their buttons in onboard profiles and aren't supported.
The release build isn't notarized by Apple, so Gatekeeper blocks the first launch. On macOS 15 or later, try to open Upright.app, then go to System Settings → Privacy & Security, scroll down to the message about Upright and click Open Anyway. On macOS 13 or 14, right-click Upright.app, choose Open, then Open again. You only need to do this once. If it still refuses, run:
Yes. It's open source under the MIT license, with no account and no subscription.
Which mice work?
The MX Vertical is verified on real hardware. Other Logitech mice that speak HID++ 2.0 and have programmable buttons are expected to work, including the MX Master, MX Anywhere, MX Ergo and Lift families, but they haven't been verified on hardware yet. Upright decides by what a mouse answers, not by its name, so mice outside the catalog can work too.
macOS won't open Upright the first time. What do I do?
A build that isn't notarized is blocked by Gatekeeper on first launch. On macOS 15 or later, try to open Upright.app, then go to System Settings → Privacy & Security, scroll down to the message about Upright and click Open Anyway. On macOS 13 or 14, right-click Upright.app, choose Open, then Open again. You only need to do this once.
Do I need to remove Logi Options+?
Quit it and take it out of your login items while you use Upright. Logi Options+, Solaar and LogiOps divert the same buttons, and only one app can have them.
Does it change my mouse permanently?
No. Nothing is written to the mouse's memory. Quit Upright and your buttons go back to normal straight away.
What permissions does it ask for?
Accessibility, to send the shortcuts, clicks and media keys your buttons are mapped to. Input Monitoring only if macOS hides a mouse over Bluetooth. Mission Control actions, opening apps and pointer speed work without either.
Can I build it myself?
Yes. Open Upright.xcodeproj in Xcode 15.3 or later and press ⌘R. You don't need an Apple Developer account.
How do I uninstall it?
Turn off Open at login in Settings → General if you turned it on, quit Upright and delete Upright.app. Nothing was written to the mouse, so there's nothing to undo there. The install guide also shows how to remove its settings.
Put every button to work.
Free, open source, and about a minute from download to your first remapped button.