Find a file
afiqzudinhadi f7377f9f48 Move HUB to layer 5 — fix hold-for-hub on non-CARP layers
ZMK layers have fixed priority by index. HUB at layer 1 was hidden
behind QWRT(2)/FPS(4). Moved HUB to layer 5 (highest) so &mo 5
always wins. Reordered: 0=CARP 1=QWRT 2=STEN 3=FPS 4=reserved 5=HUB.
2026-06-20 22:48: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 Move HUB to layer 5 — fix hold-for-hub on non-CARP layers 2026-06-20 22:48:59 +08:00
keymap-drawer Update VENDOR_README.md with upstream's latest README 2026-06-20 02:33:56 +00: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 Remove keyboard name from cmake-args, use corne.conf instead 2026-06-20 15:06:51 +08: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 Move HUB to layer 5 — fix hold-for-hub on non-CARP layers 2026-06-20 22:48:59 +08:00
VENDOR_README.md Update VENDOR_README.md with upstream's latest README 2026-06-20 02:33:56 +00:00

Corne Keyboard Custom Keymaps (ZMK)

This repository contains the custom keymaps for the Corne split keyboard. It also contains the guide on how to set up the keymaps.

Table of Contents

Hardware Info

Property Value
Keyboard Corne (crkbd) 6-column split
Keys 42 (3x6 + 3 thumbs per side)
MCU nRF52840 (nice!nano v2 compatible)
Firmware ZMK
Connection Bluetooth Low Energy (BLE)
BLE Address E8:9F:65:F3:75:D5
USB Vendor ID 0x1D50 (OpenMoko)
USB Product ID 0x615E (ZMK default)
Device Name Afiq Zudin Corne42
Display SSD1306 OLED 128x32 (nice_oled module)
LEDs WS2812 RGB underglow, 27 LEDs
BT Profiles 5 (BT0-BT4)
ZMK Studio Enabled (unlocked)
Vendor KeebMaker
Vendor Config KeebMaker/zmk-config

Current Keymap

Key positions reference:

 0  1  2  3  4  5  |  6  7  8  9 10 11
12 13 14 15 16 17  | 18 19 20 21 22 23
24 25 26 27 28 29  | 30 31 32 33 34 35
         36 37 38  | 39 40 41

Layer 0: CARP (Carpalx QGMLWY)

`      Q  G  M  L  W  |  Y  F  U  B  ;    ->HUB
TAB    D  S  T  N  R  |  I  A  E  O  H    '
LSHFT  Z  X  C  V  J  |  K  P  ,  .  /    RSHFT
          ESC  CTRL GUI | SPC  ALT  [HUB]

Combos (layers 0+1):
  top+home row same col = 1-0, shift+combo = ! @ # $ % ^ & * ( )
  E+O (K+L on QWRT) = BSPC
  A+E (J+K on QWRT) = ENTER
  SPC+ALT = ENTER
[HUB] = hold opens HUB layer, release goes back

Layer 1: QWRT (QWERTY)

`      Q  W  E  R  T  |  Y  U  I  O  P    ->HUB
TAB    A  S  D  F  G  |  H  J  K  L  ;    '
LSHFT  Z  X  C  V  B  |  N  M  ,  .  /    RSHFT
          ESC  CTRL GUI | SPC  ALT  [HUB]

Combos: same as CARP (top+home = 1-0, K+L = BSPC, J+K = ENTER, SPC+ALT = ENTER)
[HUB] = hold opens HUB layer, release goes back

Layer 2: STEN (Plover keyboard mode)

_      #  #  #  #  #  |  #  #  #  #  #    ->HUB
_      S  T  P  H  *  |  *  F  P  L  T    D
_      S  K  W  R  *  |  *  R  B  G  S    Z
          _  A  O      |  E  U  _

Layer 3: FPS (WASD shifted right for ortho)

1/ESC  2     Q  [W]  E/3   R/4  | 5    6    7    8    9    ->HUB
TAB    SHFT [A] [S] [D]    G    | _    _    _    _    _    _
M      Z     X   C   V     F    | _    _    _    _    _    _
              T/ALT CTRL  SPC   | _    _    [HUB]

Hold-taps: 1=tap/ESC=hold, E=tap/3=hold, R=tap/4=hold, T=tap/ALT=hold
Combo: SPC+ALT = ENTER (if ALT held via T)
[HUB] = hold opens HUB layer, release goes back

Layer 4: Reserved (ZMK Studio)

Layer 5: HUB

BT_CLR BT0  BT1  BT2  BT3  BT4  | +      [     UP    ]     *    =
USB/BT _    _    _    _    _    | -      LEFT  DOWN  RIGHT  /    \
LSHFT  Z    X    C    V    _    | ->CARP ->QWRT ->STEN ->FPS ->L4 RSHFT
          ESC  CTRL GUI         | SPC    ALT   _

Combo: SPC+ALT = ENTER

Related Resources

Pre-requisites

  • Corne Keyboard (KeebMaker variant)
  • macOS
  • USB-C cable
  • GitHub account (for building firmware via Actions)
  • This Repository - Custom Corne Keymaps

Clone Repository

git clone git@github.com:afiqzudinhadi/zmk-config.git

Editing the Keymap

Option 1: ZMK Studio (No Flashing Required)

ZMK Studio is enabled on this keyboard. You can edit the keymap live:

  1. Go to zmk.studio in Chrome
  2. Connect to Afiq Zudin Corne42 via USB or BLE
  3. Edit layers visually — changes apply instantly
  4. Changes persist on the keyboard (survives power cycle)

Limitations: Cannot add combos, custom behaviors, or change display/RGB config.

Warning: ZMK Studio saves changes to flash storage. These saved changes override compiled keymap. If you flash new firmware and layers behave unexpectedly, do a Settings Reset first.

Option 2: Edit Config Files

For full customization (combos, steno layer, behaviors):

Keymaps and config are located in the following directory:

config/
├── corne.keymap          <- Edit this for keymap changes
├── corne.conf            <- Edit this for feature toggles (RGB, display, BLE)
└── west.yml              <- ZMK module dependencies (usually no changes needed)

Keymap guide can be found here.

Building Firmware

  1. Push changes to GitHub
  2. Go to Actions tab → latest workflow run
  3. Wait for the build to complete (green checkmark)
  4. Download the firmware artifact (zip file)
  5. Extract — contains .uf2 files for left and right halves

If Actions is disabled on your fork: go to Actions tab → click "I understand my workflows, go ahead and enable them".

Flashing the Keyboard

1. Download the firmware

Download the firmware.zip from the GitHub Actions artifacts and extract it.

The zip contains:

  • nice_corne_left_oled_rgb-nice_nano_v2-zmk.uf2 — left half
  • nice_corne_right_oled_rgb-nice_nano_v2-zmk.uf2 — right half
  • nice_settings_reset-nice_nano_v2-zmk.uf2 — settings reset (see Settings Reset)

2. Connect the keyboard half via USB

Plug in the left half of the keyboard with a USB-C cable.

3. Enter bootloader mode

Double-tap the reset button on the keyboard. The keyboard will appear as a USB drive (e.g. NICENANO).

  • The reset button is on the PCB (check underneath the keyboard or through the case hole).
  • The LEDs on the keyboard will turn off.
  • If the drive doesn't appear, try double-tapping faster or slower.

4. Flash the firmware

Drag the left .uf2 file onto the USB drive. The keyboard will automatically reboot and the drive will disappear.

5. Repeat for the other half

  1. Plug in the right half via USB-C
  2. Double-tap the reset button
  3. Drag the right .uf2 file onto the USB drive

6. Re-pair Bluetooth

If you changed the keyboard name or did a settings reset:

  1. Open System Settings → Bluetooth on macOS
  2. Remove the old keyboard entry (e.g. Corne_Oled_RGB)
  3. Put the keyboard in pairing mode (it should be discoverable automatically)
  4. Pair with Afiq Zudin Corne42

Settings Reset

When to reset

Do a settings reset when:

  • Layers are not switching correctly after flashing new firmware
  • Keyboard name didn't change after flash
  • Both halves won't pair with each other
  • ZMK Studio saved changes are interfering with your compiled keymap
  • Bluetooth pairing issues after firmware update

How to reset

  1. Download nice_settings_reset-nice_nano_v2-zmk.uf2 from the firmware artifacts
  2. Connect the left half via USB
  3. Double-tap the reset button to enter bootloader mode
  4. Drag nice_settings_reset-nice_nano_v2-zmk.uf2 onto the USB drive
  5. Immediately double-tap reset again to put it back in bootloader mode (to avoid accidental bonding)
  6. Repeat steps 2-5 for the right half
  7. Now flash the actual firmware to both halves (left .uf2 to left, right .uf2 to right)
  8. After flashing both halves, reset both at the same time to pair them together
  9. Remove old Bluetooth entry from macOS and re-pair

Issues

Bluetooth pairing issues

If the keyboard won't pair after flashing:

  1. Clear the BT profile: go to HUB layer → press BT_CLR
  2. Remove the device from macOS Bluetooth settings
  3. Re-pair

If issues persist, do a full Settings Reset.

Layers not switching correctly

If ->STEN, ->FPS, or other layer switches go to CARP instead of the expected layer, ZMK Studio's saved state is overriding your compiled keymap. Do a Settings Reset to clear it.

Keyboard name not changing after flash

The BLE name is cached in device settings. Do a Settings Reset and re-pair.