Files
mangavalkandClaude Opus 5.5 668cfd76b2 Wait up to 25 ms for each packet echo
With a 10 ms wait an occasional glitch remained; the keyboard is likely
sometimes slower to echo, so the next packet still arrived too early.

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

42 lines
2.4 KiB
Markdown

# 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.
The plugin only sends packets whose colours changed, plus a full frame every 500 ms.
- The keyboard echoes every colour packet's header back as an input report. The plugin waits
for that echo (up to 25 ms) before the next packet, as OpenRGB's EVision driver does.
- OpenRGB supports this keyboard (`EVision Keyboard 320F:502A`) but only through the saved
custom-colour command (`0x11` between begin `0x01` / end `0x02`), not a live mode.
## 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.
- `tools/evision_listen.ps1` passively reads the RGB endpoint's input reports (the packet echoes)
for a few seconds, grouped by header. Safe to run while SignalRGB is streaming.