What this project does
The driver opens the MX mouse input device, tracks movement while a configured button is held, classifies the gesture direction, and injects the mapped key combination through a virtual keyboard.
A Linux gesture driver for Logitech MX mice that watches raw mouse events and turns hold-and-move gestures into keyboard shortcuts through /dev/uinput.
The driver opens the MX mouse input device, tracks movement while a configured button is held, classifies the gesture direction, and injects the mapped key combination through a virtual keyboard.
It does not provide GNOME UI by itself. If you want a Quick Settings toggle inside GNOME Shell, pair it with MX3 Control for GNOME.
mx3Install this driver first. Then install the GNOME extension if you want per-session controls in Quick Settings. The extension depends on the mx3 command from this repository.
make
sudo make install
sudo modprobe uinput
sudo udevadm control --reload-rules && sudo udevadm trigger
sudo systemctl daemon-reload
sudo systemctl enable --now mx3
sudo systemctl status mx3
The supported production path is the packaged root-managed systemd service.
Scans /dev/input/event* for a matching Logitech mouse.
Creates a virtual keyboard through /dev/uinput.
Watches button presses and accumulates mouse movement.
Classifies the result as tap, directional swipe, or diagonal gesture.
Looks up the mapped action in the INI config and injects the key combo.
Forward, back, middle, extra, side scroll click, and thumb gesture buttons can all be mapped.
tap, left, right, up, down, and the four diagonal directions.
Configuration is loaded from the first matching file in the documented search order, with built-in defaults when no file is found.
The driver runs as a normal Linux service or CLI process and handles gestures on its own. This is the core functionality.
The GNOME extension starts mx3 --daemon --pid-file=/tmp/mx3.pid, watches the PID file, checks whether the process still exists, and exposes start, stop, and restart controls in Quick Settings.
Best for a production Linux setup. Use the packaged systemd service and manage logs with journalctl.
Best when you want a desktop toggle. Install the extension after the driver, verify mx3 --help works in your GNOME session, then control it from Quick Settings.
Tracks service model, packaging, permissions, and release gating work.
Documents version alignment, package validation, and release artifacts.
sudo journalctl -u mx3 -f for service logssudo mx3 -l debug for foreground debugging/dev/uinput exists and the uinput module is loadedmx3 -d /dev/input/eventN if autodetection misses your mouse