Skip to content

corsair: wire the read-only NIGHTSWORD RGB driver into the app - #187

Merged
snekxs merged 1 commit into
OpenMouse-Project:control-panelfrom
kfrancis:feat/corsair-nightsword-app
Sep 6, 2026
Merged

corsair: wire the read-only NIGHTSWORD RGB driver into the app#187
snekxs merged 1 commit into
OpenMouse-Project:control-panelfrom
kfrancis:feat/corsair-nightsword-app

Conversation

@kfrancis

Copy link
Copy Markdown

Summary

App-side wiring for the Corsair NIGHTSWORD RGB (VID 0x1b1c, PID 0x1b5c). Pairs with OpenMouse-Project/mouse-protocol#63, which adds the Corsair codec and CorsairHidClient; this PR needs that package version to build.

  • src/device/controller.ts — import CorsairHidClient and add it to NEEDS_OPEN (the client has an explicit open()).
  • src/supported-mice.ts — NIGHTSWORD RGB row, status supported, pids: [0x1b5c], with a note that phase 1 is read-only and that iCUE can stay running.
  • src/supported-mice.test.tsCORSAIR_PRODUCT_IDS joins PID_UNIVERSE so the row is validated against the protocol package.
  • src/ui/device-images.tsnightsword name fallback to the generic placeholder until a redistributable render exists, with a test.

Tested on hardware

Windows 11, Chrome 152, NIGHTSWORD RGB fw 3.41, this branch with the mouse-protocol PR linked in:

  • Picker offers one entry (usage-4 config interface); the device auto-reconnects on reload.
  • Overview shows firmware 3.41 / bootloader 3.08, the Sniper slot, DPI stages with colours, lift-off height, and 1,000 Hz. Status bar tracks the active stage.
  • Performance and Profiles tabs report "not available", as expected for settingsReady: false.
  • Background refreshes keep succeeding with iCUE running.

What this does not do yet

Read-only. DPI, stage, lift-off, and angle-snap writes are phase 2 in the protocol repo. Onboard profile persistence needs Corsair's file-based profile format and is out of scope. No product art: the maintainers' R2 bucket needs a render that can be redistributed; the PID → filename mapping can be added once one is uploaded.

Checks

npm run check passes (121 tests) with the local mouse-protocol build linked.

🤖 Generated with Claude Code

Pairs with OpenMouse-Project/mouse-protocol#63, which adds the Corsair
codec and CorsairHidClient. The client has an explicit open(), so it
joins NEEDS_OPEN in the controller. The supported-devices table gets a
NIGHTSWORD RGB row marked supported with PID 0x1b5c, and the PID
universe in its test learns CORSAIR_PRODUCT_IDS so the row is checked
against the protocol package. Device art resolves to the generic
placeholder by name until a redistributable render is uploaded.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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

@kfrancis@snekxs