Kinesis Advantage keyboard and learning Dvorak

I bought a Kinesis Advantage keyboard with the intention of reducing my finger pain associated with typing. Obviously, I spend a good portion of every day typing, and my livelihood basically depends on my being able to continue typing.

I also decided to learn the Dvorak layout while I was learning the Kinesis keyboard. I tried learning Dvorak a few years back but gave it up because I was working with a lot of other people’s keyboards as well - it was too inconvenient to keep switching layouts.

On the Kinesis/Dvorak learning process

  • Muscle memory is a huge factor in switching to a different keyboard or layout. Even now, when I’m typing on my laptop I instinctively reach for the Enter key with my right thumb, because that’s where it is on the Kinesis.
  • The Kinesis makes a lot of bad habits difficult, whether by accident or by design. You can’t really rest your hands on the pads while typing because then you can’t reach all of the keys. You can’t twist your hands around to move them around the layout because the keys are aligned to suit your hands in the home position. When you move your hands around the layout, suddenly they’re un-aligned and awkward.
  • I started out using a lot of ‘mental CPU’ time to handle the conversion. In the beginning, it took all of my concentration just to hit the right keys - I had to separate my thinking from my typing.
  • While learning Dvorak, I noticed an interesting progression; I started out pressing just single keys at a time. Gradually, I started combining strings of keys into single motions (something I call ‘chording’, which I’ll come back to). This is similar to how a child learns to read - they recognize single letters, expand out to sounds and eventually can string together words.
  • I made rapid progress for about three weeks. The first few days were difficult. I only used the Kinesis+Dvorak for a couple of hours each day because it was very frustrating to learn. I’ve had 20 years with a nice solid brain-keyboard link via the keyboard, and suddenly it’s horribly slow and error-prone. After the first few days things settled down a bit and I could manage an entire day’s work on the Kinesis.
  • After the first three weeks, progress slowed. I was still improving, but more in the areas of chording and accuracy. Some keys still gave me consistent problems on the Dvorak layout, particularly G and P.
  • You need to sit a little higher than with a normal keyboard. This is a problem for me - I already find standard office chairs too short (even the Aeron!). When time allows, I’ll be buying a nicer chair and getting the gas-lift swapped for a taller one.
  • Why the A and S keys - two of the most common characters in English text - are on my two weakest fingers, I’ll never know. The pinkies get more of a workout than usual because they’re handling all of the keys on the edge of the keyboard, too. Placing these two common letters on already weak and overutilized fingers is probably the biggest flaw in the Dvorak keyboard that I’ve found.
  • Dvorak is lovely for English text. It’s just a great feeling to feel the letters whiz by with so little effort. However, a lot of my typing load is not English text. It’s Linux terminal navigation, C and Python source code, all of which intentionally discard vowels in exchange for brevity. This makes Dvorak’s plan to alternate hands work very poorly - you’re just not typing anything on the left hand.
  • Some common Unix commands are absolutely worst-case scenarios on Dvorak. Take the command ‘ls -l’, which I would type dozens of times per day. On Dvorak, L, S and hyphen are all on the right pinkie. If you’re using a standard keyboard, so is the Enter key. It’s really, really unpleasant to type ‘correctly’.
  • Naturally, position-based key bindings don’t work: Vim’s HJKL, WASD for games, Ctrl-Z/X/C/V for word processing.

I really tried to make Dvorak work. I gave it a month. At the end of the month, I switched back to QWERTY. It’s a fantastic layout for cranking out lots of English text, but that’s not my use case.

On the Kinesis keyboard

  • The up and down arrows are backwards compared with the Vim convention. That’s relatively easy to remap on the keyboard.
  • The macros are rather buggy. Actually, scratch that. The keyboard’s firmware is rubbish. I suspect that either the authors had never programmed on a microcontroller before or were not trained as programmers to begin with. I can crash the keyboard in two fairly common scenarios. That said, the crap firmware is not a reason to not buy the keyboard. It’s perfectly usable despite its flaws.
  • I opened it up to look inside. It’s pretty typical of small-scale electronics manufacturing: no surface-mount parts, revisions hot-glued to the case, off-the-shelf components. It’s not badly made - it feels very solid for its weight - but it does have a few rough edges which might surprise you if you’re expecting a mass-produced product.
  • It’s ripe for hacking. The main controller is an Atmel AT89S series microcontroller. The macro RAM is on standard serial EEPROMs. There’s even a socket for a second one (the Advantage Pro upgrade). Apparently the firmware can be changed over the PS2 or USB port, but Kinesis didn’t seem to willing to send it to me when I mentioned I wanted to modify it.

Where to from here?

I still want to improve the keyboard layout. The Kinesis makes typing less painful, but some of my pains appear to be linked to the QWERTY layout. And the feeling of effortlessly flying through English text with Dvorak was just amazing.

To come up with a better keyboard layout, I want to log my keystrokes for a month. Each keystroke will be tagged with the time and the active process. The process lets me figure out whether the keystroke intent was a letter or a position. I can also detect errors by tracking Backspace presses. With that information, I can determine exactly which keystrokes or combinations are the most common for me.

In addition, I want a ‘trainer’ - a program that will prompt me with an arbitrary series of keystrokes and time how long it takes me to hit them. This will give me information on how strong and fast my fingers are and if any of them are particularly error-prone. From that, I can generate a map of the keyboard, each key associated with a ‘performance’ score. Combining the two datasets, I can then come up with an ideal keymap for me, given my typical usage patterns and my own brain-keyboard performance data.

I’d also like to integrate information on common digraphs, but I’m not sure how best to use them. I’m not sure that Dvorak’s assertion that alternating hands is the best thing to do. A common case for me is the ‘chording’ I mentioned previously, where a single hand can hit a sequence of keys very rapidly. The timing is simpler - I arrange my hand correctly on the keys, then use the individual fingers to press them in sequence. Of course, this sounds like the sort of thing that might cause tendon damage. But it’s fast.

There’s more discussion on chording and performance here.

9 Responses to “Kinesis Advantage keyboard and learning Dvorak”

  1. Paul Robinson Says:

    Are you still enjoying the Kinesis? I”m thinking of getting one myself.

    Do you think this would work in conjunction with the RollerMouse?

    thanks!

  2. Ian Says:

    Still doing well. There’s a bit of discussion within the office as to whether I’m having less pain because of the keyboard or because I’m typing slower, but either way I’m happy.

    The RollerMouse wouldn’t be nearly as convenient to use with the Kinesis because your thumbs aren’t anywhere near the edge of the keyboard. In fact, your thumbs are pretty busy with typing already.

  3. Richard Says:

    I use the “programmer dvorak” keyboard specifically because so much of my typing is code. It does mean that when I use other computers I have to fall back on standard dvorak, but that’s been ok.

  4. Vilĉjo BLANKA Says:

    I actually created my own Dvorak xkb configuration file, which has special accented characters. I use it mostly for programming, and I don’t find it to be a big problem. Then again, I’m an old guy, and my programming style reflects the fact that I can’t remember stuff for more than 6 months. I need big hints to myself to remind me why I did any particular thing the way I did it 2 years ago. Consequently my variable names are all pretty long, and look a lot like english words.

  5. Drew Says:

    Did you ever make progress on the firmware? I have been using my advandage usb for several years in qwerty mode, and am trying to switch to colemak. I’ve just started learning to program for avr ucs and would be interested in taking a crack at my kinesis if I have someone to share notes with.

  6. Drew Wagner Says:

    I opened up my kinesis to learn a bit more. The chip is an AT89S53. I’m daydreaming about replacing it with an Atmega162, which seems to be pin compatible, but would be programmable with the avr-gcc toolchain. Looks like they contracted out to another company to add a separate PS2 to USB converter board. I want to switch between at least three different keyboard mappings, i.e. qwerty, colemak, dvorak, and have them all be editable separately. This feature seems like a no-brainer; not sure why they chose macros over it.

  7. Ian Says:

    Drew: yeah, I was thinking similar things WRT the firmware and hardware design. If I was going to build custom firmware, I think being able to save, load and configure keybindings via the USB port would be a big part of it. It’s definitely something I want to look into in the future, but I can’t afford the time right now.

  8. Drew Wagner Says:

    Yeah, I can’t really afford the time at the moment either, but it’s a project to throw in the queue. My favorite aspect of the programmable keyboard is actually that I don’t have to mess around with any software on the host machine(s). The interface kinesis has worked out for re-mapping keys is pretty darn efficient as it is. Do you ever encounter the bug where the keyboard starts spitting out a character repeatedly on its own and you have to hit both shift keys simultaneously to get it un-stuck?

  9. Ian Says:

    Nope, never seen that bug. I do get lockups every so often, mostly if I’m running macros or typing remapped keys quickly.

Leave a Reply