Personal ZMK firmware configuration for a split Kyria keyboard with two nice!nano v2 controllers. Builds are produced automatically by GitHub Actions for both halves.
build.yaml creates these firmware targets:
| Half | Shield | Output file |
|---|---|---|
| Left | kyria_left |
kyria_left-nice_nano_v2-zmk.uf2 |
| Right | kyria_right |
kyria_right-nice_nano_v2-zmk.uf2 |
The active layout is config/kyria.keymap. It is a
macOS-focused layout with letters, symbols/numbers, navigation, pointer
controls, Bluetooth controls, and custom hold-tap behaviors.
config/kyria-new-design.keymap is a
separate experimental “Balanced Mac” layout. Its layer charts and controls are
documented in config/kyria-new-design.md. It
will not be built until it replaces config/kyria.keymap in a branch.
GitHub Actions runs on every push; a local ZMK installation is not required. Use a branch when trying a new layout:
git checkout -b experimental-layout
cp config/kyria-new-design.keymap config/kyria.keymap
git add config/kyria.keymap config/kyria-new-design.keymap config/kyria-new-design.md
git commit -m "Try experimental Kyria layout"
git push -u origin experimental-layoutDo not use git add .: this repository may contain downloaded firmware files
that should not be committed.
Open the repository’s Actions tab and wait for the Build ZMK Config
workflow to succeed. Download its firmware artifact and unzip it. The files
under firmware/ are only local copies; the artifact from the commit you just
built is the reliable file to flash.
Flash each half separately and use the UF2 file with the matching name.
-
Connect one keyboard half over USB.
-
Double-press its physical Reset button. It should mount as
NICENANO. -
Copy its UF2 file to that mounted drive, for example:
cp kyria_left-nice_nano_v2-zmk.uf2 /Volumes/NICENANO/
-
Repeat with
kyria_right-nice_nano_v2-zmk.uf2on the right half. -
Single-press Reset on both halves, then reconnect over Bluetooth.
The existing Bluetooth pairing normally survives a firmware update. This migration enables the mouse HID report, however, so remove and re-pair the keyboard with every Bluetooth host after flashing this version. Avoid clearing Bluetooth profiles from the keyboard unless you intentionally want to forget them.
config/kyria.confsets the Bluetooth transmit power.config/kyria.confalso enables upstream ZMK pointing support (CONFIG_ZMK_POINTING=y) for mouse movement, scrolling, and clicks.config/west.ymltracks upstreamzmkfirmware/zmk@main. The repository no longer depends on the legacymouse-ftcfork.build.yamlselectsnice_nano//zmk, the current ZMK board identifier for a nice!nano v2. Explicit artifact names preserve the familiarnice_nano_v2UF2 filenames.- The build workflow is defined in
.github/workflows/build.yml.
The navigation layer uses the upstream mouse-emulation behaviors: &mmv moves
the cursor, &msc scrolls, and &mkp clicks. Their values come from
<dt-bindings/zmk/pointing.h>; use SCRL_* with &msc, rather than the old
&mwh SCROLL_* syntax used by mouse-ftc.