How I use a 40% Keyboard as a Software Engineer

At first glance, a tiny keyboard with no number row, function keys, or arrow keys might seem impractical for someone who works as a software engineer. But with the right layout and muscle memory, I’d argue it becomes an even more efficient way of using your keyboard, since you won’t need to move your hand too much to reach keys that are usually far away from the home row. Let’s dig into the keyboard I use and learn more about it.
What keyboard is that?!
The keyboard I use is a PlanckEZ from ZSA, sadly it has been discontinued by ZSA in favor of The Voyager, but you can still buy a Planck keyboard from other sources such as Drop.

Not only is this a “40% keyboard” (as in, roughly 40% of the size of a regular, full-size keyboard), it is also an Ortholinear keyboard. What does that mean? It means that the keys are arranged in a grid, as opposed to staggered rows.
If that seems odd, look at the numpad of your regular keyboard. You already know and have been using this kind of key arrangement without even thinking about it, even if only to type numbers:

Hopefully your fingers are not staggered, so why should your keyboard be?
(if you wanna know why regular keyboards have a staggered layout, typewriters are the ones to blame)
First things first: Colemak
Because downsizing to a 40% keyboard wouldn’t be enough of a challenge, I also decided to switch to a new keyboard layout when I got the Planck, and I decided to try Colemak, since there’s an easy to use website to learn it. Also, I’m using a variation of the layout called Colemak Mod-DH, sometimes referred to as “Colemak-DHm”, you can read more about it here.
I chose to learn a new keyboard layout because I was suffering from strong wrist pain after a full day of work typing with my regular QWERTY keyboard (an Anne Pro 2 at the time), and after switching to Colemak I no longer experience pain after hours typing at a computer.
So, how does this Colemak-DHm layout look like? This is how my base layer looks like:

Notice that for this layout I have swapped the /
character on the bottom right corner for ?
(and moved the regular /
character to the lower
layer that we’ll see soon) - I did that because I use the question mark more often than the forward slash. I did the same with the :
and ;
characters.

But there are so many keys missing!
Not really! They’re just in a different layer. Think about how you type capital letters on your keyboard: you hold down the shift
key and then all the keys you see will output the capitalized versions of that letter, just as the number keys above the letters will output symbols such as ! @ # # $ %
.
And by the way, if you hold down alt
and type on your keyboard, you’ll notice that it outputs more symbols that you might not have known before, and if you hold alt+shift
you might have access to even more symbols! You already use layers on your keyboard!
And since this is a fully programmable keyboard, that means I can decide exactly which keys activate which layer when pressed. Let’s take a closer look at what my layers looks like.
Layers, layers, layers…
We already saw the base layer above, so what’s next?
The most common layers on Planck keyboards are the lower
and raise
layers. To activate these layers, I hold down the lower
or raise
key with either of my thumbs. These keys are located to the left and to the right of the spacebar.
The Lower layer

On the Lower layer, I have all the F keys grouped on the left side of the keyboard for easy access with a single hand, and on the right hand side I have symbols laid out in a way that resembles how a numpad would be laid out - the numpad itself is available on the same position on the WASD
layer, which we’ll see later down this article!
The Esc
key is also on this layer, on the top left corner, though I mostly use it on the same position but from the WASD
layer.

Notice that this layer also holds the ;
and /
characters that I moved away from the base layer.
The Raise layer
By holding down the raise
key with my right thumb, I get access to my Raise layer:

All the programming-related symbols are easily available and only 1 key away from the resting hand position in the home row.
This layer also has the media controls on the bottom right corner to play/pause and decrease or increase volume, as well as some macros on other corners, here’s what they do:
~/
: inserts the string~/
.SinglQuote
: inserts the string''
DoublQuote
: inserts the string""
These macros are handy for me since I set the operating system to use theUS-International
keyboard layout, and having these macros help me to avoid additional key presses for inserting each of these symbols, due to how theUS-International
layout works.
Additionally, I have added key combos on the home row to easily navigate through text, with key combos for moving forward/backwards by words, go to the end or start of the line, and other per-word or per-line operations. Watch out, it might seem a bit intimidating at first:

These per-word and per-line combos are mapped for working with MacOS, but I also have a WinRaise
layer that does exactly the same thing but with these combinations adjusted to work on Windows.
You can inspect them closely by running my Layout Tour from ZSA’s configurator website - Just click on the “Play layout tour” button when the page loads.
IntelliJ IDEA layer
When holding down the backtick
key (top left on the base layer), I get access to a layer entirely dedicated to triggering actions mapped in IntelliJ IDEA, this makes my workflow so nice and smooth.

If you use IntelliJ IDEA on a daily basis, you should definitely get acquainted with the existing keyboard shortcuts, they help a lot when running common tasks. In addition to that, I have also configured some other key bindings in IntelliJ that work together with this layer on my Planck keyboard for a great experience when working in the IDE.
This layer is way easier to understand and follow by playing the layout tour.
Nevertheless, here’s what each macro does in this layer, from top left to bottom right:
OpenFile-
: Move to the open file to the left of the current file.OpenFile+
: Move to the open file to the right of the current file.Signature
: Refactor: change signature.Rename
: Refactor: rename.Annotate
: Open Annotate/Git blame panel.Structure
: Show/Hide file structure.CamelMovL
: Move cursor to the previous camelCase hump.CamelSeL
: Select from cursor to the previous camelCase hump.CamelSelR
: Select from cursor to the next camelCase hump.CamelMovR
: Move cursor to the next camelCase hump.{Surround}
: Opens the “Surround with…” dialog.Find Usage
: Find usages.🔎 Members
: Show class members.Move Back
: Navigate to the previous cursor position.Move Forw
: Navigate to the next cursor position.Sidepanel
: Open/close the sidepanel with the project tree.Select ⬆️
: Select from cursor to the top of the file.Close 👈🏼
: Close open files to the left of the current file.Close 👉🏼
: Close open files to the right of the current file.Column Sel
: Toggle column selection on/off.DebugExp
: Opens “Evaluate expression” dialg when debugging.Split V
: Split current file vertically.Split H
: Split current file horizontally.prev split
: Move focus to the previous split pane.next split
: Move focus to the next split pane.Select ⬇️
: Select from cursor to the end of the file.Move ⬆️
: Move cursor to the top of the file.x-Variable
: Extract variable.x-Method
: Extract method.Move ⬇️
: Move cursor to the end of the file.Opt+Shift+⬇️
: move selection down one line.Opt+Shift+⬆️
: move selection up one line.
In order for all of these shortcuts to work, you’ll need to setup these keyboard shortcuts that don’t exist by default in IntelliJ IDEA:
Command | Key binding |
---|---|
Move caret to file start | ⌥ + shift + m , ↑ |
Move caret to file start with selection | ctrl + shift + m , ↑ |
Move caret to file end | ⌥ + shift + m , ↓ |
Move caret to file end with selection | ctrl + shift + m , ↓ |
Move Caret to next word in different “CamelHumps” mode | ⌥ + . |
Move Caret to next word with selection in different “CamelHumps” mode | ctrl + ⌥ + . |
Move Caret to previous word in different “CamelHumps” Mode | ⌥ + , |
Move Caret to previous word with selection in different “CamelHumps” mode | ctrl + ⌥ + , |
Close files to the left | ⌘ + shift + x , ← |
Close files to the right | ⌘ + shift + x , → |
Split vertically | ⌥ + shift + s , v |
Split horizontally | ⌥ + shift + s , h |
Git annotate | ⌥ + shift + b |
File Structure | ⌥ + shift + v , m |
Evaluate Expression | ⌥ + shift + e |
Find Usages | ⌥ + shift + v , u |
And this is how moving the cursor / selecting in camelHumps mode looks like:

No more pinky stretching!
Usually, on regular-sized keyboards, we use the pinky on the right hand to hit both backspace
and enter
keys. To make it more comfortable, I have set up the lower
and raise
keys to act as the backspace
and enter
keys when tapped. This way I can comfortably hit backspace
and enter
with my thumbs, without needing to move my hands away from the home row. And don’t worry, these keys will still activate the lower
/ raise
layers when held down.
backspace and enter when tapping the lower and raise keys

The configurator tool allows for setting different actions for each key on 4 different states: when tapped, when held, when double-tapped or when tapped and held.
Numbers and arrow keys
Most people are already used to typing numbers in a numpad from a full-size keyboard. Therefore having a layer that lays out a numpad right under your right hand feels very natural.
On the same layer, I have the arrow keys where the WASD
keys would normally be in a QWERTY layout. (now that I think of it, it’s a bit ironic that I call the layout “WASD” but do not actually have the WASD letter keys mapped in this layout… 😅)
I activate this layer by holding down the tab
key with my left pinky, this allows me to use the arrow keys with my left hand, while also having the numpad under my right hand. This how it looks like:

Notice that around the arrow keys I also have some other navigation keys mapped, such as page up, page down, home and end.
The arrow keys can also be easily accessed on the base layer by tapping the 4 keys on the bottom right corner:

Isn’t it hard to remember where all the keys are!?
Personally, I think that if you map the symbols into an arrangement that makes sense for you, it should never be an issue as you’ll grow used to it and after some time you build the muscle memory for it.
Mouse movement!
Wait, what? YES.
While holding down the space
key, the Mouse layer becomes active and I can move the mouse cursor and click using the keyboard:

It might be a very niche feature, but I find it to be very useful when using the keyboard during a train ride.
Browser tab navigation
To activate this layer, I tap and hold the shift key:

This layer is used to quickly navigate to the open tabs in the browser by using the keyboard shortcuts to move to an open tab at a specific position with ⌘+1
, ⌘+2
…⌘+8
with the keyboard.
This layer also has shortcuts for zooming in and out in webpages, and to move to the previous or next open tab.
I also have a second browser tab layer with the same shortcuts but using the shortcuts with the ctrl
key instead of the ⌘
key, because I use these shortcuts on both Windows and MacOS.
Gaming 🎮
I have a dedicated layout for gaming, with the WASD keys placed where a standard QWERTY keyboard would have, as well as some keys that are commonly used for gaming around it.

Also, when holding down the lower
key in this layer, I get access to a numpad right under the left hand, which makes it super handy for quickly triggering in-game actions with the numbers without having to move my hand away:

I also have a dedicated layout for playing The Sims 4 🙃

The End (for now…) ⌨️
Those are all the layers that make me absolutely love having the Planck as my daily keyboard. If you browse my layout, you will notice that I also have a layer dedicated to VIM - well, technically for Neovim. I haven’t had the time to really dive into the VIM rabbit hole yet, so I’m keeping it off this list for now. If you’re a Vim user, let me know how you’ve set up your workflow!
Keycap close-ups!
Here are some close-up shots of my custom keycaps 😊



What’s your keyboard of choice?
Do you also use a non-conventional keyboard? Share a picture in the comments and tell me what makes it special — I’d love to see your setup! 🤓 ⌨️