Mirrorboard: A one-handed keyboard layout for the lazy

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:

QWERTY layout

into this:

Mirrorboard layout

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?

Roller Coaster Chess

A while ago I drew a comic about playing chess on a roller coaster. Various xkcd readers took up the challenge.

Pictured above: Andrew Burke, Chris Ranker, Ryan DowlingSoka, and Chance Brown.

To see more pictures of chess on rides, go to xkcd.com/chesscoaster. If you think you can do better, go for it, and send the pictures to rmunroe@gmail.com. But remember, I am not advocating doing anything dangerous unless it’s really cool.

Perl Appetizers

You may have noticed that the knapsack problem in today’s comic has two solutions. I thought that (spoiler alert!) the 1, 0, 0, 2, 0, 1 solution was the only one, but 7, 0, 0, 0, 0, 0 — seven orders of mixed fruit — also works. Why did this happen? Well, I checked my numbers with a short Perl script (written while on vacation, with adorable kids climbing on me). It found the right answer in all my tests but broke when it really mattered. Witness the result of this line of Perl:

perl -e ‘print 2.15*7, “n”, 15.05, “n”, (2.15*7 == 15.05) ? “true” : “false”, “n”;’

Long story short, it claimed 2.15*7 did not equal 15.05, and so it missed the second answer in the search, though it found the first just fine

I know this sort of thing happens with floating-point math, but I didn’t expect it to break this badly and inconsistently on such a simple task. (edit: at that point, I was actually thinking of this as a weight problem (the variable was $weight), not a monetary problem, so separate cents math wasn’t an obvious choice).

Thank you to Chris Shabsin and Nick Moffitt for helping me pin down the problem.

Kite Photography

Here are some pictures I took by flying a camera-carrying kite over Boston:

More at xkcd.com/kite.

I’m getting a larger kite and hope to make some higher flights. I can’t really plan when I’ll be out there since it depends on the weather, but if you’re nearby (I’m flying them from the MIT athletic field), free during afternoons, and like this kind of project, drop me an email (rmunroe@gmail.com) with “hooray kites!” as the subject and I’ll let the interested people know when I’ll be flying next.

New Apartment

I’ve finally left Virginia and moved to Boston (the Cambridge-Somerville area). I’m really excited. I try to avoid the teenage-ish tendency to blame everything on wherever I am (“I just need to get out of this town! This place sucks! Hey, can you put on another Simple Plan CD?”). But I really think the Virginia town I lived in wasn’t my kind of place. So Boston’s going to be good. I feel at home here already (it helps that I have some lovely friends in the area). Hooray for things happening!

I put a whiteboard in the front hallway so everyone could leave notes and so forth. Hmm. A shared space that anyone can write/draw in …

I couldn’t help it:

(click for larger photo)

I’ve got some Sharpies in a drawer in case I need to lock it from editing.

Tools for dream typing

While trying any kind of sleep-typing, you probably want to use a keyboard like this:

This keyboard is missing every key that lets you delete words you’ve typed or otherwise send commands to the OS or text editor/messaging program you’re typing in (Ubuntu+ion3 and irssi here — your mileage may vary). When you drift off to unconscious sleep, it’s very easy to accidentally delete text, close the program, or other such counterproductive things.

It can be difficult to try to study something that by definition screws around with the thought processes you use to study it (I’m sure scientifically-minded drug-experimenter types would agree). But I have definitely had dreams where I was able to do some sciencey stuff while playing around — examining the simulated world to see how detailed it is (I wonder what rendering engine my brain uses …), testing what I can and can’t do in it, and so forth. Inevitably, since dreams are so hard to remember, I forget about the allure of the whole thing for long stretches of time. But eventually I have another vivid dream and start thinking about the possibility of playing around with a complete, realistic virtual world of my very own, and my inner SimCity player insists that I try it again.

Since dreams are so intangible when one’s awake, I don’t think that there’s any way for them to become a serious enough interest to detract from real life. But they’re a fascinating phenomenon and I’ve had fun when I’ve played around with them.  Also, a few nights ago I had a long dream where I spent a lovely afternoon with Janeane Garofalo. And when the negative results of your experiment are “a lovely afternoon with Janeane Garofalo,” you have a good experimental design on your hands.

MIT Talk

(Note: Firefox crashed just as I was finishing this post. This is a terse recreation, as I’m about to collapse.)

I gave a talk at MIT yesterday (now the day before yesterday). It was wonderful. I had never really done this kind of thing before, but it went so much better than I expected. I had someone tell me afterward that my talk was better than the one by the Penny Arcade guys, and that I was funnier in real life than in the comic. It’s hard to imagine better praise than that.

The talk sold out early and the place was packed:

I was stalked by RoboRaptors and pelted with playpen balls (which fell from the ceiling in the middle of the talk, courtesy some mysterious party) :

Feeling a lot less tired than I look in this picture, I signed playpen balls (with jokes about spherical geometry), comic prints, tickets, and — at one point — breasts.

There are more pictures here.

Firefox keeps crashing. Here are some brief Things I Did:

– Made fun of audience member’s mom, said “fuck you” to some of the world’s top young computational linguists, and answered a question by whistling the “Katamari Damacy” theme.

– Finally managed to give davean credit for all his work, in public, in circumstances where he couldn’t escape. He pretended to be annoyed later, but only a little.

– Met lovely people who twirled burning things at high speeds out on the lawn at night.

Oh, and I don’t know of any video of the lecture yet, aside from one bit floating around. It should be out there somewhere. But hour-long videos with troubled audio are no fun — what I’d like to find is a transcript, like the one of the Penny Arcade talk (although those are a lot of work to create). But I’m content just remembering how cool it all was.

Thank you to everyone involved, and I’m sorry to everyone who I couldn’t give enough time to that night (after the lecture, I was meeting and talking to so many people that I had trouble keeping track of who was where and when, or who I was speaking with from one minute to the next). But it was a lot of fun. Let’s do this again sometime soon.

Life Imitates xkcd, Part II: Richard Stallman

As if Cory Doctorow getting dressed in a red cape and goggles after I drew this comic wasn’t crazy enough, in response to this comic, two xkcd fans — Rafael Roquetto and Mauro Persano — have bought Richard Stallman a katana:

Richard Stallman with katana

The had it shipped to him at the FSF offices (more pictures here).

He really didn’t know what to make of it. I’m told he sent them back an email thanking them, adding, “I am not sure what to do with it, other then keep it near my bed.”


There’s some strange text on billboards around New York. I passed these four this weekend:



It’s clearly a viral marketing campaign and seems to be by Ask.com. I like puzzles like this, but at the moment it doesn’t seem to go anywhere — if you Google it, you just get blogs talking about the odd billboards. That’s not really very much fun.

It occurs to me that the sort of people who would be curious enough to go to Google and type them in are probably the sort of people who would like xkcd, so maybe we should create a twist in the puzzle. For those of you who have blogs or other sites, feel free to create links to xkcd.com with those billboard lines as the link text. I put the phrases at the bottom of xkcd.com so it won’t be filtered out as a Googlebomb.