feat(gwolves): add HTX Ultra driver (wired + wireless) - #31
Open
defendercf wants to merge 1 commit into
Open
Conversation
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.
Protocol
The protocol was captured live from the official G-Wolves web driver at
mouse.fit (patching
HIDDevice.prototype.sendReport/inputreportin thebrowser console), then independently reproduced with
hidapitesterwithno browser involved. It's the same shared VGN-family reference design
already implemented for the VGN Dragonfly F2 Master+ and the Pulsar 4K
Wireless Receiver — 16-byte packets on output report 8:
0x08, Write: opcode0x07, at a 16-bit address85 - sum(bytes[0..14]) - reportId85 - sum(precedingPayloadBytes)(confirmed on everycaptured packet, DPI/LOD/all 7 polling rates)
(dpi/50)-1encodingPROTOCOL-NOTES.md, attached below, for the full derivation)
confirmed by capturing all three)
Changes
src/gwolves/index.ts- new protocol module (own implementation, notimporting
vgn's, matching the Pulsar/VGN precedent)src/drivers/gwolves/hid.ts- new driver, model-agnosticsrc/drivers/gwolves/products.ts- product catalog (HTX Ultra wired0x5618+ wireless receiver0x3854, bothverified: true)src/drivers/gwolves/hid.test.ts- 4 tests, device recognitionsrc/drivers/gwolves/protocol.test.ts- 6 tests, against real capturedpackets
src/drivers/vendors.ts- addedgwolves0x33e4 + two HID filterssrc/drivers/registry.ts- registered driverpackage.json/src/index.ts-./gwolvesexportWireless quirk: the mouse must be actively awake (recently moved) to
accept config writes over the 2.4GHz receiver — writes sent while idle
are silently ignored. Noted in the driver and surfaced in the
setPollingRateerror hint.One thing worth flagging:
src/drivers/mouse-types.tsalready had"G-Wolves"in its brand union before this PR, with no implementationbehind it. Not sure if that's leftover scaffolding or related to other
in-progress work — happy to coordinate if there's context I'm missing.
Testing
Build passes cleanly. All 517 tests pass (
npm run [check).PROTOCOL-NOTES.md