In an effort to develop software while travelling, without having to lug a laptop or use a fiddly on-screen keyboard, I've put together a small keyboard.

Twelvety ANAVI keyboard with Pico-8 on Gamerforce CHI

The base hardware for the keyboard is the ANAVI macro pad 12. As the name suggests it has 12 keys, and a Raspberry Pi Pico on-board. It has a USB-C cable and plugs into my Gameforce Chi on which I've installed Linux (Arkos) and allows me to use Pico-8, Go etc. for programming.

The Pi Pico RP2040 can run Python firmware and using KMK (a Python-based version of QMK) I developed some keyboard handling code so that pressing combinations of keys lets me write programs. For the top 9 square of keys I assigned simpler key-mappings to more frequently used letters in English. And I tried to map symbols to combinations of keys that, for me, resemble their shapes.

Twelvety keyboard layout

Some common keys are mapped to combinations of 2 or 3 keys (working on any layer). These are Enter, Space, Tab, Escape, Delete and Del.

The bottom 3 keys are used in the following ways:

  1. as modifiers: Ctrl, Alt and Shift; so they can be used with the top 9 keys and more than one of them can be used at once
  2. to move to another layer of keys, by pressing Ctrl then Alt (next layer) or Alt then Ctrl (previous layer)
  3. as extra versions of the commonly used keys, Space and Enter
  4. Ctrl can be tapped once to toggle the Move layer. Tapping again toggles back
  5. Ctrl can be tapped once and then held down as a quick way to enter digits 0..9

The Base layer handles the letters A..Z. Combinations of keys support punctuation symbols.

The Move layer has the cursor keys and Page-up, Page-down and Home and End.

The Edit layer overlays the Move layer and adds Cut, Copy and Paste as individual keys.

The Mouse layer has mouse movement keys (instead of the cursor keys) and mouse button keys and keys for scrolling the mouse wheel up and down.

The Function layer has the function keys F1..F10, plus some combinations for PrtScn, Scroll, Pause and media Play/Pause.

The Number layer has the digit keys 0..9 (0 is 4+6 together (4+6=10))

Pressing Shift with the Number layer gives some punctuation symbols: the same ones as shifted numbers on a standard keyboard.

I've put the KMK code here https://github.com/ggaughan/twelvety with a PDF of the layout guide in case anyone finds it useful too.