Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

deepzz

macrumors newbie
Original poster
Hi everyone — developer here.

02-button-mapping.png

Third-party mice on macOS are frustrating. Smooth scrolling is a coin flip depending on the driver. Side buttons either do nothing or you have to install Logi Options+ / Razer Synapse / Kensington's whatever — huge installers, background daemons, forced accounts, and they still don't recognize half the mice on the market.

LinguaX is a ~10 MB native menu-bar app that adds Logi-Options+-style polish to any USB or Bluetooth mouse on macOS. No account, no telemetry, no daemon.

Core: mouse enhancement
  • Smooth pixel-level scrolling (with per-app tuning) — works on any mouse, not just Logitech
  • Side-button mapping — map thumb buttons to any action: launch an app, media keys, a custom shortcut, a script
  • Gesture mapping — middle-click / rocker / tilt if your mouse has them
  • Compatibility database for popular gaming and productivity mice so side buttons work out of the box

Two more things it does, because they shared the same plumbing:
  • Push-to-talk voice typing — hold a side button, speak, release, text lands in any app (hands never leave the mouse)
  • Automatic input source switching — one rule per app, one per website; input source follows your focus (useful if you type in more than one language)

Tech / compatibility
  • macOS 13+, native Apple Silicon + Intel
  • ~10 MB, menu bar only, no dock icon
  • Zero telemetry, all local, no account required
  • Sparkle auto-updates

Pricing: 30-day full-feature trial, then $9.90 lifetime. No subscription.

Download: https://linguax.app

If you use a non-Logitech mouse and Options+ still won't recognize it, or you just don't want yet another vendor daemon in your menu bar, I'd love feedback — especially on which mice/behaviors you'd like to see in the compatibility DB.
 
  • Like
Reactions: tulon
This is the exact space I'm in too (menu bar utility, no daemon, no account), so genuinely curious about the mechanism here. For system-wide side-button remapping and pixel-level scroll smoothing without a vendor daemon, are you going through IOHIDManager directly, or CGEventTap on the button/scroll events? And does that end up needing Accessibility permission from the user, or does raw HID access get you far enough without it?

Also curious how you're handling notarization/Gatekeeper for a direct-download app like this vs sandbox restrictions, since low-level HID stuff is usually the first thing that gets fought by the sandbox if anyone ever considers a Mac App Store version.

The input-source-switching-by-app-focus feature is a nice touch, that's the kind of thing you only add once you've felt the annoyance yourself.
 
Thanks — good questions. It’s actually a hybrid rather than an either/or.

LinguaX uses IOHIDManager/IOHIDQueue for device discovery and raw HID input, especially for buttons and vendor-specific reports that don’t reliably appear as normal mouse events.
CGEventTap handles the system event path: intercepting/remapping mouse buttons and replacing discrete wheel events with synthesized pixel-level/inertial scrolling.

Raw HID access alone isn’t quite enough for the full feature set, so the current build requires both Input Monitoring and Accessibility permission. “No daemon” here means there’s no
separate privileged helper or vendor background service; everything runs in the menu-bar app process.

For distribution, it’s a Developer ID direct-download build with Hardened Runtime enabled and App Sandbox disabled. I’m using the standard notarization/Gatekeeper flow. I don’t think
the current low-level implementation could move into the Mac App Store sandbox unchanged without either dropping capabilities or substantially redesigning that part, so direct
distribution is a deliberate choice for now.

And yes, the input-source switching feature came directly from having that annoyance every day. 🙂
 
  • Like
Reactions: tulon
st.deepzz.com is used solely for automatic update checks (via Sparkle framework to check for new app versions).

api.deepzz.com is required for license activation and validation when purchasing or registering the app.

Neither endpoint collects personal data or user telemetry.
 
st.deepzz.com is used solely for automatic update checks (via Sparkle framework to check for new app versions).

api.deepzz.com is required for license activation and validation when purchasing or registering the app.

Neither endpoint collects personal data or user telemetry.
All should be user choices, not default settings.
"Do you allow LinguaX to find devices on local networks?"
No. I never used a Bluetooth mouse.
“Do you want to enable automatic updates checks?”
No, I’ve just downloaded the latest version.
“Do you want to register?”
No, let me at least test the app first.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.