Skip to content

feat(keychron): claim the M6 with its own driver instead of Pulsar's (rebased) - #135

Merged
snekxs merged 2 commits into
devfrom
codex-keychron-m6-app-resolved
Aug 29, 2026
Merged

feat(keychron): claim the M6 with its own driver instead of Pulsar's (rebased)#135
snekxs merged 2 commits into
devfrom
codex-keychron-m6-app-resolved

Conversation

@snekxs

Copy link
Copy Markdown
Member

Rebase of #128 onto dev after the protocol bump (#132), resolving the Keychron import conflict: dev's controller.ts had already switched the generic KeychronHidClient import to KeychronNapeHidClient (aliased) since the protocol package retired the generic driver; this keeps that alias and adds this PR's KeychronM6HidClient import alongside it. Build, bundle-size check, and full test suite (84/84) pass.

Closes#128.

ydw1904and others added 2 commits August 25, 2026 17:18
The M6 driver in @openmouse/protocol is enough for the registry to detect
the mouse, but not for the app to drive it: the sidebar lists it as
"Keychron · Available" and activating it fails with
client.describeCollections is not a function
pulsarClient() is a negative check — any active client not listed in
DEDICATED is assumed to be a Pulsar client and routed into
showPulsarExplorer(), which calls describeCollections(), a method only the
Pulsar drivers have. A new driver class is therefore broken by default
until it is named here, and the error points nowhere near the cause.
KeychronM6HidClient joins NEEDS_OPEN, next to the Nape Pro's
KeychronHidClient: its open() is what attaches the input-report listener
its query/reply exchanges depend on, and NEEDS_OPEN feeds DEDICATED, so
one entry covers both.
Verified on a wired Keychron M6: the device connects and reports 800 DPI,
500 Hz, and battery, and a DPI change flashes to the mouse and reads back.
Needs the M6 driver from OpenMouse-Project/mouse-protocol#33.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying openmouse with Cloudflare Pages Cloudflare Pages

Latest commit:b150ae9
Status: ✅ Deploy successful!
Preview URL:https://f79eb089.openmouse.pages.dev
Branch Preview URL:https://codex-keychron-m6-app-resolv.openmouse.pages.dev

View logs

@snekxs
snekxs merged commit c60eb75 into devAug 29, 2026
6 checks passed
@snekxs
snekxs deleted the codex-keychron-m6-app-resolved branch August 29, 2026 20:40
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

@snekxs@ydw1904