Go60: fix physical layout key order; make ZMK Studio buildable in the nix pipeline - #44
Open
andrewklingelhofer wants to merge 2 commits into
Open
Go60: fix physical layout key order; make ZMK Studio buildable in the nix pipeline#44andrewklingelhofer wants to merge 2 commits into
andrewklingelhofer wants to merge 2 commits into
Conversation
The physical layout listed the last nine keys as: left bottom-corner keys, six thumb keys, right bottom-corner keys. The matrix transform (and therefore keymap binding order) is: left bottom-corner keys, right bottom-corner keys, then the six thumb keys. Since the physical layout keys map to keymap bindings by index, ZMK Studio rendered the right bottom-corner bindings on the first three thumb keys and shifted the thumb bindings onto the wrong keys. Verified against hardware with a Studio-enabled build over BLE.
Building with CONFIG_ZMK_STUDIO=y previously failed because the nix pipeline never exercised Studio: - ZMK_STUDIO_RPC selects NANOPB, but the nanopb Zephyr module was not in requiredZephyrModules (Kconfig abort) - the studio proto sources live in the zmk-studio-messages module, also absent (ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR empty) - the nanopb generator needs pkg_resources/protobuf/protoc at build time (python setuptools, protobuf, grpcio-tools) Both modules were already pinned in nix/manifest.json and app/west.yml; they are now passed to the build. Non-Studio builds are unaffected. Verified by building go60_lh/go60_rh with CONFIG_ZMK_STUDIO=y and running ZMK Studio against the resulting firmware over BLE.
andrewklingelhofer
force-pushed
the
go60-studio-fixes
branch
from
July 16, 2026 04:19
4c5079d to
4a66cbf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two fixes discovered while building and running a ZMK Studio-enabled Go60 firmware (
CONFIG_ZMK_STUDIO=y) via the nix/Docker pipeline fromgo60-zmk-config:1. Go60 physical layout key order (
go60-layouts.dtsi)The physical layout listed the last nine keys as left bottom-corner → six thumbs → right bottom-corner, but the matrix transform (and therefore keymap binding order) is left bottom-corner → right bottom-corner → thumbs. Physical layout keys map to bindings by index, so ZMK Studio rendered the right bottom-corner bindings on the first three thumb keys and shifted all thumb bindings onto the wrong keys. Rows 1–4 were unaffected, making the result look almost-but-not-quite right.
2. Studio dependencies missing from the nix build (
nix/zmk.nix)Building with
CONFIG_ZMK_STUDIO=yfailed in three successive ways, all packaging gaps rather than code issues:ZMK_STUDIO_RPCselectsNANOPB, but the nanopb module wasn't inrequiredZephyrModules→ Kconfig abortzmk-studio-messagesmodule (proto sources) was also absent →ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIRempty, ninja failed on/proto/zmk/*.protopkg_resources, pythonprotobuf, and a protoc at build time → addedsetuptools,protobuf,grpcio-toolsto the python environmentBoth modules were already pinned in
nix/manifest.json/app/west.yml; they just weren't passed to the build. Non-Studio builds are unaffected.Testing
go60_lh/go60_rhwithCONFIG_ZMK_STUDIO=ythrough the Docker/nix pipeline&studio_unlock, and confirmed live keymap edits apply