I notice that ErgoDox and KeyboardIO keyboards don't have dedicated F (function) keys. Since we are used to lots of UI shortcuts involving these keys I am totally not sure how come the designed of these keyboards chose to skip them. As noted here having to mimic F by a sequence doesn't exactly cut it.
Xah Lee is a smart guy, but I think he’s wrong here.
His preference is to have separate keys for every possible function, as many as possible. He has many other pages about that so I won’t try to detail his arguments, e.g.
http://xahlee.info/comp/keyboard_shortcut_design.html http://xahlee.info/kbd/keyboard_function_keys.html http://xahlee.info/kbd/keyboard_add_extra_function_keys.html http://xahlee.info/kbd/keyboard_numpad_as_function_keys.htmlThere’s a certain theoretical attractiveness to that idea, and when it comes to e.g. a control panel for a spaceship or nuclear power plant, or maybe even a grocery store cash register, I’m all on board: give every function its own labeled button. Many buttons will only need to be pressed rarely, so reaching the arm awkwardly, or even standing up and leaning to reach a key is totally fine.
A computer is a general-purpose device though, not a single-purpose device. If you have keys on a standard keyboard for some type of machine, software will be written to use those keys. If you have a mouse, software will require switching between mouse and keyboard. If you have a number pad or a navigation key section or F keys, software will throw those keys into its shortcut mix. If computer keyboards came with 50 F keys, some piece of software would assign all 50 to various functions. The software designers responsible won’t be considering the efficiency costs of pulling someone out of flow for a minute to press one of those keys or move the mouse. They won’t be considering whether a particular shortcut is efficient or ergonomically friendly. More generally, they won’t consider whether a particular shortcut conflicts with other shortcuts on the system.
What we have ended up evolving is an ad-hoc and very brittle layout. (Where by “we” I mean about 40% Remington in the 19th century, 40% IBM, 5% Apple, and 15% DEC/Microsoft/everyone else) Not only is it disorganized and confusing, it also is uncomfortable, inefficient, and causes severe injuries for large numbers of people. Many of the keys are ripped out of their original context and are totally nonsensical for modern systems. This is what “regular users” get stuck with: an evolved pile of poop which got incrementally worse up through 1985 and then was frozen in place because it was treated as a commodity and no one saw enough incentive to fix it.
If you need to stick with the standard layout, go for it, that’s totally fine. It takes less effort to use something everyone is already used to, for sure. If you want something that is mostly standard but a bit more comfortable, I highly recommend Matias’s ErgoPro keyboard.
Keyboards like the keyboard.io are making a stand though. Their idea is: let’s get rid of the unreachable keys, let’s give customers direct control over the keyboard layout, in a much more convenient and powerful way than they had via existing system tools. If you want an F key, you should put it on a layer. If you need a specific shortcut for some piece of software that causes you to make some uncomfortable contortion, you should remap it to an easier-to-press shortcut. No more twisting your hand into a pretzel, no more moving your hand to a separate part of the keyboard and back for a routine operation, and no more pulling your hand of the home row to press the escape or delete keys, losing seconds each time.
This is a vision which takes customer effort and learning. It’s decidedly not for everyone. If it’s not your cup of tea, that’s entirely fine, use something closer to the standard layout. Or if you want something that looks like an Ergodox plus function keys, build it yourself. :-)