Among all the recent chaos (that I still haven’t finished a new post about), I got a new keyboard! And this one’s a novel shape, even by my standards.
Picking a keyboard
I have used a Logitech K860 for a few years now, which is a good keyboard, but also quite wide.
Prior to that I have used Microsoft Sculpt Desktop, which has a much more pleasant form factor (a 75%-ish layout with easy-to-reach arrow keys and navigation keys), but its keys are the slightly mushy kind.
And, of course, both of these keyboards are hard to clean due to each key sitting in its own little hole.
So I decided to get a new keyboard, perhaps even a mechanical one again.
Long story short, I found quite a number of keyboards matching my criteria.
As it goes with these things, most of these aren’t anywhere near Ukraine so shipping would take quite a while, but I did find a couple local companies assembling variations of the Sofle keyboard (which is widely recommended as a small-but-not-too-small option), and decided to give that a go.
The keyboard
Sofle is a wired split keyboard with 58 keys and two rotary encoders. The “choc” version that I have here uses low-profile (read: flatter) Kailh Choc switches with matching keycaps, which feels similar to semi-flat keyboards that I have worked with.
The switches are hot-swap (read: replaceable without soldering), which is why a few of these have a differently colored base from the rest - I have swapped most of the keys’ switches from “brown” for a slightly lighter/smoother “gray” variant and replaced the modifier keys’ switches with a “red pro” variant that is a little lighter than “gray”.
The keyboard runs on QMK firmware (Vial fork in particular), which means that you can change how everything works, such as:
Change any key to another key, common or uncommon
(media keys, F23, mouse buttons - you name it)Change what rotary encoders do
(as they work as 3 keys for tick up/tick down/click)Define multiple “layers” of keys
Kind of like Fn works on regular keyboards - so you don’t have an F-key row, but you can have a key that you hold to access those.
Layers can be activated on tap (toggle), when a key is held, or for one key press.Have keys that do one thing when tapped and another when held.
If you’ve seen keyboards that seemingly do not have any Ctrl/Shift keys or do not have some of the letters, that’s one of the ways for doing this.
You also get a few keys with advanced (tap/hold/double-tap/tap+hold) logic.Key combinations that produce a different key than usual
Keys that press a modifier key and a regular key (so you can have a key that presses Shift+1 to type !, for example).
Macros, of course
And all of this can be configured using a relatively small cross-platform application, or even in a web browser!
Layout
This keyboard features 6 columns of keys at each half. Assuming that you stick to “normal” split rules (right-most keys on the left side of keyboard are T/G/B), and keep the right-most column of keys (backspace, Enter, RShift), you are left without `[{
`, `]}
`, and `'"
` key.
The lower edge of the keyboard features 5 keys per side, intended to be (mostly) pressed with your thumbs. It’s a good idea - usually you only hit Space and maybe Alt/Fn with your thumb, and that’s it. But here 3 of these keys are readily accessible, and can be used for common keys or layer keys.
My original idea was simple enough: since not all symbol keys are going to fit on the keyboard anyway, I could put the arrow keys at the right edge of the keyboard and do most of the symbol entry through a layer:
And that worked pretty well! Up until I started writing a reply to an email.
You see, most Cyrillic alphabets have 6-7 more letters than English alphabet, and those letters are commonly spread across the right edge of the keyboard:
In other words, I have locked myself out of a few letters. But not just that - even if I didn’t, the `ї
` is beyond the edge of the keyboard no matter what. And I can’t just throw out the arrow keys either because they are used in my tools of choice a lot.
In search for a good layout I have downloaded Microsoft Keyboard Layout Creator - a fairly antique piece of software that lets you specify what character pops up when a key is pressed alone or with shift/altgr/ctrl/caps lock/etc. I did not manage to create a great keyboard layout, but I did manage to create some problems for myself:
But I have also looked at many different keyboard layouts and learned some new things - for example, that Windows ships with “programmer” layouts for some languages (like Polish, Czesh, or Romanian) that keep symbols where they usually are and put accented letters on AltGr layer instead.
And that some languages have “typewriter” layouts where the digit row types symbols by default and digits if you hold Shift.
Which got me thinking - how often do I type digits anyway? Code is mostly letters and punctuation, and so is most of the text that I type (the post up until this paragraph features 15 digits and 3600 letters - that’s less than 1%!), so why should I hold Shift for `!
` or `()
` anyway?
The result is the following: on the default layer, I have all of my common punctuation and operators:
Holding the modifier next to the Enter key enables Layer 2, where digit keys exist in their normal order, along with their shift+ shorthands (so that I don’t have to hold MO(2) + Shift):
The TG(1) on the left here toggles Layer 1, which restores digit keys to their normal order for occasions when that is necessary (a bunch of number entry or videogames):
And finally, holding the left-most thumb key on the right half enables Layer 3, where F-keys are:
Having arrow keys ordered as ← → ↑ ↓ is a little unusual, but that puts my right thumb somewhere between ← and →, and that is very welcome when working with text.
Conclusions
In terms of size and layout, keyboards can generally optimize either for hand/finger travel distance, or for number of key presses it takes to do something.
An extreme example of the former are various 32..40-key keyboards that are commonly used with “home-row mods” (home-row keys double as modifiers when held instead of tapped) to never move your fingers more than one key away:
An extreme example of the latter is Hyper 7, a keyboard that has 75% more keys than a regular keyboard:
My personal take on this spectrum is as following: I like compact and semi-compact keyboards because that makes for less movements when switching between keyboard and mouse, but only to a point - making the keyboard 2cm narrower at cost of some of common symbols (or, for my case, also letters) doesn’t feel like such a good deal for me.
Other than that:
Knobs are cool, though I still haven’t found a good use for the right one.
Thumb keys are cool and I’m still figuring out the best order for these.
Some keyboards have two rows of these, but also most of those keyboards are pretty dang big.I figured out that having LCtrl/LShift offset by one key upwards is very convenient for my left pinky (somehow even more convenient than everyone’s favorite “LCtrl is in place of Caps Lock”) and this is already costing me when I use other keyboards.
My reliance on arrow keys and non-English character entry in day-to-day tasks have put some limitations on fun things that I could have been doing with the keyboard’s layout.
Redox, Pinky4, and Afternoon Labs’ Breeze are different takes on this problem.
And that’s about it!
But how about you - have you used a 65%-or-smaller keyboard for software development, and how did you organize your keys?