The Planck Keyboard

by Noah Frederick |
Photograph of a Planck keyboard with steel plate, red milled bottom, and blank black DSA-profile key caps
Planck keyboard with steel plate, red milled aluminum bottom, and DSA-profile key caps

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://github.com/noahfrederick/dots/tree/master/planck. You can find the version of the file that was current at the time of this writing here.