mangavalkandClaude Opus 5.5 822787ae0f Send 54-byte packets so no LED is split across packets
The keyboard applies each packet as it arrives. With 56 colour bytes per
packet, LEDs 18, 74 and 93 straddled two packets and briefly showed a mix of
old and new colour. 54 is a multiple of 3, and 7 x 54 covers exactly LEDs
0..125, so the frame no longer pads past the last LED either.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 23:19:39 +01:00

Womier K87 SignalRGB plugin

SignalRGB plugin for the wired Womier K87 with EVision firmware (USB 320F:502A). SignalRGB's built-in EVision plugin speaks the same protocol but does not list this product ID or have a K87 layout, so the keyboard is ignored without this plugin.

Install

Copy Womier_K87_EVision.js to %USERPROFILE%\Documents\WhirlwindFX\Plugins\ and restart SignalRGB.

The device settings have a "Key test" option (column or row sweep) to check the LED map, "Low frame-rate mode" (normally not needed) and a "Frame rate limit" (Unlimited / 30 / 15 / 10 fps).

Protocol

  • HID interface 1, usage page 0xFF1C, usage 0x92 (collection 4), 64-byte output reports.
  • Colour frame: packets of [0x04, sumLo, sumHi, 0x12, len, offLo, offHi, 0x00, ...len RGB bytes], where the checksum is the 16-bit sum of bytes 3..63. The plugin uses len 54: 7 packets cover LEDs 0..125.
  • The keyboard shows each packet as it arrives, so len must be a multiple of 3. With the stock plugin's 56, LEDs 18, 74 and 93 (W, O, Menu) are split across packets and flash random colours.
  • The keyboard falls back to its own effect when frames stop, so colours must be streamed.

LED map

LED index = column * 8 + row (same scheme as SignalRGB's Redragon K557 layout, minus the numpad). Exceptions: Page Up 115, Page Down 123, bottom row Space 45, Right Alt 77, Fn 85, Menu 93, Right Ctrl 101, arrows 109 / 117 / 125.

Tools

  • tools/hidcaps.ps1 lists the keyboard's HID collections with usage page/usage and report sizes.
  • tools/evision_led.ps1 sends test frames straight to the keyboard, e.g. evision_led.ps1 -Leds "0=ff0000,21=00ff00" -Seconds 60 lights LED 0 red and 21 green for a minute. Used to map the LEDs; quit SignalRGB first so the two don't fight over the device.
S
Description
No description provided
Readme
57 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 51.6%
PowerShell 48.4%