Wait for packet echoes and send only changed packets

The keyboard echoes each colour packet back; wait for that echo before
sending the next one, like OpenRGB's EVision driver, instead of firing all
packets back to back. Skip packets whose colours did not change and resend
the whole frame every 500 ms so the keyboard stays under plugin control.
Add a passive listener tool for the echoes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-28 23:24:57 +01:00
1 parent 822787ae0f
commit 0b2a90ba94
3 files changed
+68

No files matched your search

+7
View File
@@ -19,6 +19,11 @@ The device settings have a "Key test" option (column or row sweep) to check the
- 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 10 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
@@ -32,3 +37,5 @@ Right Ctrl 101, arrows 109 / 117 / 125.
- `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.