Ferris Compact
Life with 34 keys
Pierre Chevalier’s ferris family of keyboards is based on using a 34-key split layout focused on minimalism, portability, and ergonomic comfort. It is fully open-sourced and the firmware is contributed to the QMK project released under GPL. You can print one yourself, purchase a kit to assemlbe (including soldering), or buy a pre-built one and just add keycaps. I first came across this from Ben Vallack’s channel where he discusses workflow optimizations including various trials with keyboards.
Layout
You can use the layout editor at config.qmk.fm to implement various layers, however you see fit. I currently use the following three layers though this is always an exercise in optimization (much like my emacs configuration). A few notes on the layout:
- I had initially used home-row mods (hrm) meaning that
A
,S
,D
, andF
would be equivalent toCTRL
,ALT
,SHIFT
,CMD
/GUI
, and the symmetric equivalent on the other side with;
,L
,K
, andJ
. But as an emacs user I found needing my meta key (CMD
/GUI
) and control far more accesible for multiple combinations (e.g.C-x C-r
for opening a recent file, whereC-
means holding downCTRL
), and so the hrm setup meant having to switch whihcCTRL
key I was holding down depening on what the action was. This is still fine forSHIFT
andALT
, however. LT(N,X)
: this lets me switch to layerN
when held, otherwise the input isX
. I’ve mapped the layer1
andTAB
on the left thumb key; and layer2
andRETURN
on the right thumb key- I do think there is plenty of room for optimization, and I’m still techinically faster on a standard keyboard (loving my [Happy Hacking Keyboard][hhk]) but the fact that my hands almost never have to move is a huge benefit.
QMK
I use the v0.2 Ferris Compact, and though it’s marked as experimental, I’ve had no issues compiling and flashing the board. You can find plenty of documentation regarding QMK on the official website.
Compiling the source and flashing the board
Replace the following variables in the build.sh
script:
QMK_FIRMWARE_DIR
: location of the QMK sourceLAYOUT
: name for your layoutLAYOUT_FILE
: filename of your JSON layout
Build
#!/bin/sh
QMK_FIRMWARE_DIR=$HOME/src/qmk_firmware
LAYOUT=arj_ferris
LAYOUT_FILE=./ferris_compact_v01.json
CURRENTDIR=`pwd`
mkdir -p $QMK_FIRMWARE_DIR/keyboards/ferris/keymaps/$LAYOUT/
cp layouts/$LAYOUT/keymap.c $QMK_FIRMWARE_DIR/keyboards/ferris/keymaps/$LAYOUT/keymap.c
cp layouts/$LAYOUT/$LAYOUT_FILE $QMK_FIRMWARE_DIR/keyboards/ferris/keymaps/$LAYOUT/$LAYOUT_FILE
cd $QMK_FIRMWARE_DIR
qmk compile -kb ferris/0_2/compact -km $LAYOUT
cd $CURRENTDIR
Flash
#!/bin/sh
source build.sh
qmk flash -kb ferris/0_2/compact -km $LAYOUT