Do you have a wearable computer? Are you interested in alternate keyboard layouts but too lazy to learn Dvorak? Do you masturbate at your desk? If you answered yes to any of these questions, you may be interested in my custom keyboard layout.
I spend most of my desktop time in a web browser and the rest in terminals/messengers. So, like a gamer, I’m usually sitting with one hand on the keyboard and the other on the mouse, typing things occasionally. I found that I was actually biasing myself towards things I could type with my left hand — saying “haha” instead of “lol”, for example. This got me thinking about one-handed keyboard layouts.
Now, there exist all sorts of specially-built one-handed chording keyboards. There are also one-handed layouts like Left-handed Dvorak which can be used with a standard keyboard. That’s no good for me. I’m not going to spend months rewiring my brain just to type a few things faster (Dvorak people, I admire your perseverance, but I do not have the commitment that you do). What I really wanted was a modification of QWERTY that let me occasionally type with one hand without learning anything really new.
The key moment was when I realized that the brain command I use to type the letter ‘e’ is very similar to the one I use to type ‘i’. I found that if I held my right hand away from the keyboard and tried to type “the kitten parked the hovercraft”, it came out “tge dettev qarded gte gwvercraft” — I was doing the same motions with my left hand that I’d normally do with my right.
Mirrorboard is a keyboard layout that lets you type simple things on a QWERTY keyboard with only the left hand. It works by mirroring the layout between the left and right hands when you press caps lock. “asdf” becomes “;lkj” — the entire keyboard is reflected. To press a key on the right side of the board, you hold caps-lock with your pinky and then press the corresponding key on the left side.
When caps-lock is pressed, the layout turns from this:
This means that to type “parking”, you press <caps+q> <a> <r> <caps+d> <caps+i> <caps+v> <g>. The nice thing about this is that you can start typing at a decent speed right away, and it doesn’t interfere with normal typing — there’s no need to switch back and forth like with dvorak. It’s just an additional set of shortcuts to get to letters on the right side of the keyboard. You can use it as much or as little as you want. I don’t use it for too much of my typing, but I use it enough that I miss it when it isn’t there.
Here’s the layout file:
Activate it by running
xkbcomp mirrorboard.xkb $DISPLAY 2>/dev/null
You can stick that in a startup file somewhere to run automatically on boot.
This is a mapping for X, so it works on Linux and probably some sort of Unix machines. I use it on my Ubuntu desktop and the Gentoo server in the living room. I don’t have a version of this for any other OS, but if anyone creates one I’ll stick it up here. (edit: Pat points out that the concept of a mirrorable one-handed keyboard has been explored before, at least on the hardware side.)
Thank you to Neale for his help in putting the file together.
(1) I recommend remapping the tilde key, without caps-lock, to backspace. I didn’t make the change in the published file because I want it to make no changes if you don’t use caps-lock. To make this change, just switch which line is commented in the file where it talks about “tilde is backspace” (or download the alternate version where I made this change).
(2) Caps-space is mapped to return. This is incredibly handy and is probably the aspect of the layout I use the most.
(3) I had to be a little inconsistent with the number keys, but for the most part I only use this layout to type letters anyway. You can adjust them pretty easily in the file.
(4) This would become orders of magnitude faster if intelligent-guess methods were used so you could stop worrying about caps lock. For starters, I bet someone could easily write a line or two of perl that took an input word, such as “qardevg”, and searched the dictionary for /^[qp][a'][ru][dk][ei][vn][gh]$/. I bet most of the time this would only turn up one word (xkcd@aram:~$ cat words | grep -i “^[qp][a'][ru][dk][ei][vn][gh]$” turns up “parking”). With a lot more work, you could build the same idea into a layer that sits in X somewhere and is activated when you hit a key (caps lock or scroll lock, perhaps). As long as it added to its dictionary based on what you’d typed previously, this could become a pretty powerful system for one-handed typing, with possible applications for wearable computers and accessibility for the recently-disabled.
(5) Just for fun, try typing “We fear a few dwarf watercraft stewardesses were regarded as desegregated after a great Texas tweezer war.” on a QWERTY keyboard. Also try “I’ll kill him in Honolulu, you unhook my pink kimono.” Can anyone come up with better ones?