A ZMK module holding a collection of keyboard firmware for my keyboard PCB designs. These use Graph Theory based sparse scanning matrices to avoid ghosting, rather than diodes. They have simple minimal Qwerty layouts including ZKM Studio support to cover basic usage:
- Gamma Omega TC36K, a Graph Theory based diode-free keyboard with 26 GPIO pins for 36 keys and 6-key roll-over using a partial Tutte-Coxeter Graph.
- Gamma Omega Hesse, a Graph Theory based diode-free Bluetooth keyboard with 21 GPIO pins for 36 keys and 4-key roll-over using the Hesse Configuration Incidence Graph.
- Forager Acid, a Graph Theory based diode-free Bluetooth split keyboard with 13 GPIO pins for 17 (or 18) keys and 4-key roll-over per half using a partial Heawood Graph.
See also my QMK keyboard firmware, and the following ZMK keyboard firmware for other people's diode-free Graph Theory designs:
- Heawood42, the first diode-free Graph Theory based keyboard. A Bluetooth split keyboard with 14 GPIO pins for 21 keys and 4-key roll-over per half using the (full) Heawood Graph.
If you had built one of my keyboard PCB designs you can download the latest build of firmware for these keyboards, using a default Qwerty layout with ZMK Studio enabled as a starting point.
If you then wanted to customise the firmware, you would probably want to clone the
Unified ZMK Config Template,
and include a reference to the keyboard and this module in your config/west.yml file:
manifest:
defaults:
revision: v0.3
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
# *** Add the following two lines: ***
- name: peterjc
url-base: https://github.com/peterjc
# *** Add the above two lines: ***
projects:
- name: zmk
remote: zmkfirmware
revision: v0.3
import: app/west.yml
# *** Add the following three lines: ***
- name: zmk-keyboard-graph-theory
remote: peterjc
revision: main
# *** Add the above three lines: ***
self:
path: configAdd your desired keymap using the appropriate naming (tc36k, hesse, or acid)
which needs at least one file like config/tc36k.keymap, and add a matching entry to
your build.yaml with the appropriate controller board (rpi_pico for the tc36k), eg:
include:
- board: rpi_pico
shield: tc36k
snippet: studio-rpc-usb-uart
cmake-args: -DCONFIG_ZMK_STUDIO=ySplit keyboards get both left and right (and dongle) entries in build.yaml.
If GitHub Actions are turned on, this should then build your new firmware.
See my personal ZMK Config as an example.
Read through the ZMK Module Creation page for background.
For more info on modules as used in ZMK, you can read through the Zephyr modules page and ZMK's page on using modules. Zephyr's west manifest page may also be of use.