A raylib/raygui companion GUI that visualizes a Corne's live key and layer state streamed over raw HID from ZMK firmware.
-
Homebrew dependencies:
brew install raylib hidapi -
Corne ZMK firmware exposing the raw HID broadcaster (the protocol in
src/protocol.cmirrorskb_broadcaster/protocol.h)
Your Corne must run ZMK firmware built with two modules:
- zmk-raw-hid (raw HID transport)
- zmk-kb-broadcaster
(broadcasts key/layer events over raw HID — the wire protocol
src/protocol.cspeaks).
Add both to config/west.yml and append the raw_hid_adapter shield (from
zmk-raw-hid) to your shields in build.yaml:
# config/west.yml
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
- name: zzeneg
url-base: https://github.com/zzeneg
- name: jameshaston
url-base: https://github.com/jameshaston
projects:
- name: zmk
remote: zmkfirmware
import: app/west.yml
- name: zmk-raw-hid
remote: zzeneg
revision: main
- name: zmk-kb-broadcaster
remote: jameshaston
revision: main
self:
path: config# build.yaml
include:
- board: nice_nano_v2
shield: corne_left nice_view_adapter nice_view raw_hid_adapter
- board: nice_nano_v2
shield: corne_right nice_view_adapter nice_view raw_hid_adapterEnable the broadcaster in config/corne.conf, then flash both halves:
CONFIG_ZMK_KB_BROADCASTER=y
Once flashed, the app works over USB or Bluetooth on any platform.
make release
make run-release
Debug builds: make debug / make run-debug. Cleanup: make clean.
make test

