NaN-15 -- a 15-key chorded computer keyboard

Finished product


The firmware is based on TMK;
see ./firmware/.

In addition to its main (chorded) input mode, a few special layers
are available:

  • a number pad,
  • a set of navigation keys,
  • a mouse emulation layer,
  • a macro pad. (Macro recording is done in chorded mode.)

On these layers, keycodes are registered in the usual way, i.e. once
a key is pressed.

In chorded mode,

  1. one or more keys (the "chord") are pressed down in no particular
  2. once the first key of the chord is released, the keycode mapped to
    the chord is being registered;
  3. any further activity is ignored until all remaining keys are

The chorded-mode keyboard is divided into sections, and there are a
few restrictions as to the possible chords. These restrictions and
the sectioning make it possible to fit the chordmaps into EEPROM where
they are on-the-fly editable.

The principal section comprises the top three rows where a chord can
consist of up to one key from each of the four columns. This section
is switchable from its lower to an upper level, providing room for 511
different keycodes. Each keycode is stored with its own set of the
four modfiers Right Alt, Left Alt, Left Shift, and Left Control.

The Fn section occupies the same 12 keys as the principal section.
It has two levels that are bound to the function chords Fn0 and Fn1.
A chord in the Fn section can consist of one to four keys of one
particular row, providing room for 92 different keycodes, each with
its own full set of eight modifiers. The Fn section is used for two
flavours of modifier chords, one-shot and toggled, and a few auxiliary
chords for customization, layer switching, and chordmap printing.

The three keys on the bottom row form their own little section. The
seven chords located here select the upper level of the principal
section or one of the Fn section levels, and perform a keyboard reset.

The special layers and the bottom row are immutable, but both
principal section and Fn section can be customized at any time by
swapping chords.

There is storage for eight chord macros. Each can record up to six
chords (including modifiers). Recorded macros are played back through
dedicated macro chords in the principal section, or by keys of the
macro pad.

Both chordmap customizations and macro definitions persist through
power cycles


The keyboard is able to print its current chordmap tables by
"typing" them to the host computer. Depending on the host computer's
keymap, the output of this operation may appear a bit mangled
(Example, affected by QWERTZ layout

See ./firmware/cheatsheet-generator/ for a tool that converts the
textual chordmap into a graphical representation (Example: page
, page
), and for a
similar tool that extracts documentation of the keyboard
from the firmware
source code.


See ./hardware/.

The main parts are three PCBs (top plate, PCB proper, and bottom
plate) and a 3D-printed frame.

It uses Cherry MX-style switches and an ATmega32U2-MU MCU. There are
12 LEDs signalling keyboard state and errors.


The finished product draws about 18 mA.

Finished products