Better Mouse

August 30, 2026 · View on GitHub

A USB mouse remote for the Flipper Zero that actually feels like a mouse.

The stock USB Remote drives the pointer straight off the GUI input events, so holding a direction gives you one 5 px nudge, then 300 ms of nothing, then a burst of up to ten separate 20 px jumps every 150 ms. Better Mouse replaces that with a real motion loop.

What it does differently

  • Fixed-rate motion loop (50 Hz by default, configurable) instead of the 150 ms key-repeat rate, so movement is smooth and starts the instant you press.
  • Real diagonals — velocity is a vector, scaled so diagonal is not 1.41x faster than straight.
  • Continuous acceleration that eases from a pre-ramp speed up to your max, rather than jumping between a few fixed step sizes.
  • Sub-pixel accumulator, so slow speeds actually work. HID reports are int8, and keeping the fractional remainder is what makes precise creeping possible instead of rounding to zero.
  • Stops dead on release. Key state is read straight from the input service rather than the GUI queue, so a release is never delayed behind a redraw.
  • Ice mode — optional momentum, where the pointer coasts to a stop.

Controls

InputAction
Arrowsmove
OKleft click
OK holddrag lock — press OK again to drop
Back tapright click
Back hold + OKtoggle scroll mode
Back hold 0.8sdrop to menu (warns first)

The app opens straight into the mouse screen. Back from the menu exits.

Settings

Everything is a wide open numeric range, not a handful of presets: max speed, pre-ramp speed, accel ramp, scroll speed, report rate, ice glide, plus toggles for ice mode, invert Y, invert scroll and click vibro.

One real ceiling worth knowing: HID reports are int8, so 127 px per report. At 50 Hz that caps you around 6350 px/s no matter what you set — raise Report rate to lift it.

Install

Grab bettermouse.fap from the latest release and copy it to your Flipper under apps/USB/ with qFlipper — it shows up in Apps → USB. A prebuilt copy also sits in dist/.

Builds and runs on official firmware and on Momentum (Target 7, API 87.1). No custom firmware needed.

Build

Needs ufbt:

pip install ufbt
ufbt update                       # official firmware SDK
ufbt                              # build -> dist/bettermouse.fap
ufbt launch                       # build, upload and run

For Momentum instead, point ufbt at its SDK index:

ufbt update --index-url=https://up.momentum-fw.dev/firmware/directory.json

Note: while the app is running it holds the USB port as a HID device, so the serial port disappears and ufbt launch cannot reach the Flipper. Back out to the Flipper menu first.

Credits

  • App icon by SebStrt 🎨
  • Keypad artwork and the HID transport approach come from the USB Remote app in Momentum Firmware.
  • This is my first actual Vibe code, and yes i do feel bad for it 😭

License

GPL-3.0, matching the Flipper/Momentum firmware the bundled assets come from.