Skip to content

Add MCHOSE A7 V2 and MagDock support - #171

Merged
snekxs merged 1 commit into
OpenMouse-Project:control-panelfrom
jamezrin:add-mchose-support
Sep 6, 2026
Merged

Add MCHOSE A7 V2 and MagDock support#171
snekxs merged 1 commit into
OpenMouse-Project:control-panelfrom
jamezrin:add-mchose-support

Conversation

@jamezrin

Copy link
Copy Markdown
Contributor

Wires up the MCHOSE drivers and adds the small, brand-agnostic controls they need.

Depends on OpenMouse-Project/mouse-protocol#55. This app installs @openmouse/protocol from its git URL, so that one has to land first.

Verified against an A7 V2 Ultra+ over both its 2.4 GHz receiver and its cable.

Device wiring

  • both clients (mouse + MagDock) imported and added to NEEDS_OPEN
  • an mchose traits entry so the debounce and sleep cards appear
  • A7 V2 rows and the MagDock in supported-mice, PIDs pinned
  • device-image mappings for the family — the art itself still needs a bucket upload, so these resolve to the placeholder until then. Happy to open a separate artwork request; I have a clean render of the A7 V2 ready to hand over.

Four shared controls instead of a brand-specific card set

Rather than add a second pile of vendor cards, each of these is driven purely by what a driver reports, and hides itself when a driver doesn't populate the fields:

ControlDriven by
Numbered onboard-profile selector, showing device-stored names where they existprofileCount / activeProfile / setProfile
Button remapperbuttonMappings / buttonOptions / setButtonMapping
Named power-mode selector + angle tuningpowerModes / setPowerMode / setAngleTuning
Sleep options and debounce ceilingnow read from any client that publishes them, not just direct-mode drivers

Existing brand cards are untouched.

One small shared fix: sleepLabel renders 0 as "Never", for firmwares that use zero to mean no auto-sleep.

🤖 Generated with Claude Code

Wires up the MCHOSE drivers from @openmouse/protocol and adds the small,
brand-agnostic controls they need. Verified against an A7 V2 Ultra+ over both
its 2.4 GHz receiver and its cable.
Device wiring:
- both clients imported and added to NEEDS_OPEN
- mchose traits entry so the debounce and sleep cards appear
- A7 V2 rows and the MagDock in supported-mice, with their PIDs pinned
- device-image mappings for the family; the art itself still needs a bucket
upload, so these resolve to the placeholder until then
Rather than add a second set of brand-specific cards, four shared controls are
introduced, each driven purely by what a driver reports:
- a numbered onboard-profile selector (profileCount / activeProfile /
setProfile), showing device-stored names where they exist
- a button remapper (buttonMappings / buttonOptions / setButtonMapping)
- a named power-mode selector plus angle tuning (powerModes / setPowerMode,
setAngleTuning)
- sleep options and a debounce ceiling are now read from any client that
publishes them, not just direct-mode drivers
Existing brand cards are untouched; every new control hides itself when a
driver does not populate its fields. sleepLabel renders 0 as "Never" for
firmwares that treat zero as no auto-sleep.
Depends on the MCHOSE driver landing in @openmouse/protocol first, since this
app installs that package from its git URL.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@snekxs
snekxs merged commit 07595b4 into OpenMouse-Project:control-panelSep 6, 2026
Sign up for freeto 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

@jamezrin@snekxs