Skip to content

feat: add Redragon Predator M612 support - #146

Merged
snekxs merged 1 commit into
OpenMouse-Project:mainfrom
radozea:feat/redragon-m612
Sep 30, 2026
Merged

snekxs merged 1 commit into
OpenMouse-Project:mainfrom
radozea:feat/redragon-m612

Conversation

@radozea

@radozea radozea commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

Adds the Redragon Predator M612 (04d9:fc61, wired, Holtek, bcdDevice 1.10) to the Redragon driver. It uses the same transport as the M724 K1NG 1K, but unlike the M724 it answers reads, so every value is read from the mouse and every write is read back before it is reported as done.

Supported, all verified on hardware

  • DPI stages (5 per profile, 500-8000 on RDCfg's own 146-position table), active DPI stage, polling rate (125/250/500/1000 Hz)
  • Onboard profiles (5), via the shared profile selector
  • Lighting (global): Static, Breathing single, Breathing random, Wave, Off, with colour, 8 speeds, and 3 brightness levels
  • Button remapping for all 11 slots per profile (buttons 1-9, wheel up/down): mouse buttons, scroll, rapid fire, DPI/profile/polling/lighting actions, disabled, RDCfg's named shortcuts, and single keyboard keys. It refuses to remove a profile's last left click.

Only Redragon files change. RedragonHidClient's constructor returns a RedragonM612HidClient subclass for 0xfc61, so the registry, filters, and shared types are untouched. The M724 path sends the same bytes as before, and its tests are unchanged. If you'd rather have a separate registry entry, that's a small change.

Evidence

  • RDCfg 1.0.58 (Redragon's M612 download) run under Wine and captured with usbmon: startup push, one Apply per control change, diffed. The frame is [02 F3 addrLo addrHi len 00 00 00 data]; the read [02 F2 addrLo addrHi len] (the command byte comes from dokutan/mouse_m908's M908 reader) answers on the next GET_FEATURE.
  • RDCfg's DPI labels were read from its slider and cross-checked by matching its bitmap-font glyphs (146/146).
  • Hardware: Linux, Chrome 154 WebHID, OpenMouse BETA v2.0.1 with this package linked locally. OpenMouse's built-in hardware test passed (captures/redragon-m612/openmouse-hardware-test.json). Live effects were confirmed from usbmon interrupt-IN data:
    • polling 500 -> 250 -> 1000 Hz;
    • motion per report tracking DPI edits;
    • remapped buttons sending the assigned reports (left/right click, key 04, Ctrl+06, wheel -1, the mouse's DPI-stage report, nothing when disabled).
  • Lighting changes were confirmed visually.

Details, the settings map, and per-feature evidence: docs/redragon-m612-testing.md.

Not included

  • Macros: no generic macro editor exists. Slots holding a macro show as a vendor action.
  • RDCfg's FLASH effect: no matching MouseLightingMode, so it reads as no mode.
  • RDCfg's media/browser keys and its Advance dialogs (fire speed/count, sniper, free-form combos): not captured.

Checks

  • npm run check: all tests pass, including 25 new M612 tests in src/drivers/redragon/m612.test.ts.
  • OpenMouse npm run check against this package passes.

No OpenMouse change is required. Optionally, the supported-devices page could move "PREDATOR M612" from Driver Needed to Supported (pids: [0xfc61]).

🤖 Generated with Claude Code

Adds the Predator M612 (04d9:fc61) to the Redragon driver. It shares
the M724 transport but answers F2 reads, so values are read from the
mouse and every write is read back.

Supports DPI stages, active stage, polling rate, onboard profiles,
lighting (static, breathing, spectrum breathing, wave, off; colour,
speed, brightness), and button remapping (mouse, scroll, DPI/profile/
polling/lighting actions, shortcuts, keyboard keys). All verified on
hardware; evidence in docs/redragon-m612-testing.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@radozea

radozea commented Sep 30, 2026

Copy link
Copy Markdown
Contributor Author

yes i did use ai to code it but i thoroughly tested it and i understand what it does

@radozea

radozea commented Sep 30, 2026

Copy link
Copy Markdown
Contributor Author

yawn

@snekxs
snekxs merged commit f02714c into OpenMouse-Project:main Sep 30, 2026
4 of 5 checks passed
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 0.21.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants