Warning:
split70ctlrequires the custom Split 70 firmware from https://github.com/Slijeff/EpomakerQMK. It only works with a keyboard running that firmware.
split70ctl is a command-line tool for controlling the accent strip LEDs on an Epomaker Split 70 keyboard running the custom QMK firmware. It works over USB and the 2.4G dongle, using the keyboard's VIA raw HID interface.
- Discover Split 70 strip-capable devices
- Set individual strip LED colours
- Set the entire strip to a single colour
- Create left/right half colours or colour gradients
- Run host-driven animations until interrupted
- Switch control between host and keyboard firmware effects
- Configure fallback colour, watchdog timeout, and boot mode
- Persist settings to EEPROM with
save - Optional local web UI for browser-based control
- Go 1.26.2 or later
- Native HID support for
github.com/sstallion/go-hidandhidapi
From the repository root:
go install ./cmd/split70ctlOr to build the binary in bin/:
go build -o bin/split70ctl ./cmd/split70ctlsplit70ctl [flags] <command>split70ctl list- List attached strip-capable Split 70 keyboards.
split70ctl list --all- List every raw VIA/HID candidate, even if not confirmed by the strip probe.
split70ctl set <index> <colour>- Set one strip LED by index (0‑2 left half, 3‑5 right half).
split70ctl all <colour>- Set every LED to the same colour.
split70ctl gradient <from> <to>- Ramp a colour across the 6-LED strip from left to right.
split70ctl halves <left> <right>- Set the left and right halves independently.
split70ctl off- Blank the strip while staying under host control.
split70ctl anim <name>- Run a host-driven animation until Ctrl-C.
- Supported animations:
breathe,chase,comet,rainbow.
split70ctl mode [app|fw]- Show or set who controls the strip.
split70ctl default [colour]- Show or set the fallback colour used when the host takes over.
split70ctl watchdog [ms]- Show or set the host-liveness timeout in milliseconds.
split70ctl boot <on|off>- Set whether the strip starts under host control at power-on.
split70ctl save- Persist fallback colour, watchdog, and boot mode to EEPROM.
split70ctl serve- Start a local web UI for browser-based control.
If more than one keyboard is attached, pin a specific device with:
split70ctl --device <HID path> <command>Use split70ctl list to discover HID paths.
Colours are provided as 6-digit hex RGB values, for example:
ff0000for red00ff00for green0000fffor blue
Run:
split70ctl serveThen open the printed address in a browser (default http://127.0.0.1:7070). The web UI is embedded into the binary.
- The keyboard exposes strip control through a VIA custom HID channel.
- Wireless links (Bluetooth / 2.4G) are limited to a lower safe frame rate than USB.
savepersists settings, but individual frames are not stored to EEPROM.
- The project root contains
go.modandgo.sum. - Main command source:
cmd/split70ctl/ - Device discovery and HID handling:
internal/device/ - Strip protocol implementation:
internal/proto/ - Host animation support:
internal/anim/ - Embedded web UI frontend:
internal/webui/