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>
This commit is contained in:
1 parent
9ff5b99fa0
commit
822787ae0f
2 files changed
+11
-8
No files matched your search
@@ -9,14 +9,15 @@ product ID or have a K87 layout, so the keyboard is ignored without this plugin.
|
||||
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" in case the keyboard drops frames at full speed, and a "Frame rate limit"
|
||||
(Unlimited / 30 / 15 / 10 fps). Known issue: single keys occasionally flash a random colour for a moment.
|
||||
"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(56), offLo, offHi, 0x00, ...56 RGB bytes]`,
|
||||
where the checksum is the 16-bit sum of bytes 3..63. 7 packets cover LED slots 0..127.
|
||||
- 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
|
||||
|
||||
Reference in new issue
Block a user