feat: maps for the Planck EZ and 21 QMK keyboards #21

Merged
jwarykowski merged 1 commit from feat/qmk-boards into main 2026-10-18 06:24:10 +00:00
Owner

Maps for many more keyboards, generated from QMK.

keybars gen:

  • reads QMK's API first, whose definitions are merged with the parents they inherit from. Keychron's variants need that. The raw files are a fallback.
  • lays row-staggered boards out by rows: each key in the column under its centre, arrow keys joining their row. ZSA-style column boards keep the column method, unchanged, and the Moonlander and Voyager still match.
  • splits a split board by its matrix when its thumb keys fill the gap (the Kyria).
  • picks the fullest layout when there's no LAYOUT (the Corne's 3×6 over its 3×5).
  • -json prints the board's shape: each key's place and size, and its row, column and LED in the map.

Maps (scripts/maps.sh regenerates them):

  • Planck EZ, in Keymapp's numbering with its shipped 2u space bar. Detected as "planck".

  • 21 QMK boards, in the firmware's LED order, in maps/qmk/, listed in boards.json with the names they may report:

    • Keychron Q1, Q2, Q3, Q5, Q6, Q60, Q65, V1, V3, V6 and V10;
    • GMMK Pro, GMMK 2 65% and 96%;
    • Drop CTRL and ALT;
    • KBD67 MkII RGB;
    • Corne, Sofle, Kyria and Lulu.

    keybars uses one when OpenRGB reports no key matrix and the name matches exactly, so a Q1 Pro isn't taken for a Q1.

  • maps/shapes.json: all 24 boards' shapes, for the website's previews.

  • ErgoDox EZ: left out. Its thumb keys aren't on a matrix row of their own, so its Keymapp numbering can't be worked out without a real board, and a wrong ZSA map would be picked automatically.

QMK is credited in maps/qmk/README.md and in each map's header (GPL-2.0-or-later data).

Tested: go test ./... and golangci-lint. New tests cover:

  • the Planck matching the API's definition;
  • the Q1's row layout and its shape (space bar 6.25u on LED 75);
  • the Kyria splitting by matrix;
  • every QMK map loading;
  • exact name matching.

None of the new maps has been checked on the boards themselves.

Maps for many more keyboards, generated from QMK. **`keybars gen`**: - reads QMK's API first, whose definitions are merged with the parents they inherit from. Keychron's variants need that. The raw files are a fallback. - lays row-staggered boards out by rows: each key in the column under its centre, arrow keys joining their row. ZSA-style column boards keep the column method, unchanged, and the Moonlander and Voyager still match. - splits a split board by its matrix when its thumb keys fill the gap (the Kyria). - picks the fullest layout when there's no `LAYOUT` (the Corne's 3×6 over its 3×5). - `-json` prints the board's shape: each key's place and size, and its row, column and LED in the map. **Maps** (`scripts/maps.sh` regenerates them): - **Planck EZ**, in Keymapp's numbering with its shipped 2u space bar. Detected as "planck". - **21 QMK boards**, in the firmware's LED order, in `maps/qmk/`, listed in `boards.json` with the names they may report: - Keychron Q1, Q2, Q3, Q5, Q6, Q60, Q65, V1, V3, V6 and V10; - GMMK Pro, GMMK 2 65% and 96%; - Drop CTRL and ALT; - KBD67 MkII RGB; - Corne, Sofle, Kyria and Lulu. `keybars` uses one when OpenRGB reports no key matrix and the name matches exactly, so a Q1 Pro isn't taken for a Q1. - **`maps/shapes.json`**: all 24 boards' shapes, for the website's previews. - **ErgoDox EZ: left out.** Its thumb keys aren't on a matrix row of their own, so its Keymapp numbering can't be worked out without a real board, and a wrong ZSA map would be picked automatically. QMK is credited in `maps/qmk/README.md` and in each map's header (GPL-2.0-or-later data). Tested: `go test ./...` and golangci-lint. New tests cover: - the Planck matching the API's definition; - the Q1's row layout and its shape (space bar 6.25u on LED 75); - the Kyria splitting by matrix; - every QMK map loading; - exact name matching. None of the new maps has been checked on the boards themselves.
feat: maps for the Planck EZ and 21 QMK keyboards
All checks were successful
CI / test (pull_request) Successful in 1m38s
18e7051c86
keybars gen now reads QMK's API (keyboards.qmk.fm), whose definitions are
merged with the parents they inherit from, lays row-staggered boards out by
rows (keys in the column under their centre, arrow keys in their row),
splits boards whose thumb keys fill the gap by their matrix, picks the
fullest layout when there's no LAYOUT, and with -json prints the board's
shape: each key's place and size, and where the map puts it.

scripts/maps.sh generates the Planck EZ's map in Keymapp's numbering, and
maps for 21 popular QMK boards in the firmware's LED order (maps/qmk, listed
in boards.json), used for OpenRGB keyboards that report no key matrix when
their name matches exactly, plus every board's shape (maps/shapes.json) for
previews. The ErgoDox EZ is left out: its thumb keys don't sit on a matrix
row of their own, so its Keymapp numbering needs a real board.
jwarykowski deleted branch feat/qmk-boards 2026-10-18 06:24:10 +00:00
Sign in to join this conversation.
No description provided.