The Planck Keyboard
by |The Planck is a 40% computer keyboard with an ortholinear layout (the keys are arranged in columns rather than being staggered as on a traditional typewriter keyboard). The keys are laid out in a 4 × 12 grid with a 2-unit-wide spacebar on the bottom row, for a total of 47 keys. This arrangement is referred to as the MIT layout. The alternative offered is the grid layout with 48 keys, all 1-unit wide. You can find out more about the rationale and the physical properties of the board on the Ortholinear Keyboards website.
The board’s microcontroller is programmed through the free/libre Quantum MK firmware, which allows for a great deal of flexibility in implementing keyboard layouts. The keymap is organized into layers that one can switch between by holding or tapping function keys.
Base layer (Qwerty)
Tab | Q | W | E | R | T | Y | U | I | O | P | ' Fn5 |
Esc Ctrl | A | S | D | F | G | H | J | K | L | ; Fn4 | Ret Ctrl |
( Shift | Z | X | C | V | B | N | M | , | . | / | ) Shift |
[ Fn3 | { Hyper | < Alt | Super | Fn1 | Space | Fn2 | Super | > Alt | } Hyper | ] Fn3 |
The base layer, or default layer, is the active layer when the keyboard is powered on. Function keys can be used to
temporarily switch to another layer, which changes what some or all of the keys do, until you switch back to the base
layer. I opted for as much symmetry as possible in the base layer so that I could chord with opposing hands, at the
expense of including some conveniences such as arrow keys and backspace, which had to be relegated to other layers. On
the other hand, I was able to include pairs of parentheses, brackets, and braces by implementing them as tap actions on
modifier keys. The Fn1-5
keys switch to various other layers for the duration of being pressed.
The prominent position of the Esc key is based on the location of Caps Lock on a traditional keyboard, which I had remapped to a dual-role Esc/Ctrl key in software (especially useful for Vim). Doing the same for a dual-role Return/Ctrl key for use with other keyboards proved problematic for some software, however implementing this in the keyboard’s firmware avoids any such issues.
Base layer (Colemak)
Tab | Q | W | F | P | G | J | L | U | Y | ; | ' Fn5 |
Esc Ctrl | A | R | S | T | D | H | N | E | I | O Fn4 | Ret Ctrl |
( Shift | Z | X | C | V | B | K | M | , | . | / | ) Shift |
[ Fn3 | { Hyper | < Alt | Super | Fn1 | Space | Fn2 | Super | > Alt | } Hyper | ] Fn3 |
This is an alternate base layer for the Colemak layout. The default layer can be changed through special actions that can be attached to keys (more on that below). The dimmed keys depicted above are “transparent.” That is, they inherit the functionality of the lower layer (the base Qwerty layer in this case), which saves you the trouble of having to redefine keys that don’t change between layers.
Numeric layer
Sup-` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | ' Fn5 |
Esc Ctrl | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Ret Ctrl |
( Shift | - | = | ` | \ | a | b | c | d | e | f | ) Shift |
[ Fn3 | { Hyper | < Alt | Super | Fn1 | Backspace | Fn2 | Super | > Alt | } Hyper | ] Fn3 |
The function key under the left thumb engages the numeric layer, which contains F-keys, number keys (including allowances for typing hexadecimal numbers), and unshifted symbols that appear in the US keyboard layout. This layer also contains a backspace function in the spacebar position (mnemonic: hold the function key to the left of the spacebar to delete characters to the left).
Symbol layer
Sup-` | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | ' Fn5 |
Esc Ctrl | ! | @ | # | $ | % | ^ | & | * | ' | " | Ret Ctrl |
( Shift | _ | + | ~ | | | – | — | ) Shift | ||||
[ Fn3 | { Hyper | < Alt | Super | Fn1 | Delete | Fn2 | Super | > Alt | } Hyper | ] Fn3 |
The symbol layer, in addition to including higher order F-keys, includes the shifted number keys for typing symbols that would otherwise require two modifiers to access on the Planck. This layer contains a forward delete key in the spacebar position (mnemonic: hold the function key to the right of the spacebar to delete characters to the right).
Directional navigation layer
Sup-` | ' Fn5 | ||||||||||
Esc Ctrl | Home | PgUp | PgDn | End | ← | ↓ | ↑ | → | ; Fn4 | Ret Ctrl | |
( Shift | ) Shift | ||||||||||
[ Fn3 | { Hyper | < Alt | Super | Fn1 | Fn2 | Super | > Alt | } Hyper | ] Fn3 |
60% keyboards that lack dedicated arrow keys tend to place them on a function layer in the Qwerty IJKL position. Because I am used to Vim’s characterwise/linewise movement on HJKL, I placed arrow keys there instead. The layer can comfortably be activated by holding the semicolon key with one’s pinky. The conceptually “bigger” counterparts of those directional movement keys are placed symmetrically on Qwerty SDFG.
GUI (window management/mouse/media controls) layer
Sup-` | M2 | M↑ | M1 | W↓ | Prev | ┌ | ┬ | ┐ | ' Fn5 | ||
Esc Ctrl | M← | M↓ | M→ | W↑ | Full | ├ | ┼ | ┤ | Ret Ctrl | ||
( Shift | W← | M3 | W→ | Next | └ | ┴ | ┘ | ) Shift | |||
[ Fn3 | Prev | Play | Next | Bri - | Sleep | Bri + | Mute | Vol - | Vol + | ] Fn3 |
This layer can be activated with either pinky or even with the edge of one’s palm. Since this layer packs a lot of functionality into both sides of the keyboard, it was important to be able to activate the layer with either hand given that the bottom corner keys are relatively awkward to reach.
The bottom row contains media controls, such as play/pause, volume up/down, and screen brightness controls. The left-hand side offers mouse controls on WASD while the right-hand side provides shortcuts for my window manager to snap the active window to areas of the screen, make it full-screen, or throw it to another monitor.
Keyboard layer
Reset | Debug | ' Fn5 | |||||||||
Qwer. | Cole. | ... | |||||||||
LED - | LED Toggle | LED + |
The keyboard layer pertains to functionality local to the keyboard: controlling the backlighting, setting the default layer, and putting the firmware into reset or debug mode.
You can find the latest version of my keymap file at https://codeberg.org/noahfrederick/qmk-keymaps. You can find the version of the file that was current at the time of this writing here.