Skip to content

Repository files navigation

Corney - Corney Chocoflan and Classical Corne keyboard

Related Projects

Layout Helper

Use Keyboard Layout Helper to inspect and tune layers visually: https://projects.maxistar.me/keyboard_helper/

What's here

  • config/: ZMK config for a split Corne on nice!nano (keymap, macros, Bluetooth bindings, west manifest).
  • body/: printable/parametric case and plate models for the Chocoflan remix (scad, stl, step, 3mf).
  • build.yaml: build matrix for CI (left/right halves on nice_nano_v2).
  • zephyr/module.yml: declares the repo as a ZMK module, including the Corney shield root and the custom GATT features.
  • docs/gatt-layer-exposition.md: UUIDs, data format, and build notes for the BLE layer characteristic.
  • docs/keyboard-helper-ble-v1.md: implementation, security, queue, and build notes for the versioned Keyboard Helper event extension.

Clone

git clone https://github.com/maxistar/corney.git
cd corney

Prerequisites

Build firmware (locally)

  1. From the repo root, pull ZMK: west init -l config && west update.
  2. Build each half (outputs land in build/<side>/zephyr/zmk.uf2):
    • Left (enhanced): west build -p -s zmk/app -d build/left -b nice_nano_v2 -- -DSHIELD=corney_left -DZMK_CONFIG=$PWD/config -DZMK_EXTRA_MODULES=$PWD -DCONFIG_ZMK_KEYBOARD_HELPER_EXTENSION=y
    • Right: west build -p -s zmk/app -d build/right -b nice_nano_v2 -- -DSHIELD=corney_right -DZMK_CONFIG=$PWD/config -DZMK_EXTRA_MODULES=$PWD
  3. Copy the corresponding UF2 to each nice!nano over USB bootloader.

Build firmware with a custom Bluetooth name

The default Bluetooth device name is Corney. To override it, pass CONFIG_ZMK_KEYBOARD_NAME when building the left half.

Local build examples:

  • Left (enhanced): west build -p -s zmk/app -d build/left -b nice_nano_v2 -- -DSHIELD=corney_left -DZMK_CONFIG=$PWD/config -DZMK_EXTRA_MODULES=$PWD -DCONFIG_ZMK_KEYBOARD_HELPER_EXTENSION=y -DCONFIG_ZMK_KEYBOARD_NAME=\"CorneyMX\"
  • Right: west build -p -s zmk/app -d build/right -b nice_nano_v2 -- -DSHIELD=corney_right -DZMK_CONFIG=$PWD/config -DZMK_EXTRA_MODULES=$PWD

Do not apply the custom name override to the right half. The left half is the central, host-paired side, and the right half should be built with its default configuration. Omit CONFIG_ZMK_KEYBOARD_HELPER_EXTENSION=y only when intentionally building the legacy central image without the Keyboard Helper service.

Cirque trackpad

The left/central half supports a Cirque Pinnacle trackpad over the Pro Micro I2C pins. The current wiring uses address 0x2a and does not connect the trackpad's data-ready (DR) signal. There is no OLED in this configuration.

Because DR is absent, the Corney module reads the sensor status every 8 ms while the keyboard is active. The firmware reports relative pointer movement, the sensor's primary tap, and relative wheel packets through ZMK's input listener. I2C and the polling driver are enabled only in corney_left builds.

Continuous polling costs additional battery power. During system suspend the polling work stops; trackpad touch alone cannot wake the controller without DR. Press a key or use another configured wake source, after which the sensor is reinitialized and polling resumes.

CI/CD

GitHub Actions is the primary CI/CD pipeline. It runs portable protocol/metadata tests, native ZMK integration tests, and builds enhanced, legacy-only, minimal extension, peripheral, and settings-reset firmware artifacts. A manual workflow run can override the Bluetooth name for the left/central image only.

The GitLab CI configuration is retained as an equivalent alternative for a future GitLab mirror. Local Bluetooth name overrides remain a CMake option so the right/peripheral image cannot accidentally receive a host-facing name.

About

Custom Mechanical Keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages