feat(keychron): wire the G3 Air into the panel - #408
Merged
Merged
Conversation
Keychron8kNordicHidClient (family keychron-8k-nordic, from mouse-protocol) gets the advanced section with the sleep and debounce cards, since it reads and writes both and publishes its own option lists. It joins NEEDS_OPEN so the device opens before the first read. DPI stages, polling, lift-off, the processing toggles, angle tuning, profiles and the button remapper all dispatch generically. Needs a protocol release with the driver and a bump from 0.19.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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).
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 G3 Air driver from OpenMouse-Project/mouse-protocol#145 (
Keychron8kNordicHidClient, familykeychron-8k-nordic) into the panel:traits.tsgives the family the advanced section with the sleep and debounce cards; the driver reads and writes both and publishes its own option listsNEEDS_OPEN, so the device is opened before the first readDPI stages, polling, lift-off, the processing toggles, angle tuning, onboard profiles and the button remapper all dispatch generically, so they need nothing here.
Depends on
OpenMouse-Project/mouse-protocol#145, then a protocol release and a bump from 0.19.0. Until then
@openmouse/protocol/drivers/keychron/mouse-8k-nordic-hiddoes 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: it connected as "Keychron G3 Air" (Wired, 1000 Hz, 76%, Profile 2). Performance showed the stage editor (3/5), Low/Medium/High lift-off, 125 Hz to 8K, Motion Sync, angle snapping, ripple control, performance mode and angle tune; Buttons showed debounce and the five-button remapper; Advanced showed auto sleep; Profiles showed the five-profile selector. Applying 8K + High + angle snapping, then Forward to DPI Loop + 4 ms debounce, then 30 minute sleep, then Profile 4 each reported "Flashed" and read back with the expected bytes on the fake mouse.Not tested on a real mouse yet.