> Nothing special going on with the function keys. Having them on the same positions as numbers makes them easy to learn, which is important for me as I almost never use them.
Unfortunately, most manufacturers of ergonomic keyboards seem to think along the same lines, so they omit the corresponding hardware keys and argue that you could always put the function keys on another layer if you really need them. I, however, use my function keys hundreds of times a day (mainly to switch workspaces) and I do not want to have press an extra key every single time.
The key principle I follow with all my key bindings is this: The more often I use a certain functionality, the more accessible it needs to be, i.e. the less work (or, literally, input) it should require in order to avoid putting needless strain on my fingers and wrists. (I have suffered from RSI in the past.) In particular, oft-used commands[1] should be available through a single key (or a very short and accessible[0] key chord) if possible. Unfortunately, the most common set of key bindings (Vim/Emacs/IntelliJ/…) usually violate this principle.
Long story short, this is the single reason why I haven't bought an ErgoDox/keyboardio/… so far.
Also, I don't think it really matters whether personally one uses a key X or not. In my experience, you can never have enough keys! And you will find an application eventually – provided the key is in the right place ergonomically speaking, i.e. easy to reach.
[0]: The more often I use a key chord, the stronger the fingers should be that push the individual keys – e.g. the thumb, index and middle finger.
[1]: Commands, in turn, that are used only rarely should actually not be available through a key binding at all – no one remembers them and they only clutter the key binding space and cause confusion when you do (accidentally) hit those keys. Instead, those commands should be accessible through a searchable command palette. (Think Shift-Shift in IntelliJ.)
The entire purpose of these layouts is to reduce movement to keys you most use. If you really are using the F-keys hundreds of times a day then it very much is in your ergonomic interest to bring those keys closer to the home row to make accessing them easier than stretching out for them.
In your specific case I'd probably map the layer modifier key on one hand, then map the F-keys like a numpad on the other so there is no same-hand chording. Though I strongly suspect you aren't using all 12 keys and instead are using say the first 5 or 6 only.
>IntelliJ has defined shortcuts for F10, Shift+F10, Ctrl+F10 and Ctrl+Shift+F10. Adding another modifier to all these isn't great.
You're thinking small here. With QMK keyboard firmware, a single key can send shift-f10 or similar. I have a top layer key that acts as ctrl-super and also as a sticky key (I don't have to hold it) because I configured a bunch of key chords in Sway that start with those keys. Mainly focusing specific programs by appid or class. So, I'll hit that key and then b for browser, v for video (mpv), etc. You can even have keys that directly type out parentheses, no shift needed. The default layout for my keyboard had that for both parens and brackets. I found more useful things to put on those keys, though.
I use a Pinky4 which takes some stuff off the outer edges compared to a 60%, but has more on the inner edges, and so I stuck that key somewhere along the upper right edge of the left half. If I were using qwerty, it'd be near t and g keys.
In addition to being able to run QMK on a keyboard, you could also get a macropad, or just a second keyboard (maybe something small like a planck, could go above your main one), and have all sorts of specific binds like this. I would recommend layers instead for anything not used constantly, but a case can be made for both options. I have mouse keys in a separate layer, letting me hold a modifier with my thumb and then use something similar to an arrow key cluster to move my mouse. I even have all 4 scroll directions mapped, which lets me scroll horizontally, unlike my actual mouse.
Software on the computer really affects use-case I think. In qutebrowser (or firefox + tridactyl) I just hit r to refresh a page. I never miss easy access to f5. I can also copy a page's url with yy instead of doing a dance of ctrl-l and then ctrl-c. I can still hit f5 if I have to. Like if using an unusual program or another computer with my keyboard.
It sounds like due to your software choices, you use the function row a lot more than me. There are some larger split keyboards, but it's worth considering changing some of your behavior/software also.
On memorizing: for me, it hasn't been difficult. Specialty layer switches are placed on keys that are difficult to press so I don't accidentally hit them. Additionally, since they're out of the way, it's easy to remember them because of the difficulty.
For more common layer switches, I extensively use dual-use keys. For example, if I tap "F" then I get the letter "f" but if I hold it, it switches to a vim-like layer. HJKL becomes arrow keys, Y becomes Ctrl+C, etc. The point is that you don't have to dedicate more keys to do layer switching. You can have the same key do different things depending on how it's used.
For me, memorizing has been easy due to incremental change. I didn't come up with my new layout on day one then stick to it forever. I'd find a frequent pain point, tweak the layout, and memorize the tweak. It's easy to remember 2 or 3 key changes at a time.
For general typing - I dedicate ~15 minutes a day on sites like monkeytype.com. I also completed the courses on typing.com when I first received my moonlander. Monkeytype also has settings to emulate a lot of the popular alternative layouts if you want to try any out.
For shortcuts - I just conciously accepted it takes time to learn. I'd say it was about a month before I stopped reaching for the old shortcuts and started to use the layered shortcuts.
It can also help force you into it by not having the old keys mapped - obviously this comes with judgement on a per key basis. I'm not asking you to unmap "A" - but unmapping/not-mapping the F-keys in their usual place coerces you into using your new mapping and you'll just get the muscle memory eventually.
I would generally agree, but in this particular case I do not because:
1) I hit the function keys far less often than regular character keys and
2) I rarely press the function keys while typing text since, as I mentioned, I use them to switch workspaces. In particular, I often use them while my one hand is on my mouse (think drag & drop) and, as you say, same-hand chording is out of question.
I played the piano when I grew up, same-hand chording is second nature to me. It's all about wrist movement though, never strain your phalanges. I same-hand chord most close combinations: Ctrl-W is 5-3, Ctrl-C is 5-2, Alt-W is 3-1, as is Alt-P on the right-hand side. But I use two-hand combinations for almost everything else because the right-hand Ctrl and both Shift keys aren't easy to reach with opened fingers. The Ctrl key on the left is only easy to reach for me because I touch it with the side of my hand, not the tip of my pinky.
I have looked at ergonomic keyboards before, and have the same reservations about the number of keys as you. I use the numpad a lot for data entry, and my previous favourite keyboard was a Logitech one that had an additional row above the numpad that contained keys for parentheses (without using shift), an equals sign and a second backspace key. I did seriously consider the Maltron L90 full-width keyboard, but I couldn't source it locally and the price was too steep for me to buy without testing it first.
Having something like that keyboard coupled with a programmable (QMK) controller would be an option I'd seriously consider though, even without a separate numpad.
I use both depending on situation. There's no reason to avoid mapping a key combination function that already exist as a key. There's no strict reason to avoid adding key that can be done by key combination (but needs more vertical space, cost, and effort to build). I don't care vertical spaces much so I prefer to have dedicated function keys.
> Also, I don't think it really matters whether personally one uses a key X or not. In my experience, you can never have enough keys! And you will find an application eventually – provided the key is in the right place ergonomically speaking, i.e. easy to reach.
I do own a ErgoDox and UHK and like them. I use them with my custom layout. However I also agree with you fully, that you cannot have enough keys and I miss all the keys a standard layout offers.
I think needing many keys, and changing a layout to not need to move your hands so much are two different problems.
What is better, having to move your hand to difficult to reach keys, for functions that you only need occasionally, or having to remember how to navigate to the right, rarely used layer? I think the former.
You can still change the layout to have the frequently used keys close to your finger, but if you don't need so many layers to allow the keyboard to work in all kinds of applications, that is a win for me.
I don't really like the highly application specific layouts you get with keyboards, that are missing keys compared to the standard layout.
I made [1] to index ergonomic keyboards with sufficiently many/few keys (depending on preference). The issue seems fairly divisive, many people have strong preferences one way or the other.
Setting it to a minimum of ~76-80 keys shows there really aren't many options.
> Long story short, this is the single reason why I haven't bought an ErgoDox/keyboardio/… so far.
I don't really understand this conclusion. The point of these programmable keyboards is you can make them as work-free as you need. If you hit your function keys all the time, you can make the number row produce a function key just by holding it for a little longer or do like what OP did and make number chords match a function key. Press 1+2 to get F1, 2+3 to get F2, etc.
I understand not wanting to use a layer for everything which is why I don't care for ultra minimalist boards like the T-34 or Plank but an Ergodox has plenty of keys for my uses.
>> Long story short, this is the single reason why I haven't bought an ErgoDox/keyboardio/… so far.
> I don't really understand this conclusion. The point of these programmable keyboards is you can make them as work-free as you need. If you hit your function keys all the time, you can make the number row produce a function key just by holding it for a little longer or do like what OP did and make number chords match a function key. Press 1+2 to get F1, 2+3 to get F2, etc.
All those solutions are pretty sub-optimal if you actually use your F-keys regularly. Making a number stand in for an F-key after being held for a moment actually seems like it would be the most annoying workaround of all.
Alternatively, if GP really uses function keys that often, maybe it makes sense to just have the number keys default to function keys instead, and only output numbers on long press.
I would like to know if you do touch type. Touch typing plays huge role in keyboard experience imo.
In my experience, linux has the most ergonomic shortcuts (combination of windows and mac - linux mint with cinnamon desktop) with little bit of customization. If you have a habit of not touching mouse much, honestly linux rocks.
Mac has few consistent keyboard shortcuts but you can't operate system without mouse/touchpad. And for many keyboard shortcuts, you need to press awakwardly 3-4 keys simultaneously.
Windows has some good shortcuts but it is not designed to use by keyboard soley. Focus seems more on mouse.
Also I would highly recommend mechanical keyboards. You can configure good amount of shortcuts using control key and press it using your palm.
It's a trade-off for hand-movement distance vs having to use modifiers.
e.g. to type (), you hold Shift then type 89. That's probably easier than needing an extra row of keys for symbols, even if you use the symbols frequently.
> It's a trade-off for hand-movement distance vs having to use modifiers.
Yes, but in case of the function keys (which, as I said, I use to switch workspaces) I never press them while I'm writing text but rather before/after, so the distance my hands travel doesn't play much of a role.
Also, one-handed usage of these keys along with a mouse (think drag and drop) is important to me, which is another reason against resorting to a key chord.
I mostly agree split keyboards aren't as good for one-handed usage where keys across the whole board are needed. Maybe for this usage something like the Kinesis Freestyle is more usable than a small keyboard like the Corne, but using the RHS will still suffer.
I don't think that makes the keyboards bad; it's just they're better suited to usages where you can use both hands at once compared to one-handed usage.
For "using function keys a lot", I don't think having the function keys behind a modifier is slower or inherently worse than having extra keys for it. - If you prefer to have the extra keys and don't mind moving your hand, that's fine. - But since many of these keyboards are designed with "minimize hand movement" in mind, it's coherent for the designs to omit the row of function keys (and even the row of number keys).
> In particular, oft-used commands[1] should be available through a single key (or a very short and accessible[0] key chord) if possible.
Wouldn't a real ergonomic keyboard (i.e. Dactyl-Manuform or Squeezebox) with thumb clusters fit this bill? Those put the modifier keys on your thumbs, so a two-key chord (layer mod + main key -> function key) should be relatively "short and accessible", at least by my standards.
> It’s common to use a program to optimize the layout, letting the computer explore tons of layouts very quickly. I did not go this route, as I found it difficult to write down my exact preferences.
I am reminded of a paper about optimizing the specialized characters on a French keyboard[1][2]. The accent and ligature layout got accepted into standard, and the authors write that they had to adjust the criteria based on feedback from the standards body about which layouts felt more right.
What it shows is that it is possible to turn optimization into an interactive process when it's unclear what the objective function is.
The paper also mentions a new method to solve very large scale problems. I wonder if it could optimize a whole keyboard, whether chorded or straight.
Just an FYI if the author is here. Benford's law applies to the leading (most significant) digit of numbers, not all digits.
Nice article and analysis though. I recently built an Iris with low profile keycaps and absolutely love the feel of it. But it now sits on a shelf because it made working on other computers too confusing.
Always cool to see people make their own layouts. Those chords are quite a neat feature.
If you want to try something that's a lot more chord-based and which uses even fewer keys (basically just 23 keys), then I'd recommend downloading Plover and learning Steno. It takes quite a while to learn, but once you do it's very comfortable and can be very fast.
Yes, you can customize your dictionaries as much as you like and add common words/symbols that you use in programming, and there are decent options for writing in camelCase etc. There's also Emily's symbol dictionary which is good for writing various symbols [1], here's a poster showing all the symbols available in it [2].
> does it work for typing in different languages?
Yes. As long as there's an existing steno theory for the languages you want to use, then you can download those dictionaries and learn those theories. But if there isn't an existing theory/dictionary for a language then you can just use fingerspelling instead [3] (i.e., write letter by letter like on a regular keyboard), although that's ofc much slower than regular Steno is.
I'm always saddened by how few thumb keys many of these ergo boards have in comparison to the Mitosis layout, which lets me entirely avoid having anything but the most basic momentary layers, with no tap-dancing, latching, long-press-does-something-different, or chording.
I think that the Manuform's thumb clusters, while having slightly fewer keys (6 per hand vs 8), are more ergonomic than those of the Mitosis, due to allowing the thumbs to use their stronger movements (curling in vs. moving laterally).
But, more generally, I agree - there's very little excuse for not having thumb clusters if you're trying to build an ergonomic keyboard.
Obviously the 3D sculpting of the Dactyl Manuform can be better than a 2D layout, but the distinction I find in the Mitosis layout is the fact that the main thumb keys are two-tiered, letting me use one thumb to hit both shift and the number layer key simultaneously, or one at a time.
You can do the same thing with the Dactyl-Manuform layout! I regularly hit two modifier keys at once (e.g. shift and control) - it's rather easy to do, or at least for certain pairs (although the same property appears to apply to the Mitosis).
There is some irony in naming an ergonomic keyboard after a Soviet tank. WW II-era Russian tanks had the reputation (possibly unwarranted) of being horribly uncomfortable.
Not plugging to promote it, just to call attention to a design pattern I used in my 34-key layout (same number as the author's) that made it less hellish to learn (albeit, one has to know dvorak, but it's probably adaptable to something more intuitive.) The layout has two layer keys that can be used together to switch between 4 layers in total, with the default one being dvorak alphas, the left one being Mods for modifiers, the right one being Nums for numbers, and combined Mods and Nums for extra modifiers. Here's an except from the readme:
Hold Mods + Tap E = Enter
Hold Mods + Hold Nums + Tap E = Escape
Hold Mods + Tap B = Backspace
Hold Mods + Tap D = Delete
Hold Mods + Tap T = Tab
So I found this was very easy to adapt to because the most important modifiers are in places that are very intuitively memorized. It's something to consider if you want to go down this road.
I'm just going to ask this here since you seem to know your stuff: Just how do you learn such a multi-layer setup? I'm asking mostly from an initial productivity/motivation perspective: Right now I'm happily touch-typing on my QWERTY keyboard (technically it's QWERTZ, but that's close enough) based on muscle memory. If I started learning an entirely new layout, how could I ever be productive when always confusing different layers or keys for a few weeks?
On the other hand, maybe switching keyboard layouts is less hard than I imagine. I can mentally switch from QWERTZ to QWERTY with a little effort nowadays (after opening Vim on terminals with misconfigured keyboard layout a few times, you quickly learn where to find the : key...) But then again, QWERTZ and QWERTY are quite close and rather simple.
I do a fair amount of typing every day, but I'm not constantly typing. Being slower at it still leaves me at 80% productivity or so.
I picked up a Moonlander (https://www.zsa.io/moonlander/) last year. Between the ortholinear positioning and the new layout, I dropped from ~130wpm to ~60wpm (a bit faster for just letters and numbers, a bit slower every time I had to remember where I put a symbol or modifier). The first week was slow, and in the process I quickly realized what keys I was dearly missing and a few I wasn't using, and I tweaked my layout a number of times in the first 2-3 weeks. That said, by the end of the first week I was no longer hunting for keys and becoming comfortable, and by the end of week 3 I was back above 90wpm comfortably. I haven't felt inhibited by the keyboard in a long time - it's been a while since I took a speed test, so no idea if I'm back at the full speed I was before - but I suspect I am.
The old muscle memory doesn't fade either. I was concerned that I would have issues going back to laptops or other machines with staggered QWERTY layouts, but in practice I'm just as fast typing on my laptop as I ever was.
Hey there. I had typed up a longer response to this earlier when my screen suddenly went blank on what I assume is a very buggy corporate laptop. Here's a lesser response typed over touch screen.
It's not like I train anyone to type with Dvorak or anything, so all my advice is really just personal anecdotes...
At work I deal with RDP connections and various types of virtual machines. The keyboard layout settings don't persist across these various interfaces/consoles, so I have to switch between Dvorak and QWERTY very frequently, sometimes switching between both in just a minute or less. It takes me just one second to warm up to either. I attained this 3 years after learning Dvorak. I can this say without a doubt that switching can become second nature, just like QWERTY<->QWERTZ.
In the beginning, a hardware Dvorak keyboard with blank keycaps makes a critical difference. It was painful to use for the first month, but sticking with it got me to where I am.
I used GNU Typist to learn Dvorak. It was simple to pick up in just one week. The hard part is developing the muscle memory so that you don't need to think about typing before actually typing. Once you get over that hurdle, your performance will get better and better.
Last point to make is that when most of us first began typing, it was hunting and pecking on QWERTY. Some of those early habits stick with us and we never realize it. Learning to touch type any other radically different keyboard layout, Dvorak or other non-QWERTY alternatives, requires intentional focus. If you excercise that focus properly, you will probably be better at typing whatever you've learned better than you typed any QWERTY variants. Not just because of a presumed inheritent advantage over QWERTY, but something to do with how when we get older, we learn how to learn better.
A new base layer layout, like switching from QWERTY to COLEMAK, can be efficiently learnt with online typing tools. Keybr[0] is a good start as it records the relative miss rate of each letter and prioritizes the lessons after that. After that I personally moved to Monkeytype[1] as it has tons of configurations you can play with. I got back to ~50 wpm in under 10 hours of deliberate practice using this technique.
Numbers and symbols you can do the same. Monkeytype has modes for that so you can target them specifically.
Other "big" keys like Tab, Escape or Enter are so common that you'll learn them in no time.
As for layers and other advanced techniques, it takes some getting used to. For me the first week felt really bad (even though I sort of knew the base layout), and I tweaked things for ~3 weeks, but after that it felt fine. The productivity will take a hit, but it's not noticeable after the first month I'd say.
And I still use a regular keyboard with QWERTY on the laptop, and I can switch to it on the fly. (Even between US and Swedish layouts, which have almost all the symbols in different places.)
Oh of course, you should always touch type. If you're having trouble, just use blank keycaps.
It’s not as hard as you imagine, but it isn’t easy. You’ll be annoyed and feel stupid, at least for a week or so drastically you change the layout.
A note about layers. You probably use “layers” everyday without thinking about it.
Holding “shift” enables a whole new layer where the numbers send symbols and the letters are uppercase.
Holding option on a Mac enables a whole new layer with a bunch of funky symbols.
Holding “FN” on a laptop enables a whole new layer (or maybe just a numpad).
No other layout focuses of comfortable combos in the same way. I had to make some adaptions for Swedish, but the umlaut vowels are not common anyway. I comfortable got up to about 100wpm with it, which is my about what I do on Dvorak (svdvorak, the true Swedish Dvorak layout). It just feels more fluent and relaxed than any other layout I tried.
I ended up going back to svdvorak due to regular us Dvorak being available everywhere.
What makes you think this is just putting common keys on the most accessible places? Troublesome bigrams are for instance very minimal with this layout and the rolls that exist are also comfortable, and this also extends to the symbol layer.
Because it was not mentioned in the post, and it is very hard to reason about just by looking at a layout.
My main complaint is actually not specific to this layout (which seems fine, TBH) but a more general one. Trying to optimize for good bigrams is just as important as avoiding bad ones.
Now, probably not unlike you, I currently write in a couple of languages daily (all Germanic, so maybe not a huge problem) so this seems easier said than done.
Interesting all the effort in show how important could be to optimize for keywords... and put them under the bus in a too small keyboard layout... with extra layering!. I do the exact opposite (without doing "science" just my feel!):
Having dedicate keys for symbols is super-neat. I near "combo" free, and even adding 3 extra macro keys (the ones above the arrows) allow me to pu 3 o the most common, in special Ctrl+R (search in termina) and Ctrl+B (run/build). That I do a lot!
Does someone know if machine learning has been used to build keyboard layout?
It would be amazing to say I use {English} as my main language and I code in {Elm} 80% of my time and {c++}. I use {this} keyboard layout and tadaaa, this is the best multi layered layout based on these settings with your hardware keyboard.
If nonlinear mathematical optimization counts as machine learning, there's been at least one paper (see my other post[1] and optimization group's page[2]).
Carpalx[3] is more like what you envision, but it uses simulated annealing instead of mathematical programming[4], so you won't know how far from the true optimum its solutions are.
I’ve been considering jumping down this rabbit hole and getting a Planck 40% keyboard, but there are pretty much zero sub-60% Bluetooth keyboards (or even PCBs) available. Anyone got any pointers regarding that? Has to be BT and not just “wireless”.
Yeah, but building my own is something I'm hesitant to do given the time investment involved. Also, case design will need to factor in the battery, etc.
I haven't tried any myself, but there are USB-to-BT-HID adapters such as these that I've seen people in the mechanical keyboard community use: http://handheldsci.com/kb/
Unfortunately, most manufacturers of ergonomic keyboards seem to think along the same lines, so they omit the corresponding hardware keys and argue that you could always put the function keys on another layer if you really need them. I, however, use my function keys hundreds of times a day (mainly to switch workspaces) and I do not want to have press an extra key every single time.
The key principle I follow with all my key bindings is this: The more often I use a certain functionality, the more accessible it needs to be, i.e. the less work (or, literally, input) it should require in order to avoid putting needless strain on my fingers and wrists. (I have suffered from RSI in the past.) In particular, oft-used commands[1] should be available through a single key (or a very short and accessible[0] key chord) if possible. Unfortunately, the most common set of key bindings (Vim/Emacs/IntelliJ/…) usually violate this principle.
Long story short, this is the single reason why I haven't bought an ErgoDox/keyboardio/… so far.
Also, I don't think it really matters whether personally one uses a key X or not. In my experience, you can never have enough keys! And you will find an application eventually – provided the key is in the right place ergonomically speaking, i.e. easy to reach.
[0]: The more often I use a key chord, the stronger the fingers should be that push the individual keys – e.g. the thumb, index and middle finger.
[1]: Commands, in turn, that are used only rarely should actually not be available through a key binding at all – no one remembers them and they only clutter the key binding space and cause confusion when you do (accidentally) hit those keys. Instead, those commands should be accessible through a searchable command palette. (Think Shift-Shift in IntelliJ.)