Tailoring a keyboard to your needs
In the land of Mech Keys, a lot of the “End Game” Keyboards are totally programmable and frequently not a standard layout. There’s a lot that goes into programming a keyboard to be the best layout for you rather than just some layout the creator or a community member made. In this article, I’m going to attempt to explain my thought process and iteration for how I come up with custom layouts and programming. I’ll specifically be looking at the Ortholinear Keyboard “The Planck”, but the same process can be applied to any programmable board, be it the Pn layer on a Poker, and Ergodox, or the Whitefox. This also doesn’t have to apply to programming a keyboard, but also games, and other software. I’ve been remapping app-specific keystrokes for years and years and it can make life much simpler and easier.
Note: A lot of this article will use graphics created on keyboard-layout-editor.com, it’s a great tool for designing and coming up with keyboard layouts as well as sharing them.
ACCLIMATING TO THE PLANCK
When I started using the planck, it had the default keymap layout which looks something like this:
The default layer is represented by the center legend, the raised layer by the top legends, and lower layer by the bottom legends. It’s the default layout for all planck keyboards. The first thing you’ll notice if you’re not familiar with the Planck, is it’s extremely small and there’s no number row. I spent about a week trying this layout and just getting used to it. I made a lot of little notes about where I’d rather have things or what other functionality I’d like to add. I really do recommend trying utilize the defaults of a layout for as long as you can stand it. There is a lot of time and care devoted to setting it up originally, but at the end of the day it’s their layout and it’s now your keyboard.
MAKING IT MY OWN
The first thing I did was break out the layers into individual “keyboards” on the Keyboard Layout Editor so I can better visualize the layers when programming the board in Jack’s QMK language which is arranged in the layout of the board, per layer. At first I simplified the default layout to 3 layers. Base, Raise, and Lower. I don’t have much interest at this time in Dvorak or Colemak at this time so I dropped those layers and their respective macros. Moving to a simplified 3 layers allowed me to pair down to the ergonomics of what I had and find out what I liked and didn’t like. How many layers you have is a function of how you use your keyboard, and what’s comfortable to you. There’s no right or wrong answer.
Starting with the Base layer, the standard QWERTY layout, I matched what I had on my keyboard as far as keys go. It’s the layer that you should be placing delineated keys based on (not that you really have to, use blanks it’s fun too). I’ve highlighted the changes that I made compared to Jack’s default layout. My current default looks like this:
- Layer: A way to define a shift in a keyboard layout from one programmed setup to another. Layer switches can, but don’t always, change every key on a keyboard to different input. In a simplistic view the ‘shift’ key changes layers. Similarly the option key on a mac.
- Raise/Lower: In certain keyboard programming systems (QMK, TMK, Infinity etc) layers are assigned numeric value, a keypress can be assigned to shift this layer assignment up (raising) or down (lowering). Though some layouts do treat this like shifting gears in a car (start at 1, move through 2 to get to 3) , others allow for skipping directly to a layer (from layer 1 to layer 3 directly).
- Macro A broad term for describing when a single keypress corresponds to a complex action. A macro can type a word or series of words, or act as multiple keys being pressed at once (Cmd+Ctrl+shift+4), or run specific actions native to the keyboards like adjusting backlights or other functionality.
- Lock and Latch Layers Frequently when accessing a layer it’s for an extended period of time, to enable this a key can be defined to toggle a layer on and off either for a single key stroke (latch), or until toggled off (lock). Caps lock is a ‘lock’ key for shift. And the iPhone/android shift key functions as a latch layer.
For the most part, the primary layer is the same as Jacks, there’s only so much modification that can be done and still retain a QWERTY layout with functions/modifiers around the edge. Some people have swapped those into the center, a layout I have yet to try, but none the less it’s still basically the same.
Here’s where stuff starts getting really different Originally I left this layer mostly alone, and still kept the raise key on the right. The more I used my planck the more I really wished I could access all my numbers 1 handed, specifically my left hand. My right hand frequently is using the trackpad/mouse, and especially when going through and doing minor numerical adjustments in some config some where this was key. So this philosophy of access is what forced my change of sides for the raise/lower keys. I’ve also dropped the F-keys from this layer as I didn’t have room. Again, this entire layer was designed based on my need for easy access to numbers.
- Purple: I really hated where the escape key was, I use tab a lot, and kept miss clicking it, and I don’t program nearly enough to justify where esc was in comparison. Setting it back to a more “standard” layout helped me a lot there.
- Teal: Having the backlight control key all on it’s own seemed like a real waste for how infrequently I use it, and for how otherwise efficient the layout is. I do use the Grave and Tilde a lot, as well having some keystrokes bound to it so I decided to incorporate that onto the primary layer rather than having it buried else where.
- Orange: I reversed the location of the ‘Raise’ and Lower’ keys for reasons I’ll soon elaborate on. Strictly speaking this wasn’t necessary but I felt like swapping keys rather than renaming the layers so it’s obvious to others used to the planck which layer is which.
This layer is probably the farthest departure I had from the “original” layout. Born from necessities and the way I use my keyboard at work everyday. Again, what works for me, might not work for you. When I first came up with this pseudo-numpad, It was on it’s own layer. This was my first time adding a layer, but it really was just for a numpad. It was configured in defending fashion like a standard numbed, and frankly it wasn’t that helpful. I had set the layer as a lock layer as well, but it seemed inefficient. I removed the layer and shifted to this current layout.
This layer is pretty unchanged as well with two minor adjustments:
- Purple: Caps lock is the foul beast that haunts the internet, so I banished it to this layer. A cruel necessity, but infrequently used, it can be turned on and off from the raise layer.
- Orange: I like page nav keys, they’re useful, I have them mapped the same way they are on an Apple keyboard when using the fn key.
- Teal: So this is where stuff got weird. Even with raise moved under my left thumb, it’s still hard to access 8,9,0. I decided to use the 3x3 dial pad grid as it lined up with the existing 1,2,3 keys perfectly. Adding 0 was obvious and the . was just a step of convince I ran into after doing a ton of expense reporting. I’m almost to the point of dropping the rest of the number row. I’m honestly not sure about it as I do use it while typing, but the mixture of both often leads to momentary hesitation slowing down my typing.
Originally I had a lot of other macros on this layer, but found I either hit them frequently by mistake or wanted to adjust their position in a way that wouldn’t fit this layout. This drove me to create the next and final (for now) layer.
One of the great things about the QMK and TMK keyboard language is the ability to have one key do something on a quick press, and something totally different when held. I took an idea that a surfaced, I believe, on Geek Hack first, but user spicebar in late 2013; the concept is called SpaceFN https://geekhack.org/index.php?topic=51069. We all have Space bars, and we only ever tap them. We never hold them. They take up a ton of room (even on my tiny planck). Why not better utilize this space (pun intended) that is already perfectly placed for either thumb to access it. So I created a SpaceFN layer of my own. You can see it here:
The first thing that I added here were all the macros that had lived in other places. Then I continued to build out other keys and other macros.
- Purple: A Delete key for forward deleting. Very handy to have.
- Teal: A mute key, who doesn’t love a mute key?!?
So it’s been a month or 2, I love my planck, it’s great. It does what I want when I want how I’m comfortable. Adjusting any of these a little here or there is a 2–3 min project and I’m ready to keep going. Again the most important part of this article, isn’t what my layout is, but understanding how I made it mine, so you can make your keyboard yours. This community, this desire for custom doesn’t have to stop at what % your board is, or what switches you have. The mech keys movement is predicated on making a tool we use everyday more enjoyable, and less hassle.
My layout can be found here: http://www.keyboard-layout-editor.com/#/gists/f222ccfe2a6d1b23b74456f605ad4174
- Lock: This is a single keystroke to lock my mac using the alfred lock command. This is something only accessible via either command line or through a tool like alfred and unlike simply putting your display to sleep or sleeping you whole machine requires both a username and password, it also doesn’t stop any currently running process.
- 1Pwd: This key is the CMD+\ command to activate 1 Password’s mini menu. Having it easily reached with one hand is super helpful.
- Snap: Toggle Snappy (defined as CMD+Shift`). Snappy is a super helpful screenshot tool that keep s persistent floating screen shot on your screen that you can also edit and scale. I use it a lot.
- WEB BACK and WEB FRWRD: Same as CMD+[ or CMD+] for navigating back and forth in a browser. Something I frequently need 1 hand access too.
- Arrow Cluster: Just having arrows available to my left hand was nice
- Scrn Shot: CMD Shift 4 is hard to do on a planck
- ClpBrd SS: So a little known screen shot trick is Cmd+Ctrl+shift+4 doesn’t save the screen shot but copies it to clipboard. I’ve been thinking of swapping these too as I do the latter far more than the former.
- Lock Raise and Lock Lower: Exactly as they sound, I don’t use them frequently but they’re there when needed
- DFU: utilizes the RESET command to enter DFU mode for the planck, no unscrewing the thing and pressing the button for me!
- LED CTRL: Remember that LED button from the Default Layer 1? yeah here it is now.