planck constant

thursday, 31 august 2017

Split Planck with cherry profile keys

the current Planck (keyboard) state as documented on this site and dotfiles. This page is a continuously updated explanation and history of the keyboard layout iterations.

Notes in the accompanying keyboard descriptions pertain to layout and firmware design. The coding specifics of some of the more unique features of this particular Planck keyboard implementation can be found here.

EDIT: See the latest layout and one shot implementations not covered here. The current full layouts can be found here.

change history

since finalizing the ergo wide layout concept with the centre two columns dedicated to modifier chords, tweaks still manage to make their way into the firmware to accommodate (my particular) application and desktop workflow.

Little niggles ultimately led to normalizing keys and key relationships between layers to make the layers feel as natural, logical and easy to remember as possible – the mirroring of the left hand key pairs on the number and symbol layers is a prime example. All symbol key layer relationships have undergone a degree of placement rationalization and usage refinement – with emphasis on coding needs.

For a detailed list of the incremental layout changes, refer to the Planck history.

symmetry and overloading

while the Shift, Number and Symbol layers and their overlay layers may appear daunting at first glance, a closer examination reveals a high degree of symmetry and normalization across the layers, with the application of simple shift values for many of the overlay keys (to reduce unnecessary alternate hand layer toggling).

The clustering or keypad approach to numbers and symbols is, perhaps, the distinguishing feature of this particular keyboard layout design (aside from the wide layout) – which, IMO, is more effective than the traditional row oriented layouts (at least, I was never proficient at touch typing the numbers and symbols on full sized keyboards).

The Shift Layers, in particular, add the convenience of remapping the opposite Shift key and other non-alpha keys to provide surprisingly effective access to special characters which the wide layout would otherwise seem to omit. For programmers, the opposite thumb access to the Minus and Underscore symbols, and the Tilde and Slash keys, make for easy entry of mnemonics and path names, as an example.

The keypad and cluster organization applied to other layers similarly require little effort to adopt – of course, having arrived at this design is largely a result of my own fingering disposition, pleasant surprises aside. Overloading keys to shift values further eases memorization.


Keyboard layout legend

default colemak layout

this Colemak layout is based on the Colemak Mod-DH layout with a few adjustments, notably, the repositioning of the Z, X, V and B keys from the published layout..

Ergo Colemak DH layout

See Colemak Mod-XVCG for latest deviation from the standard layout!

The B is returned to its QWERTY position – this is a higher frequency character and feels better placed there. Not requiring for my use case, the QWERTY/Colemak ZXCV bottom row cluster, the Z, X and V placements can occupy more optimal fingering positions – in particular, the V. While a clear violation of the Colemak design goal with these common modifier keys, these keys are also easily adapted to in their new positions – a win from a pure typing perspective.

Similarly, the M character, being a higher frequency character than the K, is swapped with it on the home row. As well, it feels much less of a reach than on a staggered keyboard.

Lastly, the Quote replaces the Slash character being more useful – all is not lost, see the Shift Layers below for the equally easy to reach Slash and Question Mark.

shift layers

in order to overload keys, most notably, the Comma, Dot, Tab, Backspace and Shift keys themselves, left and right Shift layers are defined in place of the Shift modifier..

Shift overlay layouts

In usage, the overloading of the Comma and Dot keys actually feels quite natural – no more long finger reaches – with the added bonus of the home path name constructions. Similarly, the readily accessible Minus and Underscore feel equally easy to insert.

Switching between Shift and Navigation modes does not require fully releasing the associated layer key, permitting rolling between layers. See the Symbol Navigation Layer.

numeric keypad layer

the Numberic Keypad Layer and its shift symbol overlay share half the hexadecimal character set so that the primary layer may define the traditional keypad mathematical operators..

Number layer

Also, splitting the hexadecimal characters between two layers (freeing the right column mapping) also allows merging the Number and Symbol overlay layers into a single layer for raising (from a firmware perspective) – see Number Symbol Overlay Layer.

symbol navigation layer

switching between Shift and Navigation modes does not require fully
releasing the associated layer key, permitting rolling between layers. See the Shift Layers..

Symbol navigation layer

number symbol overlay layer

the single overlay layer referenced by the Number and Symbol layers via the left and right pinkie finger layer keys..

Number symbol overlay layer

Edit: this common layer has subsequently been split with the latest minor key mapping change to the Number Layer Overlay relocating the Backslash and moving the Bar to the home row.

function key layer

Function key layer

The Plus key completes overloading the Equal (Backspace) key. See the Shift Layers.


QWERTY layout

QWERTY Shift Layers similarly map left/right Shift symbols as defined for the Colemak layout. See the Shift Layers.


Plover layout

adjustment layer

the Dynamic Macro Layer (no longer required with the latest QMK software) was merged with the Adjustment Layer and subsequently disabled for flash memory space. Dropping unused (for my usage) firmware settings permitted dividing up the board into left side keyboard control assignments and right side key codes..

Adjustment layer

Note: Audio ON is defined to enable audio should it be inadvertently unavailable on keyboard boot – there is never a need to disable it!

In lieu of dynamic macro strings, two compile time double tap macro strings are available, one defined within the source configuration and the other at firmware compile time. See the planck build script in the hardware dotfiles.

The Angle Bracket keys complete overloading the Comma and Dot keys. See the Shift Layers.

dynamic macro recording

is a nifty feature of QMK software and has been relaxed to no longer require its own dedicaed _DYN layer. It was dropped from this keyboard because of its flash memory requirements. Losing its buffer contents on USB disconnect also limited its utility – hence, the two compile time macro keyboard shortcuts provided with this layout.

For dynamic keyboard shortcuts, ultimately, macro recording desktop software provide much more flexibility, such as autokey for Linux which allows an unlimited number of persistent strings to be recorded.


available memory for flashing on the current board revision is 28K (0x7000). The dozen layers, double tap definitions, dynamic macros and shift navigation left/right layer rollover currently consume over 99% of the available RAM – compilation actually reports 100% usage despite recent changes which should cause over utilization!

Any significant future enhancements to this base will likely require sacrificing a feature or two. Dynamic macros and double tap definitions would likely be the first casualties should I have any other bright ideas.

See change history. But the latest compile time macro string, Space Shift / Enter Shift sequence handling, and Number Layer with corresponding overlay (and subsequent flash memory recovery), may stand the test of time..

───  colemax

comment ?