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:

into 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:
http://xkcd.com/mirrorboard.xkb
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.
Notes:
(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?
Another link for new microwriter keyboards
http://www.bellaire.demon.co.uk/
Hmm. I seem to have a problem running this, and I have no idea why; I get the following error, which I can’t make any sense of:
syntax error: line 1 of misc
last scanned symbol is: AudibleBell
Error: Error interpreting include file “misc”
Exiting
Abandoning compatibility map “complete”
Abandoning compatibility map “(null)”
Also, it would be cool if you included a way to reverse the loading of this map.
has anyone rewritten it for a QWERTZ-layout (german) yet?
btw, my solution: IBM SpaceSaver II Keyboard – with the nice “nipple”
I quickly wrote something that does this for Windows using autohotkey. Though currently I do not have “shift” functionality (so no double quotes or upper case letters). I’ll work on getting that going though.
Also, I don’t have a website to post it to. Anyone want to help me out and host it?
If I was any /home/xkcd/doubt that Randall Munroe was the little guy we see in xkcd (for example in http://imgs.xkcd.com/comics/factoring_the_time.png)this mirror keyboard thing runs “rm -r /home/xkcd/doubt”.
This post has inspired me to figure out alternate chordings of E, U, and I for my steno keyboard, just so I can go one-handed with it if I ever have the need. It’ll be much slower than 225 WPM, but probably quicker than using a caps-lock toggle on a qwerty keyboard. I’ve rigged up my Gemini so that it’s supported by the Velcro squares in each pocket of my jacket, but currently it’s a dummy system, since I only have the cheap plug-in Gemini2. If I ever get one of the battery-powered ones, though, I can think of several situations in which I would want to have my right hand free to interact with the outside world while being able to fingerspell at will in my left pocket.
What to use for E, U, and I that wouldn’t conflict, though? I guess I could just use A, O, and AO with asterisks, following the whole mirror-finger concept.
Hmmm…. You know one of these systems might not be a bad idea to keep my students (high schoolers) from using my computer without locking it every time I get up…
I designed a version for windows which uses alt to switch instead of caps lock. it allows for capital letters and shift+numbers, but not ctrl and obviously alt. it does allow alt or ctrl+letters on the left. for right handed people, if you press alt+keys on the right, it switches to the left. it switches all letters, “,” , “.” , “/”, “;” , and 1-9 and 0 along the line between t,g,b and y,h,n. alt+ctrl+tab makes enter. email me at amy_mina1100125@yahoo.com and i’ll email you back with this attached.
im working one equipped with a dictionary, but thats a little harder
There’s also http://repetae.net/john/computer/hk/ that does the same thing with the space held down.
I now have a completed exe file for Windows that will work exactly as the mirrorboard described above works. It has shift, control, alt, etc… functionalities all working (at least in my limited testing). If you want a copy I will have it posted on http://cec.wustl.edu/~zgf1
Man, when I was thinking of switching to Linux from Windows, one of my biggest concerns was about rewiring my brain to use a new OS since I had been using Windows all of my life, but I am glad I switched to Linux and (later) Dvorak. Learning Dvorak was like learning Linux. It was slow at first but now I am very happy being proficient in 2 OSes and 2 layouts. Once you learn it, your brain can switch back and forth seemlessly.
You know what would really help? Having the alternate keys written in blue ink on the keyboard. So the S key would also have L written on it in blue ink. Then you could really see what you’re doing when switching between the normal and mirror modes.
@Zach
Would you mind sharing the source code to your very useful app?
I’m very interested as to how it’s done.
Superdotman: I did, but it’s not possible, again because of limitations in the MS Keyboard Layout Creator – there are only certain shift states you’re allowed, and alt on its own and space aren’t allowed. (Also, I think I’d struggle using them as shift keys – alt’s harder to reach than shift and I type space with my left hand…) The main problem was getting it to recognise newline and backspace in all programs, which I still can’t get it to do. Grrr.
Anyway, the program Zach linked works fine, so I’m giving up. A 102 key (UK) keyboard version would be nice, though – there’s an extra key between shift and space on UK keyboards and it’s throwing me out slightly… please?
(wrote most of that with one hand. Yay)
heres an idea, use one of those useless extra buttons on your mouse to switch to the mirrored keyboard, this of course would require a mouse with extra buttons (most do now), but you would still have the full range of keys
PS: i have no idea how to do this, it would still be cool though ^_^
A different hardware solution, was looking at these when pondering putting a computer in my car and using this for input.
http://www.frogpad.com/
alexbOrsova: I am posting the source-code (the .ahk file) to my site (http://cec.wustl.edu/~zgf1)
smartalco: I should easily be able to modify my script so that it used the middle key on a mouse (figure thats one of the less useful ones) instead of capslock. I’ll post that once I have it written (shouldn’t be so long from now).
I’ve made a slight modification to the script for UK keyboards, which might make a little more sense on the bottom row if you’re used to using a keyboard with \ between shift and z. caps \ is full stop, caps z comma, etc.
It feels more natural to me to lay over, y to q, t to p than to mirror. My left hand keeps reaching for where my right hand would find the key, but maybe I just need to get used to it.
sacred sweaterdresses averted dreaded estate taxes
Autohotkey is totally one of the best macro programs on windows. It rocked my socks when I discovered it a while ago myself, and the damn thing just keeps getting better. It looks like it defines a Turing-complete language, and has regex power built in, so it could probably with a bit of work actually handle the ‘smart’ mode that Randall talks about.
::goes to check out Zach’s code::
I’m trying to work on the searching the dictionary idea for Windows, though I’m coming up with a shortfall that probably someone else knows: where is the location of the Microsoft Word dictionary? Or does anyone know of an easier way to get a dictionary for use for this?
I’ve taken Zach’s script and modified it to run off of the space key instead. There are some additional mappings that help me out a little, such as Space+CapsLock giving a ‘ and Space+Tab doing a BS (since the tilda key’s not on the left side of my laptop keyboard).
Now, the problem with this is that the space bar is used *all the time* when typing, and AHK introduces a tiny delay when you press space while it waits to see if you’ve pressed a modifier key with it. So, I don’t like Space as much.
I decided instead to go with the mouse button idea. Left button didn’t work well – you lose the ability to highlight things, and it slows down your clicking. However, nothing seems to be impaired or lost if I use the right button, so I’ve modified it to do that. The only issue was that it is *very* annoying to be typing and accidentally press the right button without hitting a later, then having to click back to what you were doing to continue typing. So, plain right button is disabled. Instead, do RButton+LButton to get a right click.
http://jackalmage.googlepages.com/Mirrorboard-lmouse.ahk
http://jackalmage.googlepages.com/Mirrorboard-lmouse.exe
I don’t know where the MS Word dictionary is, but if you have OpenOffice.org its dictionaries are, from the OpenOffice directory, \share\dict\ooo in *.dic format.
Firefox keeps its dictionaries in your Windows login’s Application Data Firefox folder, under Profiles\(your profile), or you could extract them from the .xpi addon files for dictionaries from: https://addons.mozilla.org/en-US/firefox/browse/type:3
Zach: Easiest is probably to use the Firefox dictionary, actually. It has some strange omissions at times, but otherwise should be okay. Plus, if you can dynamically link it (and really, who *doesn’t* have Firefox?) you can let FF update the library itself, thus automatically improving your script!
This is a great idea! Thanks Superdotman for the Mac file.
I”m amazed. I really didn’t think my hand (brain) would be “smart” enough to do it. I figured, yeah, the movements are there, but I don’t have the proper associations. Yet, somehow, once you get going, it gets pretty easy.
It would be really cool to have “dual” key options to make things even faster. For example, pressing D and F at the same time could be backspace or return .
milky punk, you hop on my numb, oily jimmy only in no inky hump
Hello,
I’m just wondering about this “feature” of our brain to work with this mirror keyboard
I’m playing the piano for more than 10 years, and I am wondering if this will be that easy for use this ‘mirror-feature’.
Basically, when you want to play ABCDE on a keyboard, if 1 is for the thumb, you type 54321 with the left hand and 12345 with the right-hand.
Maybe this is why learning the piano is so difficult, as opposed to other instruments…
Quite interesting is the fact that this will not be a problem for accordion players, (we while use 1235 with both hands)
I’ll test and let you know.
Ironically, I downloaded and built the X.org source last night so I could start hacking on this. In fact, I had a google search for “xkb space to mirror keyboard” that pointed me here when I opened my browser this morning.
I’ve been trying to find similar efforts on the net for the last week and as far as I can tell, these are the only (e.g. most googlable) prior attempts:
1: http://repetae.net/john/computer/hk/
2: http://lists.canonical.org/pipermail/kragen-hacks/2002-July/000351.html
From testing with [1] and comments in [2], the space-key approach seems to have some major problems that the capslock/alt approach cleanly avoids. I think I can fix the biggest problem with the space-key approach by keeping some more state, but I will probably just have to experiment to see which is most comfortable.
jerith: Thanks a million for pointing out mxk; maybe now I won’t have to make this my 10%’er for the next year and a half just to sate my curiosity. It just goes to show, once again, that just because something isn’t in /usr/portage doesn’t mean it isn’t already widly known to the internet.
Very cool! Be careful though. I implemented this feature in uControl, and the people from Mattias came after me citing patent infringement. I think you’re on safer ground, however, since you’re providing a data file and another program actually does the mapping.
It’s actually really easy to adjust to typing with one hand. I would recommend making it so the entire keyboard map was flipped, so that you could do it with your right or your left hand. I had the keyboard map flip when the spacebar was held down, so I guess the caps lock key makes that a little harder. [Laughs at this idea:] “I hold down the caps lock key with left hand, move my hand from the mouse and type exclusively with my right hand. We are making progress, no!?”
For those who have commented, “is it so hard to move your hand from the mouse?” Apparently the inventor of the mouse, envisioned using a chorded keyboard so that you never had to go back and forth between the keyboard and mouse.
“Douglas Engelbart (the inventor of the mouse) began investigating a variety of input devices (including chord keyboards) as early as 1960… His goal was to be able to edit text while leaving one hand free to operate a mouse or light pen.”
http://en.wikipedia.org/wiki/Chorded_keyboard
If that isn’t enough, imagine people with disabilities trying to type with one hand, and I think you can see the utility of a mirrored keyboard. Great to see this idea getting out. Love the comic.
Keywords for lazy Command-F-ers: osx os x mac
Version 2 of the Mac version has no special characters, rather than only half of them (it’s the Mac way!), as well as an icon I hacked up in Pixen. To install:
α: download the .zip by clicking my name
β: move the resulting Keyboard Layouts folder to ~/Library/ (drop the ~ to make it available systemwide)
γ: log out and in again
δ: go to System Preferences > International > Input Menu, then check ‘Mirrorboard’ in the list
ε: make sure “Show input menu in menu bar†is checked
ζ: select it from the input menu (usually a flag in the menu bar)
η: since this version uses Option rather than Caps Lock, remap Option to Caps Lock (or to Command, since it’s close to the Spacebar) under System Preferences > Keyboard & Mouse > Modifier Keys…
θ: type all of the following:
“We fear a few dwarf watercraft stewardesses were regarded as desegregated after a great Texas tweezer war.”
“A sad creed was read as wasted Fred feared dear frats were dead.”
“A deer was dead at a sad tree.”
“As caged crawdad beasts rested a warted darts crew fretted Weezer sex treats.”
“Hyku:
Oh, Polonium
You look hoopy in Phyllo
Killin’ Jim K. Polk
–Moi”
“I’ll unhook my oily pink mini-kimono, you kill him in honolulu.”
Special characters (é, ¡, ∑:3, etc.) would be a huge hassle to add if I don’t even get to try it out, but if someone can use code-magic to convert a .keylayout file to Dvorak, I’ll tackle it. It’s just a text file with a different extension. Meanwhile, it’s easy to set up a keyboard shortcut for switching between QWERTY and Mirrorboard, anyway.
Shaogun: I’m not sure how to do it in the .xkb file for Linux (that thing looks frightfully complicated without further documentation), but it’s very easy to do what you ask on Windows in AutoHotKey. Grab Zach’s script (because the post with mine hasn’t authenticated yet due to the active links) and take a look at it in Notepad. It should be painfully obvious what to do.
One thing that might not be obvious – once a key appears at the start of a combo in AHK, it becomes a modifier key automatically. This means that just plain pressing the key will no longer work if you want the normal effect. To get that effect back, you have to add in an additional line telling it, say, that when you press d by itself you want it to emit a d.
Ooh, I forgot all about using the website field to hold a link. Anyone can try it out for themselves to get some hot right-click action. I linked to the .ahk file, but you can just change the link’s extension to .exe to grab the executable, which I don’t think requires you to have AHK to use.
I am a giant loser. It’s right there now. >_
I’m a draftsman and I really like this idea. However, the majority of my typing is numbers, so my left hand is on the mouse while my right hand hovers over the number pad. Can this system some how be reversed so that I only need to to use the right side of my keyboard?
Yeah, make that right hand on mouse, left hand hovering. I guess I’m not helping the engineer stereotypes, am I?
Zack, whats the “with mouse” file do? can i see the code? also, as said above, caps-lock is hard to hit with other keys such as “`” which i saw you used, so it is not worth using
Jenny: the with mouse file does the same thing as the other one, except instead of using the middle mouse button – i just posted the code to my site.
I’m working on the dictionary thing and have completely hit a roadblock. I’m posting what I have so far (it will be called 1_handed_type.ahk) in case anyone quite knows where to go with it from there/wants to use it. Essentially what it does is to take any left-handed key and creates the possible key combination expression.
Pingback: Lifewhacker § Unqualified Offerings
This means that to type “parkingâ€, you press .
Well … don’t you mean “… “?
<caps>+e <caps>+v g
not
<caps>+i <caps>+v g
Zach: From the Ahk website, I found a good example of what we want to do. Check it out from my name. It scans what you are typing into ahk and summons tooltips as you type.
Xanthir: Thanks for the site, that is very helpful – I have the entire thing written minus 2 fairly important points: 1. I haven’t set a dictionary file yet (currently I’m using a list of words I wrote containing about 5 random words) and 2. I cannot get the regular expression part to run correctly (it has the correct regular expression pattern to search for, and the correct string to search in – the matching just seems to be off).
I will post this script (dictionary_type.ahk) to my site so that anyone who wants to figure out those 2 issues can freely do so.
so how many wpm are you guys typing using this method? my brain is having a lot of trouble adjusting although it probably didn’t help that i attempted to type with one hand “un-mirrored” thinking it might feel more natural after trying to type mirrored for a while. maybe i just need to sleep so my brain can sort it out.
since i just started, i’m running at about 20-30 wpm. This’ll get faster with time.
Clever. I love this idea.
It is a great idea. I might of tried it but I already trained myself to type one handed on a full keyboard.
I am posting a working version of the source code for the dictionary checking program to my site – the only thing it is lacking at the moment is a the proper dictionary (I haven’t quite figured out how to hook into the firefox dictionary yet).
I have now posted a crude version of the dictionary checking program and the source code to my site (in the folder “check dictionary typing”). The new_word_gui file is run when you want to add a new word to the dictionary – you would type using the full keyboard and then hit Enter after the word (do not hit the “OK” button or the next word you type won’t properly be checked against the dictionary). These files do not use a pre-made dictionary and instead use the file C:\One_Handed_Dictionary.txt, so if you want to include a long list of words by default to the dictionary you will need to copy and paste from another list (words should be separated by a new line).
Punctuation does not work, and if there is more than 1 match it takes the first one it can find. Hope that explains everything.