|
|
@@ -326,6 +326,64 @@ but keeps its device data in C++ controllers, so it settles VID/PID, not effects
|
|
|
README.md carries the details; the conclusion for code here is that a catalog is
|
|
|
transcribed per board and cannot be generated from a common source.
|
|
|
|
|
|
+**The names for VIA's built-in menu are in no definition file at all.** A
|
|
|
+definition that writes `"menus": ["qmk_rgb_matrix"]` — a string, not a menu object —
|
|
|
+refers to the menu VIA's own app carries, and those names live in `the-via/reader`
|
|
|
+(the `@the-via/reader` package), in `src/common-menus/qmk_rgb_matrix.ts`: the
|
|
|
+`options` array of the `id_qmk_rgb_matrix_effect` dropdown, where position equals
|
|
|
+effect ID 0 to 44. It is TypeScript with nested `content`, `showIf` and range
|
|
|
+constraints, so nothing here can read it at runtime, and the spellings are VIA
|
|
|
+display labels rather than QMK enum identifiers — `Solid Color` and `Breathing`
|
|
|
+reach `solid_color` and `breathing` through `byName`'s space/underscore rule,
|
|
|
+while `All Off` and `Band Sat.` reach nothing the tool spells today. The GMMK Pro
|
|
|
+(0x320F/0x5044) is one of these boards: `keyboard fetch` succeeds, stores the file,
|
|
|
+and the catalog comes out empty, so no effect name resolves. Whether to fall back
|
|
|
+to those 45 names, and where such a fallback's list would come from, is still open
|
|
|
+— a list typed into this repository is the drift these rules forbid, so do not add
|
|
|
+one without asking.
|
|
|
+
|
|
|
+**Nobody ships names over the wire, which is the reason this tool exists.** These
|
|
|
+projects drive the same raw HID interface from a terminal, and each of them takes
|
|
|
+an effect **ID**:
|
|
|
+
|
|
|
+- <https://github.com/FrameworkComputer/qmk_hid> — Rust CLI, plus a Python GUI in
|
|
|
+ `python/`; BSD-3-Clause. `qmk_hid via --rgb-effect 38`, plus `--rgb-brightness`,
|
|
|
+ `--rgb-hue`, `--rgb-saturation`, `--rgb-color`, `--rgb-effect-speed`,
|
|
|
+ `--backlight`, `--backlight-breathing`, `--save`, `--device-indication`,
|
|
|
+ `--eeprom-reset`, `--bootloader`, and `-l`/`--vid`/`--pid`. Its README states
|
|
|
+ the reason out loud: "the effect numbers can be different per keyboard", and it
|
|
|
+ says the tool "will soon be superceded by QMK XAP".
|
|
|
+- <https://github.com/njkevlani/qmk-light> — C++ against hidapi, one `qmk-light.cpp`;
|
|
|
+ **no licence file**, so nothing may be taken from it. `--list`, `--get-brightness`,
|
|
|
+ `--set-brightness` (absolute or `+5`/`-10`), `--list-effects`, `--get-effect`,
|
|
|
+ `--set-effect`, `--get-effect-speed`, `--set-effect-speed`, `--get-color`,
|
|
|
+ `--set-color h,s`, `--device <index|path>`, `--first-device`, `--quiet`.
|
|
|
+- <https://github.com/Drugantibus/qmk-hid-rgb> — Python, GPL-3.0, untouched since
|
|
|
+ 2021; a proof of concept that needs a keymap of its own with `RAW_ENABLE = yes`
|
|
|
+ and the board's VID/PID written into the source.
|
|
|
+
|
|
|
+None of them reads a definition file, so none can name an effect. That is the gap
|
|
|
+this tool's catalog and `keyboard fetch` sit in.
|
|
|
+
|
|
|
+Read them for that gap, and for anything this tool does not do yet: they are the
|
|
|
+three live implementations of the same wire protocol, and their flag surfaces are
|
|
|
+where a gap in ours shows up first — persistence (`--save`, `--eeprom-reset`),
|
|
|
+device indication, effect speed as its own parameter, colour by name, jumping to
|
|
|
+the bootloader, and explicit device selection where more than one board is
|
|
|
+attached (`--first-device`). Any of those is a candidate feature here, not a
|
|
|
+duplicate to reimplement badly. Check a project's licence before taking code from
|
|
|
+it, and check whether it has moved on before treating its behaviour as current.
|
|
|
+
|
|
|
+**The `qmk` CLI has never had a lighting command.** Do not explain a missing
|
|
|
+feature by saying QMK removed one. Measured on `qmk_firmware`: `lib/python/qmk/cli/`
|
|
|
+carries no `led`, `rgblight` or `hid` module at tags 0.6, 0.9, 0.10, 0.15 through
|
|
|
+0.21, 0.24 or on master, the commits API returns zero commits for those paths, and
|
|
|
+`docs/cli_commands.md` documents none at any of those tags. The path filter does
|
|
|
+report deletions — `lib/python/qmk/cli/cformat.py` and `multibuild.py` both end at
|
|
|
+`4723f308a`, *"Remove CLI commands: `multibuild`, `cformat`, `fileformat`,
|
|
|
+`pyformat`"*, 2023-01-18 — so an empty result means the file was never there, not
|
|
|
+that it was removed.
|
|
|
+
|
|
|
## Output Shape
|
|
|
|
|
|
`keyboard info`, `info`, `list`, the effect list and `keyboard definitions` print text,
|