Find a file
afiqzudinhadi f612c760df Custom Corne layout: Carpalx QGMLWY + QWERTY + Steno + FPS
- Rename keyboard to AfiqZudinCorne42
- Layer 0: Carpalx QGMLWY (primary)
- Layer 1: HUB (nav, BT, layer switcher)
- Layer 2: QWERTY (fallback)
- Layer 3: Steno (Plover keyboard mode)
- Layer 4: FPS (WASD shifted right for ortho, TBD)
- Number combos: top+home row same column
- I+P combo for backspace (RSI accommodation)
- Preserve vendor README as VENDOR_README.md
- New README with hardware info and setup guide
2026-06-20 10:30:59 +08:00
.github/workflows cleanup 2026-06-19 17:10:32 -06:00
boards clean up 2026-06-19 20:15:54 -06:00
config Custom Corne layout: Carpalx QGMLWY + QWERTY + Steno + FPS 2026-06-20 10:30:59 +08:00
keymap-drawer rename cradio to sweep 2026-06-19 15:43:26 -06:00
snippets/rgb-config cleanup 2026-06-19 17:10:32 -06:00
src cleanup 2026-06-19 17:10:32 -06:00
zephyr feat: xiao dongle rgb, corne rgb fix: multiple xiao+promicro encoder def ref: CHANGELOG.txt for more... 2025-02-27 21:09:55 +01:00
.gitattributes Corne with display dongle full compilation 2024-08-21 15:36:17 +00:00
.gitignore clean up 2026-06-19 20:15:54 -06:00
build.yaml clean up 2026-06-19 20:15:54 -06:00
CHANGELOG.txt feat: xiao dongle rgb, corne rgb fix: multiple xiao+promicro encoder def ref: CHANGELOG.txt for more... 2025-02-27 21:09:55 +01:00
LICENSE se agrego la MIT License 2022-09-17 23:50:33 +02:00
README.md clarified readme verbiage 2026-06-19 17:34:06 -06:00
VENDOR_README.md Custom Corne layout: Carpalx QGMLWY + QWERTY + Steno + FPS 2026-06-20 10:30:59 +08:00

zmk-config

ZMK firmware configuration for a Corne, Lily58, Sofle, and Sweep, built via GitHub Actions.


Quick start

  1. Fork this repository.
  2. Edit the keymap for your board in config/<keyboard>.keymap (or use the online keymap-editor / ZMK Studio Web).
  3. Commit and push.
  4. On GitHub, go to Actions → Build → (latest run) → Artifacts and download the firmware zip for your board.
  5. Flash the .uf2 files to each half:
    • nice_corne_left_oled_rgb.uf2 / nice_corne_right_oled_rgb.uf2
    • nice_lily58_left_oled.uf2 / nice_lily58_right_oled.uf2
    • nice_sofle_left_rgb_oled.uf2 / nice_sofle_right_rgb_oled.uf2
    • nice_sweep_left.uf2 / nice_sweep_right.uf2
    • nice_settings_reset.uf2 — flash to both halves if they ever desync; see Useful tips.
  6. Connect each half to the PC and drag-and-drop the corresponding .uf2 onto the drive that appears after double-tapping reset.

Disable any board you don't need by commenting out its block in build.yaml.

Repo layout

zmk-config
├── build.yaml              # GitHub Actions build matrix
├── boards/
│   ├── nice_nano.overlay        # RGB underglow (WS2812 over SPI) for nice!nano v1
│   ├── nice_nano_v2.overlay     # same, for nice!nano v2
│   └── shields/
│       ├── corne/
│       ├── lily58/
│       ├── sofle/
│       └── sweep/
│           ├── Kconfig.shield / Kconfig.defconfig
│           ├── <name>.dtsi              # matrix transform + kscan
│           ├── <name>.zmk.yml           # shield metadata
│           ├── <name>_left.overlay / <name>_right.overlay
│           ├── <name>_left_peripheral.* # optional, unused template
│           └── <name>_dongle_xiao.* / <name>_dongle_pro_micro.*  # optional, unused templates
├── config/
│   ├── west.yml             # ZMK manifest (pinned revision, see comment in the file)
│   ├── config_keymap-drawer.yaml
│   └── <keyboard>.keymap / <keyboard>.conf
├── keymap-drawer/           # auto-generated keymap diagrams (svg + yaml)
└── snippets/
    └── rgb-config/          # shared RGB underglow Kconfig, used by corne/sofle/lily58

Keyboards

Keyboard Shields Display RGB Notes
Corne corne_left, corne_right 128x32 OLED yes
Lily58 lily58_left, lily58_right 128x32 OLED no encoders supported in lily58.dtsi, not wired up in the default keymap
Sofle sofle_left, sofle_right 128x32 OLED yes encoders supported
Sweep sweep_left, sweep_right none no 34-key direct-pin board (same PCB as the upstream ZMK cradio shield)

Each keyboard's keymap lives at config/<keyboard>.keymap, with diagrams auto-generated to keymap-drawer/<keyboard>.svg on every push that touches a .keymap file (see .github/workflows/keymap-drawer.yaml). Sweep doesn't have a diagram yet — its custom physical layout isn't recognized by the keymap-drawer auto-detection.

settings_reset is ZMK's built-in shield for clearing a half's Bluetooth bonds — flash it to fix desynced halves (see Useful tips).

Display

Corne, Lily58, and Sofle each use a standard 128x32 SSD1306 OLED per half, driven by the zmk-nice-oled module pulled in via config/west.yml and enabled with the nice_oled shield in build.yaml. Sweep has no display.

RGB underglow

Corne and Sofle build with WS2812 underglow enabled via the rgb-config snippet (snippets/rgb-config/rgb-config.conf), which is applied through the snippet: field in their build.yaml entries. The actual LED strip wiring lives in boards/nice_nano.overlay / boards/nice_nano_v2.overlay.

Lily58 and Sweep don't enable this snippet, so they build without RGB.

Dongle / peripheral templates

boards/shields/{corne,lily58,sofle}/ each include _dongle_xiao, _dongle_pro_micro, and _left_peripheral shield variants, and config/west.yml pulls in three more modules for them (zmk-dongle-display, zmk-dongle-display-view, zmk-oled-adapter). None of these are wired up in build.yaml right now — they're kept as a starting point if you want to build a dongle setup later, not something this repo currently builds or tests.

ZMK Studio

ZMK Studio is enabled on every active build (CONFIG_ZMK_STUDIO=y, CONFIG_ZMK_STUDIO_LOCKING=n, and the studio-rpc-usb-uart snippet), so you can remap keys live from zmk.studio without recompiling:

  1. Flash the firmware as usual.
  2. Connect the central/master half to your PC.
  3. Open zmk.studio and connect to your keyboard.

Modules

Declared in config/west.yml:

Module Status Purpose
zmk-nice-oled active OLED display widgets, used by Corne/Lily58/Sofle's nice_oled shield
zmk-dongle-display optional, unused dongle battery/status display — only needed by the dongle template variants
zmk-dongle-display-view optional, unused nice!view-style version of the above
zmk-oled-adapter optional, unused adapter for 128x32/64/128 OLEDs without modifying shield files

Useful tips

  • If both halves desync (won't pair), flash nice_settings_reset.uf2 to both halves, then reflash the actual firmware to each.
  • To re-flash a half, double-tap its reset button — it should mount as a USB drive — then drag the .uf2 onto it.

Credits

This config was originally based on mctechnology17/zmk-config. General ZMK config inspiration also drawn from:

Keymap diagrams generated with keymap-drawer.