OpenRGB backend for non-ZSA keyboards #5
No reviewers
Labels
No labels
accessibility
bug
dependencies
documentation
duplicate
enhancement
go
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jwarykowski/keybars!5
Loading…
Reference in a new issue
No description provided.
Delete branch "openrgb"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
keybars only drove ZSA boards through Keymapp. OpenRGB's SDK server reaches most per-key RGB keyboards (Razer, Corsair, Logitech, SteelSeries, ASUS, QMK with OpenRGB support and more), and most of its keyboards come with a key matrix, so no map needs writing.
What
-backend openrgb(plus-openrgb ADDR, default127.0.0.1:6742, and-device NAME) on every command that connects. It picks the first keyboard unless-devicenames one.pkg/openrgb: an SDK client.Set.RestoreAllsends back the previous mode exactly as described (UPDATEMODE), and its colours if that mode was per-LED.keybars maps -backend openrgblists devices and prints the map to save and edit.keybars find -backend openrgbstarts at 0 and prints each LED's name (LED 3 (Key: Q)).-modelis refused, since built-in maps use Keymapp's numbering.pkg/rgb:ColourandLEDsmove out ofkeymapp(aliased there, sobarsis untouched apart from the flush), plus an optionalFlusherthat the renderer calls once per frame that changed something.Testing
testdata/controller_v1.binis a keyboard description made bytestdata/fixture.py(3×4 matrix with gaps, a logo zone, Direct, Static and Rainbow modes). It is checked by openrgb-python's own parser, and openrgb-python's UPDATEMODE encoding of the mode matches ours byte for byte.mapsprinted the matrix, a paced-stdinrun lit the expected keys with one UPDATELEDS per frame and restored the mode after-idle, andfindand the error paths behaved.pkg/packages, config file, start/stop,-source):go test -race ./...passes on Go 1.26, and CI passes.Not verified