From ca99c8ec9d1ce5f0c6e9e1ecc843494f4b9dcbab Mon Sep 17 00:00:00 2001 From: Youssef <151364628+viix0dev@users.noreply.github.com> Date: Mon, 10 Aug 2026 14:58:33 +0300 Subject: [PATCH 1/2] fix(Razer): DeathAdder V3 polling rate --- src/drivers/razer/devices.test.ts | 15 +++++++++++++++ src/razer/devices.ts | 13 ++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/drivers/razer/devices.test.ts b/src/drivers/razer/devices.test.ts index b46f2c2..fbf0dda 100644 --- a/src/drivers/razer/devices.test.ts +++ b/src/drivers/razer/devices.test.ts @@ -119,6 +119,21 @@ test("the DeathAdder V3 Pro receiver writes polling on the legacy command", () = } }); +test("the wired DeathAdder V3 writes polling on the extended command", () => { + // Reported on hardware: the legacy read `00/85` answered with status 0x05 + // (not supported) and the extended read `00/c0` answered 8000/4, so the mouse + // was running at 2000 Hz while this row still capped the picker at 1000. + const wired = RAZER_PRODUCTS.get(0x00b2); + assert.equal(wired?.wireless, false); + assert.equal(wired?.highRatePolling, true); + // The rate the hardware was found at has to survive the round trip, or the + // picker offers a value the mouse is already sitting at and cannot be set to. + assert.ok(wired?.pollingRates.includes(2000)); + for (const rate of wired?.pollingRates ?? []) { + assert.doesNotThrow(() => razerSetExtendedPollingCommand(rate)); + } +}); + test("no product asks for a rate its polling command cannot encode", () => { // `highRatePolling` picks the encoding and `pollingRates` picks the values // offered; they are set independently, so nothing stops a product asking for diff --git a/src/razer/devices.ts b/src/razer/devices.ts index 42bb230..9339363 100644 --- a/src/razer/devices.ts +++ b/src/razer/devices.ts @@ -410,7 +410,18 @@ const PRODUCT_DEFINITIONS: ReadonlyArray<[number, Omit Date: Mon, 10 Aug 2026 18:43:52 -0600 Subject: [PATCH 2/2] fix: leave Cobra to its dedicated driver --- src/razer/devices.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/razer/devices.ts b/src/razer/devices.ts index e1f8981..3847439 100644 --- a/src/razer/devices.ts +++ b/src/razer/devices.ts @@ -409,7 +409,6 @@ const PRODUCT_DEFINITIONS: ReadonlyArray<[number, Omit = new Map( /** Product ids for the WebHID picker filters in `../vendors.ts`. */ export const RAZER_PRODUCT_IDS: readonly number[] = [...RAZER_PRODUCTS.keys()]; -