Skip to content
joric edited this page May 6, 2024 · 425 revisions

New!

ZMK is modern, open source Zephyr-based wireless keyboard firmware. Probaby the best choice for now. Also see QMK.

ZMK does not need Nordic softdevice (but you don't have to remove softdevice if present either).

Repositories

Building

Note that nRFMicro and Jorne are officially supported now. Read official documentation here:

Build

(Before calling west, set up Zephyr environment, as here https://zmkfirmware.dev/docs/development/setup)

Building jorne (looks like nrfmicro is still not in the build.yml so you'd have to use command line):

git clone https://github.com/joric/zmk
cd zmk && git checkout jorne
west build -p -b nrfmicro_13 -- -DSHIELD=jorne_left
west build -p -b nrfmicro_13 -- -DSHIELD=jorne_right

Power profiler

See https://github.com/joric/nrfmicro/wiki/Batteries#zmk

Jorne keyboard

I built ZMK firmware for my Jorne keyboard. You may download binares and code.

ZMK-Config

This is the latest ZMK for Jorne (clone the repo to rebuild and download artifacts, or get firmware.zip from releases):

Keymap editor (fork the repository above and use it on your fork):

Jorne branch

This is really outdated and includes patches that are already in the mainstream ZMK but you can peek RGB configuration here.

Direct links to the latest release with RGB sync (this is for nRFMicro 1.3+, double press reset and upload .uf2 to disk as usual):

You may also need erasing the flash to reset bonds if nothing else helps:

Direct link to the releases section:

This firmware supports OLED screens, per-key RGB leds and VCC power saving.

Code

Patches

I had to merge a few patches into my base repository, some are already merged to upstream (follow zmk github)

Shortcuts

RGBTOG currently toggles VCC as well (CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y). There's no sleep mode or lock shortcuts in ZMK just yet, sleep mode as automatic (15 minutes).

  • Raise + Lower + ~ Turn RGB and OLED off (essentially turns off VCC, key matrix still works)
  • Raise + Lower + Shift Reset Bluetooth bonds

See full keymap here:

Issues

  • VCC management seems fine with the latest ZMK, no leak, checked with 26 LEDs per each half, but it needs manual turning off with a shortcut (currently it's tied to RGBTOG). Key matrix still works even with VCC off, it only turns off OLED and RGB.
  • OLED initialization is static in Zephyr so it only works if VCC is enabled on startup. To check if OLEDs work, enable RGB+VCC using RGBTOG key binding, then wait at least a minute. After that, that'd be stored to settings and restored at startup/reset (fixed in #674, #675 so you may want to pull fresh ZMK)

Video

Misc

nRF52833

See Instructions on how to configure ZMK to work with nrf52833.

HHKB Pro 2

@kahru powers the entire HHKB switchboard through a GPIO pin in the high power sourcing mode at 3.3V (due to the fact that VCC cutoff requires a Kconfig change so you cannot control everything in the overlay). HHKB consumes 0.8W (about 1/5 of a laptop), nRF52840 LDO is 25 mA and GPIO is just 15 mA max, so that power configuration probably needs revisiting.

I got the prototype board from @4pplet and I got it working. I figured out how to make Zephyr out-of-tree modules and define gpio nexus nodes in devicetree. Now the code is pushed to the renamed repo https://github.com/kanru/hhkb-zmk and most of the HHKB Pro2 kscan code is extracted to its own shield that can be reused by any boards easily. (discord)

hhkb-nicenano-zmk

Trackpoint

See my article about trackpoints: https://github.com/joric/jorne/wiki/Trackpoint There are currently 2 problems:

  1. nobody tried trackpoint at 3.3v (edit: tried, it works)
  2. all trackpoints are ps/2 and there's no ps/2 support in ZMK (there's ps/2 driver in zephyr though)

TL;DR: trackpoints work with ps/2 Arduino library at 3.3V just fine. There's no ZMK support just yet.

Update: Keyboard Minimalists ran ZMK touchpad and trackball, links to discord (join at https://discord.gg/zUsWqq9ggb):

Displays

Corne-ish Zen uses E-ink (Sharp GDEW0102T4). Nice!view uses LCD (Sharp LS011B7DH03), see discord (@Nicell: always been the sharp display. I tinkered with the epaper, but was never happy with the performance so never released it as a product).

E-ink

LCD

Careful with the screens, there are screens for direct soldering, they have different pitch/spacing. Mind that open source board is slightly thicker, because of another connector. Board dimensions are slightly different too. Main branch also has an incompatible pinout. Nice!view compatible branch here: https://github.com/karnadii/sharp_memory_display_breakout/releases

Nice!view Karnadii
niceview karnadii

References

Clone this wiki locally