Remap buttons
Reassign mouse buttons to any of 44 built-in actions via the interactive diagram or config file.
Reassign your Logitech mouse's reprogrammable buttons from the GUI's interactive
diagram: click a button hotspot — or its label card — and pick from 44
built-in actions, from Copy/Paste to MissionControl, media keys, real
mouse button 4/5 (MouseBack/MouseForward), and CycleDpiPresets. Left and
right clicks always pass through; everything else
can be remapped, scoped per app, and saved to your TOML
config.
From the GUI
Select the mouse in the device carousel and open its Buttons tab. It shows an interactive diagram of the mouse — the device's own artwork when OpenLogi has it, or a synthetic silhouette otherwise — with a hotspot dot over each reprogrammable button and a leader line out to a label card on the side.
- Hotspot dot or label card — two entry points into the same flow. Hovering highlights the button; the label card reads the current binding, or Unbound if there's none. Clicking either opens a small popover.
- Action picker — a scrollable list of the catalog grouped by category (Mouse, Editing, Browser, Navigation, System, Media, DPI, Scroll). The current binding is checked. Clicking a row commits it and closes the popover. Picking Do Nothing captures the input but does nothing.
- Custom bindings — the picker also authors a Custom shortcut (type a
chord such as
Cmd+Shift+P) and Open application (an app, folder, path, or URL). A Power User section addsTypeText,RunAppleScript,RunShellCommand, and multi-stepWorkflowbindings. - Gestures — a gesture-capable button's picker leads with a pinned Gestures row. Clicking it promotes that button into gesture mode: its single action becomes the Click arm and the four swipe arms seed from the defaults. Reopening the popover then lands on the gesture menu: a plus-shaped navigator listing Up, Down, Left, Right, and Click, each opening the full action catalog, with a footer row that demotes the button back to a single action.
Any number of buttons can be in gesture mode at once: the middle, back, and forward buttons as readily as the dedicated Gesture Button or the MX Master 4's Haptic Sense Panel. This is something Options+ doesn't offer: it pins the gesture role to the dedicated thumb pad.
How buttons are captured
Capture is split across two paths, both ending in the same action dispatcher:
- The OS hook — a CGEventTap on macOS, evdev/uinput on Linux, a
WH_MOUSE_LLhook on Windows — owns the side buttons: Back, Forward, and the middle click. On macOS it needs Accessibility permission; on Linux, the udev rules from the package. - HID++
0x1b04reprogControlsV4 diverts the Gesture Button and the Haptic Sense Panel (read as raw swipe travel), the DpiToggle (mode-shift) button, and any keyboard F-row key you bind. The thumb wheel diverts over0x2150thumbwheel when its sensitivity leaves the default, or when its click or a rotation direction is rebound.
A gesture is told apart from a click by hold and travel: held past 160 ms with at least 50 raw-XY units of travel on the dominant axis commits a directional swipe; a quick tap fires the Click arm on release.
Capture runs per device from a plan the agent rebuilds whenever your bindings change, so only the controls you actually bound are diverted; everything else keeps its native firmware behaviour.
In the config
Bindings persist per device as plain TOML keyed by the device's physical key. Action names serialize verbatim, so they read the same as the picker:
[devices."receiver:aabbccdd:slot:1".bindings]
Back = "BrowserBack"
Forward = "BrowserForward"
MiddleClick = "MissionControl"
HapticPanel = "ShowActionsRing"
# A gesture-mode button binds per direction; Click is the plain press.
[devices."receiver:aabbccdd:slot:1".bindings.GestureButton]
Left = "PrevTab"
Right = "NextTab"
Click = "PlayPause"The same keys can live under per_app_bindings."<app-id>" to win only while a
given app is frontmost. See Configuration for the
full button and action vocabulary, and
Per-app profiles for the overlay rules.
Quit Logi Options+ first so OpenLogi can own the device. On macOS the event tap needs Accessibility permission to remap the side buttons; the HID++ paths (gesture button, haptic panel, DpiToggle, thumb wheel) don't. Bindings are saved per device, so with no device selected they're held in memory only until one is.
Status: macOS, Linux, and Windows. See the
roadmap for per-platform detail and
0x1b04 reprogControls5
for the protocol.