piper and input remapper for full control of my mouse was just a little too much, clunky and honestly nonsensical. Piper still doesnt report notifications or dpi profiles correctly, and honestly solaar kept breaking for me. this utility solves this. I created a program that does the simple, and keeps it simple. It isnt yet validated on all the hardware. the only mouse i have is a logitech g305. but it works flawlessly on fedora 44 with the g305 and im hoping others will give it a try GitHub - DonGeronimo7/mouse-control: Linux mouse remapping with keyboard-key capture and optional Libratbag/OpenRazer DPI and polling control. Fedora 44 RPM downloads. · GitHub
How do you use it? I mean what is the problem with Fedora defaults? (I am using Lenovo red button, so no idea what is going with rats on Linux)
I mostly use solaar, but never really had any issues. Either way, I tried out your project by installing from source. It doesn’t detect my Triathlon M720, or my G305.
$ sudo install -Dm644 src/mouse_control/udev/71-mouse-control-uaccess.rules /etc/udev/rules.d/71-mouse-control-uaccess.rules
[sudo] password for <user>:
$ less /etc/udev/rules.d/71-mouse-control-uaccess.rules
$ sudo udevadm control --reload-rules
$ mouse-control check-permissions
No readable mouse event device was found.
Install the Fedora RPM or review the supplied udev rule, then log out and back in.
$ mouse-control setup
=== Mouse Control Setup Wizard ===
System requirements: OK (optional hardware backend available)
No mouse devices found. Check input permissions.
@fatka have you checked if ratbagd.service is enabled?
This is great work, thank you. Piper never recognised my Logitech G502 X Plus. I stuck with the defaults and it was okay, but not able to adjust to exactly what I wanted. Now I have an afternoon of “fettling” ahead of me.
I just enabled it. But nothing is still detected.
$ sudo udevadm control --reload-rules
[sudo] password for user:
$ mouse-control setup
=== Mouse Control Setup Wizard ===
System requirements: OK (optional hardware backend available)
No mouse devices found. Check input permissions.
$ systemctl status ratbagd.service
● ratbagd.service - Daemon to introspect and modify configurable mice
Loaded: loaded (/usr/lib/systemd/system/ratbagd.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Sat 2026-09-12 15:55:19 CEST; 2min 8s ago
Invocation: 3e204931d56e4b359637b1b8dc369548
Main PID: 3442332 (ratbagd)
Tasks: 1 (limit: 38299)
Memory: 1.8M (peak: 2.8M)
CPU: 59ms
CGroup: /system.slice/ratbagd.service
└─3442332 /usr/bin/ratbagd
Sep 12 15:55:19 host systemd[1]: Starting ratbagd.service - Daemon to introspect and modify configurable mice...
Sep 12 15:55:19 host systemd[1]: Started ratbagd.service - Daemon to introspect and modify configurable mice.
It’s pretty simple. included in the downloads is a readme. essentially if everthing was packaged correctly you should be recommended dependencies and then just run mouse-control setup from the terminal. I have only verified this in fedora 44 with my g305.
I see, it looks like your mouse isnt recognized by the backend. I’m already working on a much more robust fallback backend.
Thank you man! Im going to add the G502 verification on to my list!
I’m on F43, working well with G502 X Plus
Just so you know some major validated updates just released. If system notifications are enabled and not stacking you will ALWAYS be notified of a DPI switch and a battery notification is always present in the system tray with charge status. The now Native HID++ backend is all inclusive without any dependencies on a deprecated project. All in I need more hardware for validation.
So this package provides mouse-control CLI app that allows to configure hardware settings for certain Logitech devices? Like if mouse pointer speed is not enough.
its generally for people with gaming mice or productivity mice. It provides an easy to use format to rebind buttons and change your dpi settings. it adds notifications on dpi switch and battery status in the system tray for wireless mice. the intent is to then add hardware support for anyone running the doctor command.
I see. DPI is dots per inch. High DPI means that less physical mouse movement makes more movement of cursor on the screen. That may drain more battery as well. so a notification is needed to avoid ruining a game session.
Does this doctor command is like a wizard that allows to inspect that my mouse/hardware is sending?
The doctor command shows the results of the new hardware and hid inspection code added. It will enable me to hopefully keep expanding the list of supported mice.
Honestly, I started building this as a basic Python script with a libratbag backend that could support my mouse DPI switches and button remaps without needing two separate programs—and without the dang notifications being broken for those DPI switches.
After I started coding with AI more, mostly because some of this became very complicated and I just wanted something that worked, I discovered something by actually reading the HID reports: there is a missing piece of the puzzle when it comes to supporting mice on Linux.
When you make these devices work, you’re essentially piecing together HID bits and protocol behavior. So I started wondering: what if the program could understand those pieces itself, using a broad repertoire of knowledge that dozens of people have worked hard to uncover over the years?
That’s what I think I ended up making.
The engine essentially pieces together HID information and behavioral evidence to figure out how to get every possible function of a mouse working. It has become an insane program compared with what I originally intended to build.
At this point, I mostly need testers.
I’ve tried to improve the readability of the program, but I’ve also security-tested it and validated its functions into the ground. I’ve stayed up for hours pressing the same button over and over and over again, confirming that this isn’t a fluke or some coding lie.
This is something different.