Skip to content

feat(devices): add Cooler Master MM711 support - #481

Merged
snekxs merged 3 commits into
OpenMouse-Project:mainfrom
Xander-Coetzee:feat/coolermaster-mm711
Oct 3, 2026
Merged

snekxs merged 3 commits into
OpenMouse-Project:mainfrom
Xander-Coetzee:feat/coolermaster-mm711

Conversation

@Xander-Coetzee

@Xander-Coetzee Xander-Coetzee commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

What this changes

mouse-protocol gains a Cooler Master codec and a CoolerMasterHidClient for the Cooler Master MM711 (0x2516:0x0101). This adds that client to NEEDS_OPEN, the list of clients the controller opens on connect, and registers the family traits and supported device entry.

Changes

  • Controller (src/device/controller.ts): Imports CoolerMasterHidClient from @openmouse/protocol/drivers/coolermaster/hid and registers it in NEEDS_OPEN so the device is pre-opened and event listeners hooked on connection.
  • Traits (src/device/traits.ts): Adds "cooler master": { advancedSection: true, debounce: true } family traits so debounce card and advanced settings render properly.
  • Supported Devices (src/supported-devices-data.ts): Updates Cooler Master MM711 status to "supported" with PID [0x0101].
  • Artwork Mapping (src/ui/device-images.ts): Added Cooler Master MM711 mapping (coolermaster-mm711.png) pointing to the R2 bucket URL, with provenance documented in public/devices/README.md.

Features exposed in UI

  • DPI: 7-stage sensitivity card with stage editor, per-axis DPI, and stage count editor.
  • Polling Rate: 125, 250, 500, 1000 Hz.
  • Debounce: 4–32 ms slider/dropdown in Advanced Settings.
  • Sensor Processing: Lift-off distance (Low/High), angle snapping toggle, angle tuning slider (-30° to +30°).
  • RGB Lighting: Dual-zone Lighting card ("Scroll wheel" and "Logo") with Static color picker, Breathing single/random with speed controls, Color Cycling, and Off.

Verification

  • Verified against local @openmouse/protocol package using official CONTRIBUTING.md integration steps (npm install --no-save --package-lock=false ../mouse-protocol).
  • Ran npm run check: TypeScript check passed with 0 errors, Vite production bundle built successfully, and all 255 test cases passed cleanly.

Companion PR

OpenMouse-Project/mouse-protocol#153 (the driver and codec itself).

Depends on the protocol release

This PR needs the companion mouse-protocol PR to be merged and published: until then the @openmouse/protocol version in package.json has no drivers/coolermaster/hid, so the import cannot resolve in CI. That dependency is bumped from the published release by .github/workflows/update-protocol.yml, which is why this PR does not touch package.json itself.

Keeping it a draft until that release exists.

@snekxs

snekxs commented Oct 3, 2026

Copy link
Copy Markdown
Member

Status check: this is blocked on the companion driver PR (mouse-protocol#153) being merged + published — @openmouse/protocol@0.22.0 has no drivers/coolermaster/hid yet, so the controller import can't resolve in CI (that's why check runs show action_required, not pass/fail).

Once the protocol release lands, bump via .github/workflows/update-protocol.yml and this should go green. Code-side review of the traits/data/artwork hunks looks fine; also note main moved underneath (S1 #452, Keychron traits #514, and the E1 rebase in progress touches the same traits.ts neighborhood — likely a small rebase needed on your side).

- Register CoolerMasterHidClient in controller NEEDS_OPEN list
- Add Cooler Master family traits for debounce and advanced settings
- Update supported devices list with MM711 (PID 0x0101)
@snekxs
snekxs force-pushed the feat/coolermaster-mm711 branch from b1421c0 to 269318e Compare October 3, 2026 20:11
@snekxs
snekxs merged commit b0f6af8 into OpenMouse-Project:main Oct 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants