Initial HyperX Eve 1800 SignalRGB plugin and protocol tools

Working 10-zone plugin using the 0x44 live colour reports on the 0xFF90
vendor interface (data then commit). Includes Python tools used to
identify the device, confirm the protocol and map zones. Output is
dimmer than onboard effects; investigation pending.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01EcbUcbNpyPn7cGpe4t6y5y
This commit is contained in:
steveandClaude Opus 5.5 committed 2026-10-25 16:45:27 -07:00
commit 5f36610a60
11 files changed
+491

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
"""Light chosen LED slots in distinct colours (everything else off) to map zones.
python tools/zone_probe.py 0 1 2 3 4 # slot 0 red, 1 green, 2 blue, 3 yellow, 4 magenta
python tools/zone_probe.py --range 10 19 # light slots 10..19 all white
"""
import argparse
import eve
PALETTE = [("red", (255, 0, 0)), ("green", (0, 255, 0)), ("blue", (0, 0, 255)),
("yellow", (255, 200, 0)), ("magenta", (255, 0, 255)), ("cyan", (0, 255, 255)),
("white", (255, 255, 255))]
def main():
ap = argparse.ArgumentParser()
ap.add_argument("slots", nargs="*", type=int)
ap.add_argument("--range", nargs=2, type=int, metavar=("FIRST", "LAST"))
ap.add_argument("--total", type=int, default=20, help="slots to send (default 20)")
ap.add_argument("--hold", type=float, default=0, help="keep re-sending for N seconds")
ap.add_argument("--fps", type=int, default=10, help="re-send rate with --hold (default 10)")
args = ap.parse_args()
colors = [(0, 0, 0)] * args.total
if args.range:
for s in range(args.range[0], args.range[1] + 1):
colors[s] = (255, 255, 255)
print(f"slots {args.range[0]}..{args.range[1]}: white")
for slot, (name, rgb) in zip(args.slots, PALETTE):
colors[slot] = rgb
print(f"slot {slot}: {name}")
if args.hold:
print(f"re-sending every {1000 // args.fps} ms for {args.hold} s (Ctrl+C to stop)")
eve.stream(colors, args.hold, args.fps)
else:
eve.send(colors, verbose=False)
if __name__ == "__main__":
main()