Conversation
The M6 driver is now Keychron8kHidClient (family "keychron-8k") and covers every Keychron mouse on Launcher's 0xffc1 protocol; the new Keychron1kHidClient (family "keychron-1k") covers usage page 0x8c. Both open before their first read, and the 1k family has no sleep card because its protocol has no sleep command. Button remapping, lighting, lift-off levels and 20K FPS come through the shared cards. Needs the protocol release that ships mouse-protocol's feat/keychron-launcher-mice and a version bump. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
|
Superseded by #440, which lands this change together with protocol 0.22.0. The Launcher rework in mouse-protocol#148 removes |
m4milaad
pushed a commit
to m4milaad/openmouse
that referenced
this pull request
Oct 1, 2026
…drivers Land the four device integrations that depend on protocol 0.22.0 together: Noir Gear M2-NEX (OpenMouse-Project#402), Keychron G3 Air (OpenMouse-Project#408), Rapoo VT9 Pro (OpenMouse-Project#422) and Keychron Launcher 8k/1k (OpenMouse-Project#426). The Launcher work removes KeychronM6HidClient with m6-hid, so the panel must switch to Keychron8k/1kHidClient in the same commit as the protocol bump. Raise the JS bundle budget to 2,085 kB for the combined additions (measured 1,995.2 kB).
snekxs
pushed a commit
that referenced
this pull request
Oct 3, 2026
…ebounce cards (#514) Protocol 0.22.0 reports ui.family "keychron-8k" (the M6 and most Keychron mice) and "keychron-1k", but BY_FAMILY still only knew the old "keychron-m6" family. Those mice lost their advanced section, and the 8k mice lost sleep and debounce. This is the traits half of the closed #426 that #440 did not carry over. Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Wires the Keychron drivers from OpenMouse-Project/mouse-protocol#148 into the panel:
KeychronM6HidClientis nowKeychron8kHidClient(@openmouse/protocol/drivers/keychron/mouse-8k-hid, familykeychron-8k), which covers the M6 and every other Keychron mouse on Launcher's0xffc1protocolKeychron1kHidClient(.../mouse-1k-hid, familykeychron-1k) covers Launcher's usage page0x8cprotocolNEEDS_OPENand the debounce fallback chaintraits.ts:keychron-m6becomeskeychron-8k(advanced section, sleep, debounce);keychron-1kgets the advanced section and debounce only, because that protocol has no sleep commandButton remapping, lighting, the lift-off slider, 20K FPS (
performanceMode), angle tuning and profiles all go through the shared cards, so nothing else changes.Depends on
OpenMouse-Project/mouse-protocol#148, then a protocol release and a bump from 0.19.0. Until then the two new subpaths do not exist in the pinned version, so this stays a draft.
Tested
npm run check(tsc, vite build, 241 tests) with the protocol branch linked locallynavigator.hid:0xffc1: connected as "Keychron M3" (Wired, 1000 Hz, 76%, Profile 2) with Performance (stage editor 4/5, Low/High lift-off, 125-1000 Hz, Motion Sync, angle snapping, ripple control, performance mode, angle tune), Lighting (Off/Static/Breathing single/Spectrum/Wave, brightness, colour, speed), Buttons (debounce and the 8-button remapper), Advanced (auto sleep) and Profiles. High lift-off + 500 Hz + performance mode, then Breathing single at 50%, then Forward to DPI Loop each reported "Flashed" and read back with the expected bytes on the fake mouse.0x8c: connected as "Keychron M3 KM" (Wired, 500 Hz, 58%) with no Profiles tab and no auto-sleep card; 1000 Hz + Motion Sync reported "Flashed 2 changes".Note
With lighting and the advanced section both on, the Advanced tab repeats the lighting card under a "RECEIVER" heading (
lightingAdvancedinavailability.ts). That is the existing behaviour for any driver with both, not something this PR adds; for Keychron the light is on the mouse, so the heading reads oddly. Left alone here because the gate is shared.Not tested on a real mouse yet.