Lately I do the bulk of my coding on a Kinesis Advantage keyboard. Increasingly I’m also making use of the optional 3-switch foot pedal. It’s been interesting watching the effect this has on my priorities for editor keybindings.
Every keypress or key-chord has an opportunity cost associated with it. Some are higher than others. Most traditional hacker-oriented tools make certain assumptions about these opportunity costs.
For instance, most tools assume that the opportunity cost for using arrow keys for navigation is extremely high. This is based on the fact that historically, Unix terminals often didn’t even possess arrow keys, making their opportunity cost effectively infinite. And even on modern keyboards, they are off in a little remote island, forcing the user to relocate a hand away from the home row and then back, even for the smallest cursor motion.
As a consequence, the traditional “hackers editors” have eschewed arrow key navigation. It’s available, but it’s not considered the primary navigation center. So for instance, if there are special bindings for navigating by expression or by function, they are not built around the arrow keys.
Editor developers have also traditionally recognized that modifier keys have a high opportunity cost, since on the vast majority of keyboards they involve stretching a pinkie to full extension while keeping the rest of the hand in position to hit a key. Vim is particularly good about avoiding these digit acrobatics. Emacs is less sympathetic, but even Emacs usually emphasizes contiguous sequences of simpler key combos over multiple-modifier contortions.
The Kinesis keyboard addresses both of these keyboard shortcomings. On the Kinesis, you can comfortably use the arrow keys without leaving home position. It’s still a slightly higher opportunity cost than using Vim-style home-row navigation, but it’s a marginal difference instead of a massive one.
The Kinesis also recognizes what game pad designers have long realized: that the human thumb is an extraordinarily dexterous organ. It is equally at home hitting single keys or mashing down multiple buttons at a time. The Kinesis takes advantage of this fact by organizing modifier keys along with other common non-character keys into “thumb islands”.
And then there’s the optional foot pedal. Using a foot pedal with your keyboard feels impossibly geeky at first. Until you use it for a while, and then you start wondering why you didn’t recruit your feet for help years ago. It’s not like they had anything better to do all this time. Sewing machines have foot pedals. Cars have foot pedals. Airplanes have rudder pedals. Why not computers?
The upshot of all this is that a lot of the work that has gone into hacker editors’ keybindings doesn’t seem to matter to me as much anymore. For instance, I’ve been using RubyMine lot lately (for reasons unrelated to keybindings). People ask me if I use Emacs or Vim keybindings for it, and I don’t. I use the defaults, for the most part. This includes bindings like Ctrl-Left/Right for wordwise navigation, or Alt-Up/Down for navigating by method. And on the Kinesis, it’s fine. It doesn’t bother me.
Similarly, it’s become less urgent to me to explore Vim-style keybindings in Emacs. Key-chords are now relatively “cheap” in terms of effort and comfort. (Although Spacemacs remains intriguing…)
Obviously, keybindings are the tiniest tip of the iceberg we it comes to the capabilities and advantages of an editor like Vim or Emacs. Please don’t think I’m saying navigation keys are the only things that keep me using mature text editing tools. And of course, there’s nothing stopping you from using arrow keys to navigate around in Emacs or Vim.
But it does have me thinking about how much of those editors’ UX is designed around a lowest-common-denominator teletype keyboard, circa 1960.
There’s an argument to be made that this is a good thing. After all, when I take my laptop out on the deck, or to a cafe, I instantly lose all of those Kinesis advantages (heh). Even if I started carrying an Atreus with me, it doesn’t have all the keys of a Kinesis. Let alone pedals. Perhaps I should emphasize muscle memory for the subset of comfortable keybindings that are available to me all of the time, instead of the superset that’s available in my home office.
But I’m not sure that’s such a great idea. A fighter pilot doesn’t use a yoke instead of a fly-by-wire joystick just because sometimes she also flies Cessnas.
Maybe it’s time we started demanding modern programmer-input devices across the board. Instead of designing input schemes around the limitations of a device that hasn’t changed substantially since it was invented for bashing inked hammers into a roll of paper.
UPDATE: It occurred to me that I hadn’t even mentioned the “Home/End/PageUp/PageDown” cluster. This is an example of a set of functions that most hacker’s editors use some kind of key sequence or combo for, since their location is usually as problematic as that of the arrow keys, if not even more so. But the Kinesis puts these keys in the thumb islands, available without moving your hands or glancing down. A lot of editor tutorials will try to wean you off of these keys along with the arrows. But I’m finding I’m using the dedicated keys more and more (and the alternative keybindings less and less), because I’m no longer paying a price for it. Which is nice, because it means I can use the same muscle memory across all applications.
UPDATE 2: Hi Hacker News! Since I don’t feel like wading into the comments over there, I wanted to quickly address a common theme in some of the comments. Namely: the notion that “efficiency” is the only axis that a given keyboard/layout/editor combo might be judged on. If you’re a young hacker you may not presently be much concerned about keyboard comfort; but speaking from the ancient and decrepit age of 34: you will be.
That’s very interesting. The best thing Emacs users can do to not stretch their pinkies is to use Caps Lock as Control, and Alt (or Command on OS X) as Meta. At first I thought it was weird, but it really pays off… the hands are always in natural position.
Yeah as an emacs user I’ve fooled around with that stuff. But the Kinesis really removes the need for it. Control and Alt become thumb buttons, very comfortable to hold down either singly or doubly.
I mean, when you are on the go and do not have a Kinesis around 🙂
Oh yeah, gotcha. Darn laptop keyboards!
The keyboardio looks pretty interesting in this regard as well:
http://www.keyboard.io/
Interesting. It looks a lot like an ErgoDox built in wood.
I can’t recommend this keyboard enough. I have mild carpal tunnel, and the Advantage has eased my pain tenfold. The only thing that irritates me are the squishy function keys.
They claim that the function keys will be addressed in the next version.
Where did you read this? I can see no word from Kinesis saying this. I used my friend’s Kinesis for some time and liked it, and was planning on getting. But if there’s going to be a new KA keyboard with improvement of squishy keys, I’ll wait (but I don’t want to wait more than 6 months)
Kinesis told me this via Twitter. No idea what the ETA is.
I have emailed them in the past and they have mentioned it. The new version was supposed to come out the end of last year but now they’re saying end of this year. Again, that was in an email.
I LOVE this keyboard… I can definitely see how it makes “normal” editors easier and more ergonomic, but I also love it for VIM use. The only change in keys that I needed was to rebind the caps lock to “esc” since I mash that key about a billion times a second while editing (and caps lock is an evil key anyway). 🙂
The programmability of the keyboard is also a big win, although this can be handled by some text substituters as well, I suppose. Do you use the programmability feature much?
Great article, makes me want to check it out .. as an aging hacker, I’ve found the friendliest thing I can do to my hands is change up my keyboards on a regular basis .. stuck on QWERTY, although I’ve seen some Dvorak guys do their thing and always put “try different layout” on my list for the next keyboard buy .. but alas, ’tis hard to invest in a keyboard without using it first, so usually I just go for the most comfy in the viable, physical, selection ..
One thing: I remember typewriters having foot-pedals in earlier days .. if I remember correctly there were two common uses/modes for the 2-switch-pedal: SPACE and CARRIAGE, and on 3-switch-pedals, SHIFT-LOCK was available as well. Maybe these were special accessories for the Telegraph/Teletype worlds I frequented, but I had to use them a few times and it indeed felt unique. Somehow though, it fell out favor .. perhaps it got replaced by the mouse as a peripheral in our changing computing world. Still, looking around, I have to wonder if as a whole the keyboard-interface isn’t a dying art ..
You don’t need to buy a new keyboard to try Dvorak. Print the layout onto a half a side of thin card, then fold it into a “tent” and have it below your monitor. Change the layout in software, and look at the printout you need to find a key — this way, you don’t need to move your hands away from the keyboard, so it helps learning.
Aged 19, I was quick enough using this method to have an acceptable speed in a few days. It’s far more comfortable than Qwerty!
Switching to a new layout need to be painful if you do it in stages. Some users in the Colemak forums have come up with a suggested switch, where new keys are introduced two at a time making it incremental learning. This allows you to retain the familiarity to do your daily work and slowly learn the new layout. This also depends on the layout too, I would imagine Dvorak to be more difficult to learn than Colemak because of the greater number of changes in Dvorak (I believe Colemak is better than Dvorak).
See this page for a report of how a writer made the switch from QWERTY to Colemak: http://www.makeuseof.com/tag/how-i-quickly-mastered-a-superior-keyboard-layout-without-losing-productivity/
In my opinion (using a Kinesis daily for six years), Control, Alt, and Command are practically unusable where the Kinesis have them.
I remapped the arrow keys, so I have Control and Alt in the inner lower corners of each main cluster, symmetrically, and the arrow keys somewhere in the small clusters. So, I barely use the arrow keys either in this keyboard.
You have weird hands 😉
Seriously, all this stuff is so variable based on physiology. I saw someone on HN comment that they’ve always used their thumbs for modifier keys on ordinary keyboard, and all I can figure is that they were born with their hands on backwards.
That may well have been me – I do use my thumbs for most modifier keys. I once saw an IBM ad where they were bragging about their human factors research, and showed the outline of the average hand of their keyboard users. My fingers matched the size of the average to the millimeter, but my palm was a full inch longer than the average, which makes it easier for my thumb to reach under to the modifiers.
Actually I found out of the box the ctrl+alt particularly hard to use when I had to hit a key on the same side of the keyboard as the modifier I wanted to use (I am using the keyboard in osx mode).
So I enabled sticky modifiers for those keys and am much happier now.
Also the worst thing about the keyboard is the up/down arrow keys are back the front compared to vim. I swapped them and am much happier now.
One thing I’ve done is make the modifier keys symmetrical: Ctrl/Alt on both sides. I’ve moved Win/Super/Hyper/whatever you call it to the foot pedal.
I remapped all keys on the keyboard. keys are now first class citizen on my mapping