From 0fc99f113c14d3e5005b7673d638353a664cb1a6 Mon Sep 17 00:00:00 2001 From: ydw1904 Date: Wed, 7 Oct 2026 20:52:56 +0800 Subject: [PATCH 1/2] feat: wire the Corsair IRONCLAW RGB WIRELESS driver into the connect flow Adds CorsairBragiHidClient to NEEDS_OPEN so its input-report listener is attached on connect, and marks the Ironclaw RGB Wireless as having a driver PR in the supported mirror (only that row). The driver is read-only, so it needs no traits family. Needs the mouse-protocol release that contains the driver before the @openmouse/protocol pin can be bumped. Requested in Discord ticket 0159. Co-Authored-By: Claude Opus 5.5 --- src/device/controller.ts | 3 ++- src/supported-devices-data.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/device/controller.ts b/src/device/controller.ts index 1ae066c1..76d3382b 100644 --- a/src/device/controller.ts +++ b/src/device/controller.ts @@ -149,6 +149,7 @@ import { ModdoHidClient } from "@openmouse/protocol/drivers/moddo/hid"; import { NinjutsoHidClient } from "@openmouse/protocol/drivers/ninjutso/hid"; import { ZaunkoenigHidClient } from "@openmouse/protocol/drivers/zaunkoenig/hid"; import { CorsairHidClient } from "@openmouse/protocol/drivers/corsair/hid"; +import { CorsairBragiHidClient } from "@openmouse/protocol/drivers/corsair/bragi-hid"; import { TeevolutionHidClient } from "@openmouse/protocol/drivers/teevolution/hid"; import { teevolutionProfileForCid } from "@openmouse/protocol/teevolution"; import { VgnF2HidClient } from "@openmouse/protocol/drivers/vgn/hid"; @@ -267,7 +268,7 @@ function activeAs(...classes: ClientClass[]): T | null { const DM_CLASSES = [WLMouseHidClient, LamzuHidClient, LamzuAtlantisHidClient, AtkHidClient, AtkBitmouseHidClient, NinjutsoHidClient] as const; const RAZER_CLASSES = [RazerHidClient, RazerViperMiniHidClient, RazerViperHidClient, RazerCobraHidClient] as const; -const NEEDS_OPEN = [LamzuAtlantisHidClient, TeevolutionHidClient, VgnF2HidClient, KeychronNapeHidClient, Keychron8kNordicHidClient, WLMouseBeastX4kHidClient, ModdoHidClient, ZaunkoenigHidClient, CorsairHidClient, FantechHidClient, WallhackMouseHidClient, WallhackKeyboardHidClient, GloriousHidClient, GloriousClassicHidClient, MchoseHidClient, MchoseDockHidClient, MchoseA5ProMaxHidClient, MchoseV3HidClient, MicrosoftHidClient, DareuHidClient, IncottHidClient, BytechHidClient, RapooHidClient, FaterHidClient, CoolerMasterHidClient, RedragonM690ProHidClient] as const; +const NEEDS_OPEN = [LamzuAtlantisHidClient, TeevolutionHidClient, VgnF2HidClient, KeychronNapeHidClient, Keychron8kNordicHidClient, WLMouseBeastX4kHidClient, ModdoHidClient, ZaunkoenigHidClient, CorsairHidClient, CorsairBragiHidClient, FantechHidClient, WallhackMouseHidClient, WallhackKeyboardHidClient, GloriousHidClient, GloriousClassicHidClient, MchoseHidClient, MchoseDockHidClient, MchoseA5ProMaxHidClient, MchoseV3HidClient, MicrosoftHidClient, DareuHidClient, IncottHidClient, BytechHidClient, RapooHidClient, FaterHidClient, CoolerMasterHidClient, RedragonM690ProHidClient] as const; const PULSAR_CLASSES = [PulsarHidClient, PulsarProHidClient, PulsarXs1HidClient] as const; const logitechClient = (): LogitechHidppClient | null => activeAs(LogitechHidppClient); diff --git a/src/supported-devices-data.ts b/src/supported-devices-data.ts index 0c4fc0e3..0355339a 100644 --- a/src/supported-devices-data.ts +++ b/src/supported-devices-data.ts @@ -220,6 +220,7 @@ export const SUPPORTED_DEVICES: readonly SupportedDeviceEntry[] = [ { brand: "Corsair", model: "M65 RGB Elite", status: "driver" }, { brand: "Corsair", model: "Scimitar RGB Elite", status: "driver" }, { brand: "Corsair", model: "Ironclaw RGB", status: "driver" }, + { brand: "Corsair", model: "Ironclaw RGB Wireless", status: "pr", pids: [0x1b4c, 0x1b66, 0x1bdc] }, { brand: "Glorious", model: "Model O 2 Pro Wireless", status: "supported", pids: [0x2033] }, { brand: "Glorious", model: "Model O", status: "supported", pids: [0x2011, 0x2022] }, { brand: "Glorious", model: "Model D Wireless", status: "supported", pids: [0x2012, 0x2023] }, From 24a9890f72388d0b4e644f75d753ca52a6e70d11 Mon Sep 17 00:00:00 2001 From: snekxs <26660858+snekxs@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:41:13 -0600 Subject: [PATCH 2/2] chore: bump @openmouse/protocol to 0.29.0 for Bragi driver --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 38e968fe..7ab1367d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.0", "license": "AGPL-3.0-or-later", "dependencies": { - "@openmouse/protocol": "0.27.0", + "@openmouse/protocol": "0.29.0", "lucide-react": "^1.43.0", "preact": "^10.29.8" }, @@ -481,9 +481,9 @@ } }, "node_modules/@openmouse/protocol": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@openmouse/protocol/-/protocol-0.27.0.tgz", - "integrity": "sha512-pxl6KwZORt0QNGcLvZaaFk8D+6ranTxYbCKPdkQJpmYdUT8ytKGWWwVYnq0/LrE4PvrIgjbkj17iBtpkuFcr3Q==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@openmouse/protocol/-/protocol-0.29.0.tgz", + "integrity": "sha512-0YcCdBZigRZlfJgVWxe9iGUQChilgUX/9J3lwHACRJ9goGQVw16IRW7DnSQ5R93NaMxVTMaOCIiloCGDbGR1Kw==", "license": "AGPL-3.0-or-later", "engines": { "node": ">=20" diff --git a/package.json b/package.json index a95e13d4..9d30af44 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "preview": "vite preview" }, "dependencies": { - "@openmouse/protocol": "0.27.0", + "@openmouse/protocol": "0.29.0", "lucide-react": "^1.43.0", "preact": "^10.29.8" },