Hey everyone!
I just got the Logitech MX Master 4 and was excited to use it across all my computers. I used to have a Logitech vertical mouse, but I switched for the gestures.
Now, I hit a snag: I've got a personal Mac, a Linux PC, and a Windows work machine. The Windows PC worked fine with Logi Options+ (v1.98.x) to customize the mouse, but on my Mac (Monterey 12.7.6), I can only use Logi Options+ v1.93.x, which doesn't fully support the MX Master 4. I found out that I need an app version of at least 1.95.x. I even tried running a VM with a newer macOS version to install v1.95.x, but the mouse still isn't recognized.
Since v1.98.x works on Windows, I'm thinking about creating my own version of "Logi Options+" to customize the mouse instead. I'm okay with voiding the warranty; I just want it to work properly.
From what I've researched, it seems like using AppKit with Swift on Xcode could be the right path, but I'm struggling a bit since I usually focus on data science and scripting rather than app-building.
Has anyone built a macOS app to work with hardware like this? What frameworks or approaches should I consider (or avoid)? Thanks for your help!
3 Answers
Unfortunately, unless someone has already figured out the communication and button states and published that info, it might be hard to achieve what you want. As far as I can tell, Logitech doesn’t provide a public API for this. It could be a tricky path.
Building your own app is ambitious, but it’s likely not needed! You can program the mouse's Mac profile directly on your Windows PC. Just switch to that profile on the mouse when you use it with your Mac, and it should work fine—no need for the Logi Options app on your Mac.
While Logitech's app is mainly made for Windows with limited support for Mac and Linux, I've built my own app for configuring a wireless headset. Check it out on GitHub [here](https://github.com/sidit77/headset-controller).
For your mouse, start by using a tool like Wireshark to monitor USB packets between your PC and mouse. Change a setting in the Logi Options app and see what packets are sent. Once you figure out the communication protocol, you can develop a Mac app that mimics those commands. It can be a bit tough, but worth looking into!

Are you kidding? If Logitech isn't deliberately hiding things, it’s generally possible to map out the communication protocol. You can use Wireshark with the USB port connected to your dongle, then click around in the Logitech software to match UI actions to what’s sent over USB. Usually, it’s just a HID endpoint that takes simple opcodes and parameters.