QMK RGB Tool

Control the RGB lighting on QMK-compatible keyboards. Supports Impact 80 and Rainy 75 out of the box, and any other keyboard running QMK with the RGB Matrix subsystem and VIA support.

Cross-platform CLI for Linux, macOS, and Windows. Designed for automation, scripting, and agent consumption.

Paul Klumpp a3123ae9fc Modify EnableLighting to set distinct effects per LED channel hai 2 semanas
.claude b0d6e24f95 Initial commit — Wobkey RGB CLI with LICENSE (GPLv3) hai 2 semanas
.opencode b0d6e24f95 Initial commit — Wobkey RGB CLI with LICENSE (GPLv3) hai 2 semanas
cmd a3123ae9fc Modify EnableLighting to set distinct effects per LED channel hai 2 semanas
graphify-out a3123ae9fc Modify EnableLighting to set distinct effects per LED channel hai 2 semanas
internal a3123ae9fc Modify EnableLighting to set distinct effects per LED channel hai 2 semanas
AGENTS.md d4f4757c68 Fix Impact 80 QMK Raw HID control hai 2 semanas
CLAUDE.md b0d6e24f95 Initial commit — Wobkey RGB CLI with LICENSE (GPLv3) hai 2 semanas
LICENSE b0d6e24f95 Initial commit — Wobkey RGB CLI with LICENSE (GPLv3) hai 2 semanas
PLAN.md d4f4757c68 Fix Impact 80 QMK Raw HID control hai 2 semanas
README.md d4f4757c68 Fix Impact 80 QMK Raw HID control hai 2 semanas
go.mod b0d6e24f95 Initial commit — Wobkey RGB CLI with LICENSE (GPLv3) hai 2 semanas
go.sum b0d6e24f95 Initial commit — Wobkey RGB CLI with LICENSE (GPLv3) hai 2 semanas
keyboards.json d4f4757c68 Fix Impact 80 QMK Raw HID control hai 2 semanas

README.md

Wobkey RGB CLI

Cross-platform CLI for programmatic control of VIA-compatible keyboard RGB lighting. Designed for automation, scripting, and agent consumption.

Installation

git clone <repo-url>
cd wobkey-rgb
go build -o wobkey ./cmd/wobkey/

Or install globally:

go install ./cmd/wobkey/

Usage

# Discover connected keyboards
./wobkey keyboard info

# RGB commands
./wobkey rgb enable
./wobkey rgb disable
./wobkey rgb info
./wobkey rgb effect rainbow
./wobkey rgb effect breathing
./wobkey rgb brightness 128
./wobkey rgb speed 100
./wobkey rgb color ff0000
./wobkey rgb mode 7

# Specify a target device (when multiple are connected)
./wobkey rgb --device /dev/hidraw0 enable

All output is machine-parseable JSON when applicable.

Linux HID Device Permissions

The tool accesses keyboards via /dev/hidraw* which requires root permissions by default. To run without sudo, choose one of the methods below.

Option 1: Quick (Per Session)

Grant your user group access to all HIDRAW devices:

sudo chown root:adm /dev/hidraw*
sudo chmod 660 /dev/hidraw*

This works for the current session only. Permissions reset after reboot.

Option 2: Permanent (udev Rule)

Create a persistent rule for the Wobkey Impact 80:

echo 'SUBSYSTEM=="hidraw", ATTRS{idVendor}=="36b0", ATTRS{idProduct}=="309f", MODE="0660", GROUP="adm"' \
  | sudo tee /etc/udev/rules.d/99-wobkey.rules

sudo udevadm control --reload-rules
sudo udevadm trigger
sudo udevadm reload

This makes the Impact 80 accessible to members of the adm group on every boot.

After either option, run the tool as your regular user (no sudo needed).

Supported Keyboards

Keyboard VID PID Status
Wobkey Rainy 75 0x6666 0x0001 Supported
Wobkey Impact 80 0x36B0 0x309F Supported

New keyboards can be added to keyboards.json.

CLI Reference

Command Description
wobkey keyboard info Discover connected VIA-compatible keyboards
wobkey rgb enable Enable RGB lighting
wobkey rgb disable Disable RGB lighting
wobkey rgb info Show current RGB state (JSON)
wobkey rgb effect <name> Set effect (static, breathing, rainbow…)
wobkey rgb brightness <val> Set brightness (0–255)
wobkey rgb speed <val> Set effect speed (0–255)
wobkey rgb color <hex> Set solid color (e.g. ff0000)
wobkey rgb mode <index> Set mode by numeric index

Architecture

cmd/wobkey/       # Cobra-based CLI
cmd/wobkey/rgb/   # RGB subcommands
internal/device/  # HID discovery + keyboards.json loader
internal/hid/     # Pure-Go HID access (/dev/hidraw*)
internal/rgb/     # Effects, colors, state
internal/via/     # VIA protocol implementation

Protocol

Communicates via the QMK Raw HID interface (Usage Page 0xFF60, Usage 0x61) with 32-byte reports. The Linux hidraw transport uses report number 0 followed by the 32-byte QMK payload.

  • 0x07 — Custom set value
  • 0x08 — Custom get value
  • Lighting channels: 0x02 logo, 0x03 backlight, 0x04 side lighting
  • RGB values: brightness 0x01, effect 0x02, speed 0x03, color 0x04