|
|
@@ -1,4 +1,4 @@
|
|
|
-# QMK VIA RGB Tool
|
|
|
+# 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.
|
|
|
|
|
|
@@ -26,26 +26,32 @@ go install ./cmd/qmk-rgb/
|
|
|
./qmk-rgb keyboard info
|
|
|
|
|
|
# RGB commands target Logo, Backlight, and Side by default
|
|
|
-./qmk-rgb rgb effect breathing
|
|
|
-./qmk-rgb rgb effect rainbow_moving_chevron
|
|
|
-./qmk-rgb rgb effect rainbow_moving_chevron --zone backlight
|
|
|
-./qmk-rgb rgb brightness 160
|
|
|
-./qmk-rgb rgb speed 2
|
|
|
-./qmk-rgb rgb color 00ff00
|
|
|
+./qmk-rgb effect breathing
|
|
|
+./qmk-rgb effect rainbow_moving_chevron
|
|
|
+./qmk-rgb effect rainbow_moving_chevron --zone backlight
|
|
|
+./qmk-rgb brightness 160
|
|
|
+./qmk-rgb speed 2
|
|
|
+./qmk-rgb color 00ff00
|
|
|
# Raw mode IDs are zone-specific; ID 17 is Backlight-only
|
|
|
-./qmk-rgb rgb mode 17 --zone backlight
|
|
|
-./qmk-rgb rgb enable
|
|
|
-./qmk-rgb rgb disable
|
|
|
-./qmk-rgb rgb info
|
|
|
+./qmk-rgb mode 17 --zone backlight
|
|
|
+./qmk-rgb enable
|
|
|
+./qmk-rgb disable
|
|
|
+./qmk-rgb info
|
|
|
|
|
|
# Select exactly one zone
|
|
|
-./qmk-rgb rgb brightness 160 --zone side
|
|
|
+./qmk-rgb brightness 160 --zone side
|
|
|
+
|
|
|
+# Save and load RGB profiles
|
|
|
+./qmk-rgb save paul
|
|
|
+./qmk-rgb load paul
|
|
|
+./qmk-rgb list
|
|
|
+./qmk-rgb delete paul
|
|
|
|
|
|
# Specify a target device (when multiple are connected)
|
|
|
-./qmk-rgb rgb --device /dev/hidraw0 enable
|
|
|
+./qmk-rgb --device /dev/hidrawX enable
|
|
|
```
|
|
|
|
|
|
-`--zone` is persistent on `rgb` and accepts `logo`, `backlight`, or `side`.
|
|
|
+`--zone` is persistent across commands and accepts `logo`, `backlight`, or `side`.
|
|
|
Without `--zone`, commands target Logo, Backlight, and Side in that order.
|
|
|
With `--zone`, commands target exactly the selected zone. An unsupported
|
|
|
name for an explicit zone fails before the device is opened; a default
|
|
|
@@ -53,6 +59,18 @@ command skips unsupported zones and prints a warning on stderr.
|
|
|
|
|
|
All output is machine-parseable JSON when applicable.
|
|
|
|
|
|
+## Features
|
|
|
+
|
|
|
+- **Cross-platform** — Linux, macOS, Windows via [hidapi](https://github.com/libusb/hidapi)
|
|
|
+- **Zone-aware effects** — per-zone effect control (Logo, Backlight, Side) with zone-specific effect catalogs
|
|
|
+- **Profile system** — save, load, list, and delete RGB presets as JSON files in `profiles/`
|
|
|
+- **46 backlight effects** — complete Impact 80 effect family mapped to zone-aware effect names
|
|
|
+- **Compatibility aliases** — `off`, `breathe`, `rainbow`, `solid`, `static` resolve to correct effect IDs per zone
|
|
|
+- **Reactive & splash effects** — honor `rgb color` and `rgb speed` for key-press illumination
|
|
|
+- **Machine-parseable output** — JSON for `keyboard info`, `info`, `list`, and `effect --list`
|
|
|
+- **Agent-friendly** — designed for automation, scripting, and CLI-first workflows
|
|
|
+- **Multiple devices** — `--device` flag to target a specific keyboard when several are connected
|
|
|
+
|
|
|
## Impact 80 Zones and Effects
|
|
|
|
|
|
| Zone | CLI name | VIA channel | Effect IDs |
|
|
|
@@ -205,20 +223,21 @@ New keyboards can be added to `keyboards.json`.
|
|
|
| Command | Description |
|
|
|
|---------------------------------|------------------------------------------|
|
|
|
| `qmk-rgb keyboard info` | Discover connected VIA-compatible keyboards |
|
|
|
-| `qmk-rgb rgb enable` | Enable selected lighting zones |
|
|
|
-| `qmk-rgb rgb disable` | Disable selected lighting zones |
|
|
|
-| `qmk-rgb rgb info` | Show per-zone RGB state (JSON) |
|
|
|
-| `qmk-rgb rgb effect <name>` | Set a zone-aware effect by name |
|
|
|
-| `qmk-rgb rgb brightness <val>` | Set brightness (0–255) on selected zones |
|
|
|
-| `qmk-rgb rgb speed <val>` | Set effect speed (0–255) on selected zones |
|
|
|
-| `qmk-rgb rgb color <hex>` | Set color (e.g. `ff0000`) on selected zones |
|
|
|
-| `qmk-rgb rgb mode <index>` | Set a raw zone-specific effect ID |
|
|
|
-| `qmk-rgb rgb --zone <zone> ...` | Target `logo`, `backlight`, or `side` |
|
|
|
-| `qmk-rgb rgb --device <path> ...`| Specify HID device path |
|
|
|
-| `qmk-rgb rgb save [name]` | Save current RGB state to `profiles/<name>.json` |
|
|
|
-| `qmk-rgb rgb load [name]` | Load and apply a profile from `profiles/` |
|
|
|
-| `qmk-rgb rgb list` | List saved profiles |
|
|
|
-| `qmk-rgb rgb delete [name]` | Delete a saved profile |
|
|
|
+| `qmk-rgb keyboard list` | List all supported keyboards in database |
|
|
|
+| `qmk-rgb enable` | Enable selected lighting zones |
|
|
|
+| `qmk-rgb disable` | Disable selected lighting zones |
|
|
|
+| `qmk-rgb info` | Show per-zone RGB state (JSON) |
|
|
|
+| `qmk-rgb effect <name>` | Set a zone-aware effect by name |
|
|
|
+| `qmk-rgb brightness <val>` | Set brightness (0–255) on selected zones |
|
|
|
+| `qmk-rgb speed <val>` | Set effect speed (0–255) on selected zones |
|
|
|
+| `qmk-rgb color <hex>` | Set color (e.g. `ff0000`) on selected zones |
|
|
|
+| `qmk-rgb mode <index>` | Set a raw zone-specific effect ID |
|
|
|
+| `qmk-rgb --zone <zone> ...` | Target `logo`, `backlight`, or `side` |
|
|
|
+| `qmk-rgb --device <path> ...` | Specify HID device path |
|
|
|
+| `qmk-rgb save [name]` | Save current RGB state to `profiles/<name>.json` |
|
|
|
+| `qmk-rgb load [name]` | Load and apply a profile from `profiles/` |
|
|
|
+| `qmk-rgb list` | List saved profiles |
|
|
|
+| `qmk-rgb delete [name]` | Delete a saved profile |
|
|
|
|
|
|
## Profiles
|
|
|
|