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:

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?

208 Responses to “Mirrorboard: A one-handed keyboard layout for the lazy”

  1. General Arthur E. Tombofil Says:

    I just slide my hand to the right to hit the letters that aren’t on the left side of the keyboard. Call me crazy.

  2. Pat Says:

    I hate to do this to you, but it’s been done before, the concept at least. http://www.matias.ca/halfkeyboard/index.php has half-keyboards that mirror whenever you hold the space bar, but they are mad-expensive and it’s all implemented in hardware (so it’s just plug-and-play). I’m glad there’s a much cheaper alternative now though, and you’ve re-piqued my interest in more efficient typing. (DVORAK user for ~3 years now)

  3. Cliff Says:

    When I was first looking into wearable computers, through the MIT Wearable Computing project back in 1998 or 2000, I found an alternative keyboard that did just what you were talking about. It was design for wearing on one forearm, and had only half the keys of a normal keyboard layout. The spacebar was “split”, and one half of it was actually a shift key. While the thumb was pressing that shift key, the keyboard was in mirrored mode. I think they only had a right-handed model (to be worn on the left forearm), but it was a neat idea. I had the same thoughts as you (I already know this movement, and my brain can mirror it automatically) when I saw it.

    Of course, this has implications for people like my father, who has only one hand. Still, he types faster on a full QWERTY keyboard with one hand than some two-handed people I know.

    Relevant patent:
    http://www.freepatentsonline.com/5288158.html
    A keyboard that looks like the one I saw back then:
    http://edgarmatias.com/papers/ic93/

  4. xkcd Says:

    General Arthur: I typo a lot when I try to do that — I don’t really instinctively know where the keys are.

    Pat: Cool — I’ll put a note about that. As a software implementation for a regular keyboard this still covers slightly different ground. I don’t claim this is the first time this has been done — just that I did it and find it useful, so I’m sharing.

  5. Zigdon Says:

    I used Dvorak for a while, and enjoyed it for normal typing. But when I sat down to code, things suddenly became much more difficult. Apparently, while I’m aware of how to spell English, I’m just don’t think of how to spell anything in whatever programming language I’m working on. Didn’t expect that.

    I’m tempted to try that perl autodecoder you mentioned above, but I’ve no clue how to hook it into X, or what the UI would look like.

  6. aldel Says:

    Holding caps-lock with your pinky while typing letters with the same hand is pretty bad ergonomically. I think using the space bar as Pat mentioned would be an improvement, but the pattern matching method in note (4) is probably the best idea.

  7. Chip Says:

    My solution to this was to map caps + to mouse movements (caps + space = click). I never moved my hands from the keyboard again.

  8. Rachel Says:

    Better? I don’t know about better….

    A sad creed was read as wasted Fred feared dear frats were dead.

    But I liked this one better:

    A deer was dead at a sad tree.

    (First the deer was sad but then I changed my mind about that.)

  9. fREW Says:

    Is it possible to make it so that instead of pressing Caps + Key you press Caps then key? Or have Caps be a switch like normal so you can press caps and the keyboard stays mirrored until you press it again?

    Either way this is cool.

  10. Zabet Says:

    I hate to be nitpicky, but is it REALLY that difficult to go from typing to grabbing a mouse? And can’t you just tab between browsers and messengers, and scroll with the keyboard through a webpage?

  11. xkcd Says:

    fREW: Caps then key might work, and would indeed be more ergonomic — I’m not sure how to put it together, though. Perhaps you’d make any key except caps lock disable caps lock as a side effect, but I don’t know how that would work.

    Having the keyboard stay mirrored whenever caps lock was on isn’t particularly great, I think. But I like your first idea, though again I don’t know exactly how to do it.

    Zabet: Of course, if you don’t think it’s worth it you don’t have to use it. As I said — in my experience it’s been a convenient change for me, so I’m sharing it.

  12. Mr. Viking Says:

    This is really intriguing. Especially the intelligent-guess method. I don’t think it would be all the hard to develop a program that does this either. I can type words with two thumbs at a fairly good speed (TXT MSGing), so it’s curious why this idea hasn’t been implemented yet.

  13. Mr. Viking Says:

    What I mean, is that, it’s curious it hasn’t been implemented for windows. I hope someone corrects me though.

  14. Kevin Says:

    I think the mirror-keyboard is a great solution to increase efficiency but what other solutions are out there? For instance, if text messaging works so well, why not port it to the 10-key pad? T-9 with the 10-key pad and a mouse could get quite effective.

    Then again, not having to move my hands from the keyboard is what got me hooked on the Thinkpad’s Trackpoint feature. Do they make desktop keyboards with this?

  15. Chris Shabsin Says:

    There was a Mac program that does various useful things with the CapsLock key and keyboard layouts in general; I don’t recall the name… but one of the things they allowed for was this mirrorboard type layout, only I think they used the Space Bar as the shift key to hold down for keys normally from the other side.

    It turns out they were sued for patent infringement, and had to remove the layout from their product. I think I’ve seen hardware products related to this idea, an actual half keyboard, but no software implementations that were freely available.

    So, um, what I’m trying to say is, er… I’m not sure. But it’s a point of information.

  16. gmp@lj Says:

    I’ve done a few google searches for windows style versions. On another blog, http://chris.pirillo.com/media/2007/07/03/keyboard-mapping-software/ , I found this: http://www.autohotkey.com/

    It looks free, and open source, but I’ve not downloaded it or tried it, and can’t until I get home tonight. There are a lot of other “shareware” for $50 versions out there, but this is the first free, open source one I’ve found. It also seems to be a macro program and alias program, which seem like logical jumps.

  17. steep Says:

    I haven’t looked at Linux for a while, but could you use the “Windows” key maybe to switch the mirroring on & off?

  18. Sam Rawlins Says:

    I like the intelligent-guess idea. The only snag I see is that +`e’ maps to `i’ (both vowels). Other than that, probably not too many pairs of words where one is made from the other by changing `s’ to `l’ or `w’ to `o’.

    Here’s a fun code project: Use perl to search the dictionary for _all_ ambiguous pairs (triplets? (quads!?)) to see how big of a problem it is.

    Also, this would be a great way to make smaller laptops with normal-sized keys (and half-size keyboards).

  19. abzde Says:

    i like it, quite a lot, except i’ve noticed that i end up typing shift+letter more often than caps+letter, i suppose i’ll get used to it, but just at first it’s a bit of a pain :D

  20. alexiel Says:

    the funny thing is, i’m left handed and i seldom have that problem - i “instinctively”, as you said, know where the keys are. i use my right hand to control the mouse as well. my speed suffers a fair bit, of course.

    to experiment, i tried typing the first paragraph with just my left hand and the second with my right. there is a noticeable and frustrating difference in speed and accuracy. I suppose not using your dominant hand to type aggravates the situation.

  21. Will Thompson Says:

    The unexpected downside I found after switching to Dvorak was that there are very few words that can be typed one-handed. (It turns out, according to a very short Perl script and /usr/share/dict/words, that the longest left-hand words are “yuppie” and “yippee”, and the longest right hand word is “nth”.)

    I’ll try making a Dvorak equivalent of your mirroring map and report back. (It might be useful to have some keypress to switch from your regular keymap, in which Caps is obviously (?) mapped to Ctrl, to the mirrored one with Caps mapped to mirroring…)

  22. kodi Says:

    I learned the Dvorak layout to reduce stress on my hands and wrists while typing, not to type faster. My subjective impression is that my wrists feel better now than they did 7 years ago.

    I’ve seen it claimed that moving your hand from the keyboard to the mouse, especially over a long distance, also increases wrist strain. Since then, I only use laptop-style keyboards even on desktops, and again, my subjective impression is that it’s helping.

  23. Matt Buchwald Says:

    I learned Dvorak just for the sake of learning it (I can type in both dvorak and qwerty pretty instinctually now), but I’ve found the same thing as kodi; my hands and fingers and wrists get fatigued much less often. I type about the same speed on either keyboard layout.

  24. Vorn Says:

    I have completed a short Python script that examines the shapes of words using this layout and searches for duplicates. I then applied this script to my local /usr/share/dict/words.

    I got 6,405 matches.

    Some interesting bits:
    ‘poly’ has the same shape as ‘post’, so words that accept both as prefixes are ambiguous.
    ‘maul’ is the same as ‘carl’
    ‘may’ and ‘mat’ are the same as ‘cat’
    ‘masculation’ is the same as ‘calculation’
    ‘kiss’ is the same as ‘kill’ is the same as ‘dill’.

    The website I link to is the text of the script. Feel free to use it as you see fit.

    Vorn

  25. Jerry Kindall Says:

    I’ve typed Dvorak for over ten years now. I agree that the supposed speed benefits never really materialized for me (perhaps it’s just that I habituated to think no faster than I can type during my QWERTY years). I also switched to “natural” keyboards shortly afterward as a preventive measure. No twinges so far.

    I do find it sad that most affordable ergo keyboards have the vestigal numpad. I didn’t need a numpad in 1982 on the Apple II+ and I don’t need it now, and it’d be nice to have the mouse a little closer. The best compromise I’ve found so far is to use the numpad to move the pointer (both Mac and Windows allow this). It sucks for long distances, but for some tasks (e.g. clicking a Next button repeatedly after doing some keyboarding) it has its benefits.

    BTW, besides the comfort benefits of Dvorak, being able to type “shithead” without removing your fingers from the home row is very useful in Internet discussions.

  26. Sentynel Says:

    I’ve had a look at the Microsoft keyboard layout generator to see if this could be done in Windows. I don’t think it’s possible to have it work exactly the same way (ie, use holding down caps lock to switch to the mirrored layout) because there doesn’t seem to be a way to stop caps lock staying on.
    However, having read the comments in the Unix layout file noting that not all uppercase letters work, I reckon it could be done by having the keyboard work normally with caps lock off, and then turning caps lock on meaning that shift activates the mirrored layout. No uppercase characters at all with caps lock on, of course, but it could still be useful.
    I’ll see if I can get it working anyway, and post a link if I can.

  27. Danny Howard Says:

    I have been a left-handed QWERTY typist since highschool, when I had no access to typing classes and high-latency access to BBS chats. I’m just used to shifting my eyes to the keyboard to type. But now you’ve got me thinking about my own insane style.

    I suspect that my one-handed typing method may be good, ergonomically speaking, because it keeps the hand and arm moving around, using a lot of muscles at random and spreading the load. However it requires higher cognitive overhead, maybe, and the big drawback is looking at the keyboard while I type, which is kinda good for clearing out distractions (maybe I don’t want want to know what is blinking on my screen while I am trying to jot my thoughts) but on the other hand I have ended up typing into the wrong window enough times . . .

    So, in the spirit of creative insanity that you have promulgated here, I’m thinking maybe I should try getting a physical mirror that I can mount on my monitor that my brain can use to guide the left hand to and fro accurately, and I’ll spend less time hunched over my monitor. A nice bicycle-rearview bubbly-type mirror, perhaps . . .

    Thank you for inspirational insanity.

    Cheers,
    -danny

  28. gmp@lj Says:

    anyoneeb at livejournal linked what Sentynel was talking about:
    http://www.microsoft.com/globaldev/tools/msklc.mspx

  29. Seth Says:

    The most shocking part of your suggestion is the implication that you haven’t been using your caps-lock key as a control key. I can’t remember the last time I wanted to lock my caps, but as an Emacs user, I’m definitely a control freak.

  30. just john Says:

    1) General Arthur E. Tombofil, you’re crazy.

    2) Since I use up to 35 different keyboards at 35 different machines over the course of any given day and I have configuration modification rights to about six of them, this mirrorboard thing wouldn’t make sense for me to get in the habit of using.

    HOWEVER, I can see a musical application for this concept on a piano-style keyboard, perhaps using A-flat or D as pivot points. Then, for instance, my little three-octave keyboard could be “unfolded” into a nine-octave range. Hmmmm ….

  31. Kyzentun Says:

    While having one hand on the mouse can force you to type with one hand, it doesn’t have to.
    I have a keyboard with a 3-button trackpoint (one of those eraser head things) between G, H, and B. Means I can switch between typing and using the mouse without moving my hands at all. If you’re interested, it’s manufactured by IBM (made for Lenovo on the back), and is a laptop style keyboard. USB connection, with two USB ports on it. Cost me ~100 but it’s pretty nice.
    I switched to trackpoints a few years back because my desk had too much junk for me to have a mouse pad, so I had my mouse on the chair beside me. Except the mouse would run away whenever I took my hand off of it. So I borrowed an older style trackpoint kb and quickly grew to love it, though it took me a few weeks to rewire my brain to the same proficiency (I recommend Enigma for speeding the process, since it’s a mouse centered game). I now do better with a trackpoint than with a normal mouse, and I don’t have troubles using the mouse when I have the keyboard in my lap.

    @ aldel:
    As a programmer that uses underscores a lot, I’ve fallen into the habit of only using the left shift key, even for ! and other stuff that uses the left little finger. It’s ergonomically inefficient, but it requires more processing to remind me to use the right shift key.

    @ Jerry Kindall:
    I remapped my numpad to switch desktops Other than that, I don’t use it. It was kinda hard to find a keyboard that had both a numpad and a trackpoint, but I did.

    I intend to try this keyboard map out in a few days, since it sounds cool.

  32. Colin Says:

    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

  33. Sentynel Says:

    Argh.
    I HATE the Keyboard Layout Creator and Windows’ implementation of multiple keyboard layouts.
    When I can get Windows to switch to my custom layout (which happens occasionally), the text works fine, and backspace and newline sometimes work, depending on the program. I’ve tried various different newline and delete characters with mixed results.

    My name should link to the keyboard layout file (UK English, but could probably be adapted pretty easily to US English), if anyone wants to download that keyboard layout program from http://www.microsoft.com/globaldev/tools/msklc.mspx and see if they can do any better than I did. Good luck.

  34. Jivemasta Says:

    I usually just keep my hand in the center of the keyboard when I’m typing with one hand. My hand is big enough to reach any key without much trouble. If I’m typing something longer than a sentence though, I just use two hands.
    Dvorak is a really good layout, I’m trying to get it’s popularity spread a little since Qwerty is obsolete now that we don’t have to worry about our typewriters jamming up anymore.

  35. Kyle Marek-Spartz Says:

    By the way, I believe your spam protection could be interpreted in multiple ways.

    But back on topic. I really like the direct that (4) is going in. This would be better for phones, too. I think it would be an improvement on the iPhone interface.

  36. Colin Says:

    I believe your spam protection could be interpreted in multiple ways.

    I thought about that too, except that the sum of (1+7), i.e., the sum of 8, is still…8. It’s ungrammatically, though.

  37. Jason Says:

    The Dasher project might be of interest to you.

    It doesn’t solve your keyboard layout problems, but instead it provides a way for you to type without having to worry about removing your hand from the mouse.

    In fact, you type with the mouse (in a sense).

    Visit the project page at: http://www.inference.phy.cam.ac.uk/dasher/

    Get excited by watching this (hour long, sadly) video demonstration of Dasher, by the creator of Dasher, to some Google employees at:
    http://video.google.com/videoplay?docid=5078334075080674416

  38. undeadgoat Says:

    Colin you are my hero, but about the one-handed-ness, not the sum of 8.

    And anyways, the spam protection is totally grammatical if you read the “+” as “and”.

  39. Nathan Jones Says:

    As someone who can’t imagine typing with one hand and who has no problem switching between mouse and keyboard, I’m intrigued by the volume and depth of comments here.

    Devil’s Advocate suggestion: Instead of overloading keys on the left-hand side, use the keyboard to navigate web pages. (You are using Opera, right?)

    Just kidding: I can see the benefit of having a mouse or trackpad, but this keyboard mapping strikes me as a lot of effort for little gain. Sorta like the way I spent far more time evaluating a new text editor than I’ll ever gain from using it.

  40. L Says:

    What about mirroring the number pad over to the left hand side of the keyboard? I work (and therefore type) with a wacom pen in my right hand almost all the time and the only thing i’m hindered on really by it now is using the number pad, for some reason.

    though honestly, wacom should put a number pad on the tablet that you can access through one of the softkeys, but that’s a separate issue.

  41. Jj’s Blog » One hand keyboard Says:

    [...] I found something I can use!! Randal Munroe fixed up this Keyboard layout that mirrors the QWERTY layout by pressing CAPS, so you can only use your left hand to type, ahilw the right mouse is free to [...]

  42. Andrew Says:

    As others here have mentioned, the mirrored keyboard idea has been implemented before, and I’ve long been craving one. I’m a little weary of the ergonomic implications of using caps as a switch key, though, for the sake of the pinky-finger keys. I much prefer the idea of hold-space + key, which to my knowledge, can’t be done with merely a layout file.

    The caps thing is clever, though, because it’s the first approach I’ve seen that you can actually download and use :)

    Even though the space/switch seems to be a popular idea, I’ve come to understand that nobody can make these things in hardware or software, because Mattias has a patent on the concept that they enforce aggressively. They want to be able to continue to sell it to the physically handicapped as a “medical device” at obscene prices that medical insurance usually pays for.

    And In response to Jerry Kindall - don’t you DARE take my 10-key away! NUM LOCK, however, you can keep.

  43. _Mark_ Says:

    A few people have questioned the problem of moving between keyboard and mouse. It turns out that not only is that motion a *major* efficiency hit, in one of the few large scale analyses of workplace injury among keyboard users, the one factor that related best to injury was mixed mouse-and-keyboard use (as opposed to just keyboard use by itself.) I don’t have the citation handy, but it’s in Raskin’s “The Humane Interface” and I did find it upstream at the time (it was done using an office worker’s union as a dataset, as I recall.)

    So yes, fixing the problem of *switching* from mouse to keyboard and back is worth a lot of hassle.

    (The Mattias keyboard had a great introductory manual, it got you started with some left-only words, then some right only ones, then alternating words, then alternating letters - it felt like a *very* efficient way to get your reflexes to kick in. The main problem I had is that while “my hands know where the letters are”, they’re not nearly so good about punctuation, and even though I’ve mostly gotten perl out of my life there’s still a lot of punctuation in code :-)

  44. John Says:

    “Do you have a wearable computer?”

    A what?

    “Are you interested in alternate keyboard layouts but too lazy to learn Dvorak?”

    Not really…

    “Do you masturbate at your desk?”

    …I’m listening.

  45. Qabach Says:

    When I typed that example sentence about the kitten, I got “tge dettev qarded tge gwvercraft” and I noticed that you mixed up the first two letters in the second “tge.”
    Not to pick nits (sp?) or anything, but I just wondered if anyone else noticed it.
    This whole idea is pretty interesting. I hadn’t realized how natural it is to type everything with one hand in mirror.
    E owvkiu og;y owrsk g;qqiv…I mean I wonder what would happen if I tried to type a complete mirror. I guess I have my answer and the answer is I got confused.

  46. Nathan Jones Says:

    “A few people have questioned the problem of moving between keyboard and mouse.”

    Despite my response above, I don’t really question it. I find it bad enough just moving around the keyboard enough to use modifier keys. So for me, holding down a key to enable mirror characters does not offer a significant benefit over moving between keyboard and mouse.

    But for the sake of joining in, here’s a thought: what if you could use the mouse to enable mirror-mode? That is, instead of holding down caps-lock while you type a letter, would it work if you could tap something on the mouse instead? Or would it be too difficult to coordinate left and right hands?

  47. jerith Says:

    A friend of mine has written a little app called mxk (http://welz.org.za/projects/mxk) which does keyboard remapping using evdev/uinput, so you’re not restricted to X.

  48. Alex B Says:

    Google suggests the phrase “i’ll unhook my oily pink mini-kimono, you kill him in honolulu”, found here: http://lists.freedesktop.org/archives/xorg/2007-June/026017.html

  49. Superdotman Says:

    I whipped up a rough Mac version, found by clicking my name. Here’s what you have to do to set it up:

    • download the file (Option-clicking my name should work)
    • remove the .txt extension Freewebs insists on adding (Does anyone have another permanent, free host that allows hotlinking?)
    • move it to a (presumably new) folder at ~/Library/Keyboard Layouts/ (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)
    • use Option rather than Caps Lock for reasons similar to those Sentynel described (Sentynel, have you tried using Alt or the Windows key?)
    • remap Option to Caps Lock (or to Command, since it’s close to the Spacebar) under System Preferences > Keyboard & Mouse > Modifier Keys…

    I didn’t put it together so that I can use it; I’m learning Dvorak and liking it so far. So it’s a bit unrefined right now. If anyone actually does use it, they can let me know here (I added the comments to my RSS reader) and I’ll refine it. Alternately, they can tweak it to their liking using the tool I used, Ukelele: http://scripts.sil.org/ukelele

  50. Jack Gannaway Says:

    Has anyone come accross a Microwiter keyboard? http://www.nifty.demon.co.uk/odd/mw/

    My dad had an AgendA pda (http://www.gifford.co.uk/~coredump/org.htm, scroll down) about fifteen years ago and it had one of these keyboards. As a six year old I didn’t really have the patience to learn all the combinations but one day I might dig it out.

  51. Jack Gannaway Says:

    Another link for new microwriter keyboards

    http://www.bellaire.demon.co.uk/

  52. kamagurka Says:

    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.

  53. DJ Says:

    has anyone rewritten it for a QWERTZ-layout (german) yet?
    btw, my solution: IBM SpaceSaver II Keyboard - with the nice “nipple” :D

  54. Zach Says:

    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?

  55. Sean Says:

    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”.

  56. Fafner Says:

    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.

  57. Matt Says:

    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…

  58. Jenny Says:

    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.

  59. Jenny Says:

    im working one equipped with a dictionary, but thats a little harder

  60. Shae Erisson Says:

    There’s also http://repetae.net/john/computer/hk/ that does the same thing with the space held down.

  61. Zach Says:

    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

  62. John Says:

    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.

  63. alexbOrsova Says:

    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.

  64. alexbOrsova Says:

    @Zach

    Would you mind sharing the source code to your very useful app?
    I’m very interested as to how it’s done.

  65. Sentynel Says:

    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)

  66. smartalco Says:

    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 ^_^

  67. Scott Says:

    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/

  68. Zach Says:

    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).

  69. Sentynel Says:

    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.

  70. Ian Says:

    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

  71. Xanthir, FCD Says:

    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::

  72. Zach Says:

    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?

  73. Xanthir, FCD Says:

    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

  74. Sentynel Says:

    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

  75. Xanthir, FCD Says:

    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!

  76. Mollie Says:

    This is a great idea! Thanks Superdotman for the Mac file.

  77. shoagun Says:

    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 .

  78. Vicente Says:

    milky punk, you hop on my numb, oily jimmy only in no inky hump

  79. yannick_LM Says:

    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.

  80. Terrence Says:

    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.

  81. Shane Celis Says:

    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.

  82. Superdotman Says:

    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.

  83. Xanthir, FCD Says:

    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.

  84. Xanthir, FCD Says:

    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.

  85. Xanthir, FCD Says:

    I am a giant loser. It’s right there now. >_

  86. Eric L Says:

    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?

  87. Eric L Says:

    Yeah, make that right hand on mouse, left hand hovering. I guess I’m not helping the engineer stereotypes, am I?

  88. Jenny Says:

    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

  89. Zach Says:

    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.

  90. Lifewhacker § Unqualified Offerings Says:

    [...] From xkcd, with a link to the layout file. [...]

  91. Aligma Says:

    This means that to type “parking”, you press .

    Well … don’t you mean “… “?

  92. Aligma Says:

    <caps>+e <caps>+v g
    not
    <caps>+i <caps>+v g

  93. Xanthir, FCD Says:

    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.

  94. Zach Says:

    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.

  95. Steven Says:

    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.

  96. Xanthir, FCD Says:

    since i just started, i’m running at about 20-30 wpm. This’ll get faster with time.

  97. zetotof Says:

    Clever. I love this idea.

  98. KicktheCAN Says:

    It is a great idea. I might of tried it but I already trained myself to type one handed on a full keyboard.

  99. Zach Says:

    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).

  100. Zach Says:

    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.

  101. Xanthir, FCD Says:

    Zach, I can’t figure out how to activate the thing. It’s running, but nothing happens when I type. Does it require your specific script to be active? ((It doesn’t look like it, but I’m not sure.)) I’m using one which triggers on a right-click instead.

  102. Zach Says:

    to use my script you need to have a list of words in the file C:\One_Handed_Dictionary.txt i have posted the dictionary i started with (without this file the script will do nothing)

    you do not need (nor would it do anything to help) to have another script that mirrors your typing running

    what you need to do is just run my dictionary_type script (and most likely for a while the add_word script as well) and then type with 1 hand as if you were hitting capslock or the mouse button

    by the way i tried it with a large dictionary and found that the search part was a big performance problem

    i’m not sure i explained that great, so if you are having trouble let me know

    this was typed with my script so that is why there is the weird format

  103. Xanthir, FCD Says:

    >_

  104. Xanthir, FCD Says:

    >_< I had the dict on my desktop. I’ll try it with it in c:/i

    i wasded around the house today and found that i could type with one hand

    woo! it works! Yeah, the dict is a bit sparse. Now, handling punctuation shouldn’t be a big deal - the period and comma can be easily done since they’re just represented by z and x (which aren’t too common at the end of words).

    i walked around the house today and found that i could type with one hand woo

    it works !

  105. Xanthir, FCD Says:

    So, improvements. Being able to strip the punctuation from a word then reinsert it would be good. that is, if i were to type “es!” it should strip off of the !, change the word to “is”, then pop the ! back on.

    I’m not sure why, but it acts somewhat weird with some punctuation. Frex, if i end a sentence with “on.”, it thinks that I really meant “one”. No idea why, as ‘e’ isn’t associated with ‘.’ anywhere in your code that i can find.

    similar to the first, if it detects a word ending with a z or an x that isn’t in the dic, it should try to remove the z/x and test the word again. If found, it can then pop a period or comma onto the word. “word.” also seems to trigger the weird replacement - it turns it into “works”.

    If possible, maintaining caps would be nice.

    we really need a way to turn it off with a key command. using caps lock for this would be good. Otherwise we have to go down and pause it manually to type the word ’side’. ^_^

    and there is still one good reason to run another key mirror - getting access to all the numbers and symbols from the other side

  106. Xanthir, FCD Says:

    Figured out the period problem - it’s just being naively fed into the regexp, which treats it like it’s supposed to, as a wildcard. You’ll want to strip that off of works beforehand.

  107. Zach Says:

    Xanthir: Yea, I definitely need to work on the whole punctuation issue (capital letters (if i do them at all) will come later).

    I liked the idea for pausing the script, so I implemented Shift+CapsLock to cause the script to pause (and doing that combo again resumes). Also, I added in “`” is backspace and CapsLock by itself is Enter. I have this updated script posted already.

  108. Eric Says:

    My notebook has the mouse tablet thingie within easy thumbs’ reach when my hands are in typing position…I just use that. The click-button I have to stretch for, but oh well.

  109. Alex Says:

    There are other solutions to the hand-moving-from-keyboard-to-mouse problem. Google on the words “foot” and “mouse” and you’ll see that there are a few different models of foot-controlled pointing devices out there designed to let you keep both hands on the keyboard at all times.

  110. Anna Says:

    I’ve been inspired to try the Dvorak layout of typing since I read this blog! Perhaps I have too much time on my hands this summer :D

  111. Bryan Says:

    This mirror keyboard is awesome. It would also be helpful for people that use CAD programs such as AutoCAD, Rhino 3D or any other program that has a prompt. When I was first learning CAD my teacher always said “Left hand on the keyboard, right hand on the mouse”

  112. PK Says:

    sad we extracted vast wet deer ears as we traded red tree sewers at great casted rear freezers

  113. Zach Says:

    I now included capabilities for using “,” and “.” in the my dictionary_type program, also words that are capitalized in the dictionary now appear capitalized when you type them, though I have not yet gotten words that follow periods to capitalize.

  114. Gertlex Says:

    Not cool… I just hurt my left pinky today :( (It’s tough with a band-aid on it)

    I too am a worshiper of AHK. It’s slightly saddening that Randall didn’t recommend it himself.

  115. Rummy! Says:

    For those interested, learning Dvorak feels like a major reprogramming of the brain. Once profficient, I loved it until I too realized I can’t program in it. Now my home PC is Dvorak and my work pc is qwerty (which I couldn’t remember how to spell for a moment… *sigh*).

    I do LOVE when people sit at my computer and get really confused at their inability to type. Whether people want to admit it or not, this is the coolest part about Dvorak.

  116. Gertlex Says:

    To get shif functionality, do this:
    Capslock & +q::Send {Blind} p

    There must NOT be a space between the + and q or it interprets the + as the plus character.

    Now for a bit of practice :)

  117. Gertlex Says:

    Oddly, this does not work with the left parenthesis (… but worked for the rest of the shift+number characters.

  118. Gertlex Says:

    Also doesn’t work for shift-enter… But I mostly use that in IM anyways.

    You can get a ? in the script by doing shift-capslock-` too.

    I can’t get shift-capslock-2 to do anything o_O (even if i set it to “w” or something)

  119. Zach Says:

    Gertlex: I have the same issue with the shift-capslock-2 (and i also found that shift-capslock-s has the same problem) with my mirrorboard ahk script (which uses capslock), however when i switch to use the middle mouse button instead (my mirrorboard_with_mouse ahk script) these issues don’t exist - not quite sure why.

  120. Zach Says:

    I have completed adding in proper use of capital letters (if word in dictionary uses a capital letter or if first word in a new sentence). This is in my site under the folder check_dictionary_typing.

  121. Gertlex Says:

    One idea to get around the lack of an L is to do a hotstring:
    :c*?:lS::L

    I’ve yet to try the dictionary stuff though.

  122. Zach Says:

    Gertlex: I just “finished” a dictionary thing with ahk, so you can check out my code/ask me for some suggestions (1 thing that is the biggest problem with mine is the small dictionary (though I do have an add-word script so that does solve some of that issue) and lack of quotes and parentheses)

  123. Gertlex Says:

    Ya, I’ve downloaded that… Though due to the aforementioned pinkie, I’ve yet to use this stuff at all, just experiment with it :)

    And though I worship AHK, I haven’t delved deeply into scripting with the language. My debugging might be nonexistent.

  124. Gertlex Says:

    Nevermind my afforementioned idea of shift-caps-` for ?… That overrides the backspace functionality.

    Also, it looks like the shift-caps problem occurs for the entire “column” of 2, w, s, x…. o_O

  125. Sarahnade Says:

    This is wonderful!! I’m totally one of those “I could pick up my hand to move the cursor to that text box… or I could just tab for 5 minutes until I find it!” kid of girls. I almost peed myself when I was told about alt - tab. But this is WAY better. Now I won’t have to take my hand off the mouse at all!

  126. Steve Says:

    Nitpick: In the paragraph following the second image, for consistency, “” should instead read “”.

  127. Steve Says:

    Fucking angle brackets!

    “caps+i” should instead read “caps+e”

  128. Robert Says:

    hey Zach–I’m really impressed with what you’ve done on the mirrorboard, its been working great for me, but a ‘lil slow. I figure that the dictionary lookup would be faster, but I’m not really sure how your app works and I was wondering if you can put up a readme explaining it? thanks

  129. Endolphins Says:

    When trying to implement this on scandinavian keyboards I ran into some problems. There aren’t enough keys on the left side of the keyboard to map “Ã… Ä Ö” without shifting the entire setup one key to the right, which means I have to move my hand around a lot, an activity of which I am not a huge fan. This also makes the whole “right hand movements” obsolete, since the keys are not in the same place. Argh!

    Scandinavian keyboards have the Ã… mapped to [ (which is moved to Right Alt+8), Ö mapped to ; (which is moved to shift+,) and Ä is found at ‘.

    Scandinavian keyboards have reduced the size of the return key to allow for the placing of another key, located to the right of the QWERTY ‘ . Thus scandinavian keyboards are effectively 105-key keyboards which makes these innovations a little… hard to implement.

    Damn it all. I’ll just wait for some decent voice-recognition instead…

  130. Fred Emmott Says:

    I’ve got one of the Matias hardware ones, because occassionally I get tendon issues in my right arm; firstly, the disadvantage:

    It’s practically impossible to type a decent password on the thing :)

    The advantage is that it works in every OS, and in Linux without X.

  131. Kyzentun Says:

    The reason why you have problems with shift+caps+z, and other 3 key combinations is because it’s difficult to engineer a keyboard that can uniquely detect all possible key combinations. So they make all 2 key ones work, and most 3 key ones that use 2 modifiers, then leave the rest to luck. The really high quality keyboards sometimes reach for higher combo counts. This applies to all kinds of keyboards, AFAIK. Which key combos are affected varies from one keyboard to another. The only workaround is to try different key combos instead.

  132. Naji Says:

    Hey, wait… where is the “Alt Gr” key ?

  133. Zach Says:

    Robert: no problem I can post a readme as to how it works/where I think others can most likely improve upon it in case anyone is so inclined. This should be posted by the end of today.

  134. LUElinks Says:

    This setting shall forever be known as “FAPS LOCK”.

  135. Zach Says:

    I have just posted the readme file for the dictionary project to my site.

  136. Robert Says:

    great–thanks a lot

  137. Jann Says:

    I like your idea - if only I were better a typing this way…

    I found a bug though: the left-handed capital L does not work when using the left shift key.

    Another point: Why do you guys need the mouse so badly? What happened to and ? E.g. when I’m done typing this, am I gonna click on “submit comment”? No, I’m gonna press and then . At times (surfing, image manip) I also use the mouse a lot, I just don’t see the need for switching so much.

  138. JT Says:

    I didn’t read carefully enough to see if someone had already mentioned this but why not make the toggle key a button (thumb?) on the mouse?

  139. #endgame Says:

    If you change the xkb_keycodes bit to read like so:

    xkb_keycodes {
    include “xfree86+aliases(qwerty)”
    // Swap LCTL and CAPS
    = 66;
    = 37;
    };

    you get swapped left control and caps keys. Great if you use emacs a lot.

  140. #endgame Says:

    (Note to self: remember HTML entities)

    If you change the xkb_keycodes bit to read like so:

    xkb_keycodes {
    include “xfree86+aliases(qwerty)”
    // Swap LCTL and CAPS
    <LCTL> = 66;
    <CAPS> = 37;
    };

    you get swapped left control and caps keys. Great if you use emacs a lot.

  141. Kevin Says:

    Dave`s beard served as a face sweater

  142. Materiality Says:

    For some reason, I cannot wrap my mind around using caps lock… o_O
    I must constantly think what key I should be pressing if I want to write a key on the right side of the keyboard. Just typing one-handed with an ordinary keyboard layout is a lot faster. It might have something to do with me being left-handed.

  143. Bastian Says:

    Too bad i’m left handed and use my left hand for the mouse. Is there any way to get it work the other way round? Using the right side of the keyboard and caps for switching to left side?

  144. Electricmonk.nl weblog » Blog Archive » Mirrorboard: A one-handed keyboard layout for the lazy Says:

    [...] 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. [...]

  145. Vanessa Says:

    For everyone asking why you need one hand on the mouse… this can work for the right hand doing anything, not just mousing. I really wish I had found this while in college. I’m pretty decent at doing two things at once, and I often wished that I could type one handed while doing homework with my right hand. Actually, I did do it, but I was a little slow at typing on a whole keyboard with my left hand. There were also a few times where dinner and homework time overlapped, and having a free hand for eating would also have been nice.

  146. Jon Says:

    I have found a autohotkey script that someone has made that does the exact same thing, only it uses space instead:
    http://www.autohotkey.com/forum/topic1326.html

  147. Vi Says:

    Cute Idea! Only I’m a Dvorak user (can type Qwerty as fast as ever, but I need to see the keys). The other problem is that I’ve ripped all the keys off of the keyboard that I don’t like, including capslock. Still, nice job!

  148. Vi Says:

    Poop a puppy pie, Jake; pay a pope, poke a papaya, equip a peppy oak axe. Puke, you peaky ape, you! I joke, Jake, you yappy pixie; I joke.

  149. kamagurka Says:

    I still get that annoying error from before. Still can’t figure it out.
    And I could use a QWERTZ version of this, anyway. Is that a simple modification? I tried taking a look at the file itself, but it’s all Greek to me.

  150. James Says:

    I can’t seem to find the Firefox dictionary, but I have a 54,000+ word dictionary (wordlist), with word frequencies. It is downloadable by the click of my name.

  151. cthuljew Says:

    Here’s my version of the US Dvorak one-handed board. Still need two hands for hyphens and brackets, but the letters work fine.

    http://www.sacredchao.net/~cthuljew/mirrorboarddvorak.xkb

    To note, all I did was change around what letters/symbols were where in the file. None of the functional parts were changed at all because I have no idea how they work.

  152. james Says:

    jerith: so instead of being restricted to X, we get restricted to Linux? That’s a much better.

  153. Kyzentun Says:

    james: I think what jerith meant as the advantage of not being restricted to X is that it also works for VTs, for whenever you need to use a VT (I have some uses, including a machine that doesn’t have X, I’m sure the rest of you have the occasional use for VTs as well)

  154. millionthmonkey.org » French, Firefox, keyboards and computers Says:

    [...] was created by xkcd creator Randall Munroe, and enables one-handed typing; it’s called the Mirrorboard, and can be installed on Linux machines only (that’s not me, so I can’t vouch for it, [...]

  155. Craig Says:

    I’m lazy enough to want to keep my hand on the mouse most of the time, but can type pretty well across the keyboard with one hand… I always thought tho if the mouse had three extra buttons (that acted like shift, enter and backspace) that would minimise the distance my poor left hand had to move to post stuff quickly :)

  156. Kathryn Says:

    The mirror board is an interesting layout, certainly one that saves on learning time. I agree with other posts here, spacebar would be a better choice for a modifier key and it is what most hardware one-handed keyboards use. I think for the most part if I was doing anything that required fast typing, I’d probably just put both hands down on the keyboard.

    The Dvorak one-handed layouts are easier to use for people who use the two-handed layouts (the layout is very similar), and the left and right versions are basically mirror copies of each other except for a few characters. In terms of the two handed layouts, there actually isn’t that much difference between Dvorak and Qwerty in terms of time, it’s more to do with how far your fingers have to move across the keyboard. (See http://www.cs.waikato.ac.nz/~kah18/files/KeyboardDebate.pdf ) So perhaps we can say the mirrorboard will be as fast as the Dvorak one-handed layouts, but tires your fingers a little more.

  157. james Says:

    Kyzentum: yes, i did get that, but still, more Unix and Unix-like desktop users run X than run Linux. I mean I could probably get something working with wscons too but that would have less application than doing it with X.

  158. Heiner Says:

    I edited that for a German QWERTZ keyboard, redefining only the left half of it and using that otherwise useless LWIN (= Microsoft Logo, or Tux in my case) key instead of CAPS.
    Also, that version should be used by copying the file to /usr/share/X11/xkb/symbols and setting `mirrorboard’ as a symbol with setxkbmap.

    Example: $ setxkbmap -v 10 -model acer_tm_800 -layout de -variant nodeadkeys -symbols “pc(pc105)+de(nodeadkeys)+inet(acer_tm_800)+altwin(alt_super_win)+mirrorboard”

    There may be better places to put that file, I don’t know.

    http://www.math.tu-dresden.de/~kuettler/mirrorboard

  159. Helio Says:

    It’s great, but it has a small problem when typing in Spanish and you need a orthographic accent (á, é, í, ó and ú) and I don’t seem to find both questionmarks (¿ and ?).

    I’m talking about Zach’s program.

  160. Jenny Says:

    zach, three ideas. one, you oughtta have it source the text document in the same folder as the main program, so for instance, if you put the program in c:/folder/, the text document should also be put there. this is easily possible, but i dont remember exactly how. if you dont know, ill try and find it. second, if you could add a key combo like alt+space to skip to the next possibility in the dictionary. so for example, when you type “cww” now, it types “cow,” but if you pressed alt+space, it would change to “moo,” which uses the same letters. finally, you should rather than making it all lower case unless after a period in which case capitalize the first letter, it should retain the case that the word was typed in.

  161. Tony Says:

    Awesome.

    If someone could post a way to do this in windows,
    (I don’t remember reading about a link above)
    I’d love to give it a try.

    So I can hold a book or coffee while typing,
    if nothing else at all.

  162. Julia Says:

    Cool! How about a left-handed one?

  163. Jenny Says:

    Julia, this is designed only for a left handed one, and the link for zach’s site is http://cec.wustl.edu/~zgf1

    zach, i thought of how to make it work for right handed work to. first convert all right side letters into left side letters then convert the left side letters into the possible combinations. also, the variable for current directory is A_ScriptDir it comes without a slash after it of course, so you need to add that. i tried allowing for people to choose the second or third entry in the dictionary, but found too much difficulty

  164. Zach Says:

    Jenny: 1. The current directory thing for the dictionary isn’t a bad idea, perhaps I’ll make that change this weekend (or if i can find time before then)

    2. The choice of dictionary entries is definitely a problem, I tried working out the kinks in that when I was first creating the script but found it a tad difficult (again maybe I will look at it when I have time this weekend).

    3. The capitalization is actually a self correcting capitalization, by which I mean it works after periods and if the word is capitalized in the dictionary. I found that much easier than keeping track of which letters were capitals and which weren’t. Of course this isn’t optimal for casual conversation it works great for people like me who don’t hit shift enough when writing a paper.

    Any other suggestions would be great. I’ll take a look at this comment list again before I start “work”

  165. Zach Says:

    haha and I screwed up my website on the previous post (so doesn’t really matter but click on this one if you want to go to my site)

  166. Nick Says:

    Better option in my opinion:

    Test out Dasher. It’s, without doubt, the best mouse-input text-entry system I’ve ever come across. The group developing it is also working with some cool optical-entry schemes and the like. After a short learning curve (it only took me, oh, 5-10 minutes to get to fluent text entry at its highest speed), you can really get going on it.

    http://www.inference.phy.cam.ac.uk/dasher/

  167. Jenny Says:

    Actually, Zach, I just thought that you ought to only make it capitalize proper nouns. Any time people want to have capital letters after periods, they will probably use a program which will fix that for them. It is probably more worthwhile to leave the capitalization the same.

    Btw, I typed this with Dasher. It is a very interesting idea, and is enjoyable to try at least once, but it is probably not worth it to type like this all the time. As you can assume, I have found it to be a bit slow. Also, it opens in a new window, so you have to click on copy all, switch to the window you want to type in, and click paste to actually enter the text. I have only just started, so I am not very fast yet, but this is my preliminary evaluation.

  168. lesliesage Says:

    I’ve a friend with only one hand. She’s amazingly fast on a normal keyboard, but I always thought your plan would work better.

  169. Vincent Says:

    I wanted to test this fantastic script with my french azerty keyboard, so I modified it in order to make it work ! There are probably some mistakes, but all mappings are fine ! Thanks XKCD for this idea !

  170. Vincent Says:

    Ooops, the link is here : http://www.cplv.net/~ryo/share/mirrorboard-fr.xkb !

  171. Kuzutetsu Says:

    Yet another mirrorboard

    Here is a little modification of XKCD’s mirrorboard, for french azerty keyboards. It works pretty well, except for the cedilla, which I could not map (bad code or something)… By the way I think it can greatly be improved….

  172. Anglave Says:

    I was immediately captivated by the OP. Saddened that it would not work on Windows, I even considered installing a Linux distro so that I could try it.

    Thank you to everyone who helped (is helping) make this happen. Especially Zach. You are a wizzard, and you’ve made my wish for today come true.

    I was just starting to read through all of these posts when I thought to myself “Wow, using ‘MOUSE3′ as the modifier key would be tons better than using any of the keys on the keyboard.” And I see that you’ve anticipated that wish as well.

    And you’ve made serious progress towards a usable adaptive dictionary too. I’m impressed. I was even going to complain about (Zach’s) mirrorboard not maintaining the capitalization state of the letters that I’m typing (as I am a compulsive capitalizer) but It Seems To Be Doing That As Well. (Yes, I’m typing this using his script. Slow but easier than constant hand-swapping).

    Incidentally, does anyone know the (English) word for “Capitalization State”?

    Thanks

  173. coke_rocks Says:

    #!/usr/bin/perl -w
    use strict;my(%r,$q);local$/;for(split(/\n/,)){$q=$_;tr/poiuyt`lkjhg.,mnb/qwertasdfgzxcv/;(defined$_{$_})&&($r{$q}=1);$_{$_}=1;}print join(”\n”,keys%r).”\n”;
    This answers the question “what words are ambiguous with regard to the caps-lock key”. 166 characters; can anyone do better? Run it like “./foo.pl

  174. Gigs Says:

    The blackberry Pearl uses just such a predictive system to “overload” qwerty onto half as many keys without anything like shift or double tapping to get at the alternate letters.

    It’s surprisingly easy to get used to.

  175. Mad Says:

    Thanks Zach! You are wonderful! This is incredibly useful

  176. Fal Says:

    I made a finnish edition of this ;)

    If there are any finns wanting to try it out, keep some noise here and I’ll publish it somewhere so you can get it :) It’s almost suitable for swedes too. Just need to find a good place for Ã¥ :|

  177. Possum Says:

    Sorry to reply to such an old comment, but…

    Is it possible to make it so that instead of pressing Caps + Key you press Caps then key?

    If you change the line that sets CAPS to be the modifier key, look for the part that says “ISO_Level3_Shift” and change it to “ISO_Level3_Latch” (without quotes of course).

    And thanks cthuljew; some of us two-handed dvorak users are lazy too ^-^;;

  178. Possum Says:

    If you change the line that sets CAPS to be the modifier key, look for the part that says “ISO_Level3_Shift” and change it to “ISO_Level3_Latch” (without quotes of course).

    Oh, there are also two interesting/fun side effects to this.

    For one, you can hold CAPS and type, just as if it were set like the original version.

    Also, pressing CAPS twice will lock the keyboard in it’s mirrored position, then just press CAPS twice again to unlock it.

  179. Xyzzy Says:

    Very clever one-handed keybinding. I’d almost certainly give it a dry-run if it wasn’t for HJKL (my brain is so hopelessly vi-hardwired that if I need a DOC file for some reason, I write it in html with vi and import it).

    Sorry to nitpick, but EWWWW, not in front of the children:
    cat file | grep regex
    I think you’d set a more morally upright example with:
    grep regex

  180. Xyzzy Says:

    Doh, post truncated after the less than. You get the idea (that I’m an old unix idiot)

    (In any event) Thanks (for demonstrating that an understanding of humor requires (at least a fundamental) understanding of LISP),
    Bob

  181. Wolvan Says:

    If someone could help me, it would be awesome. I downloaded Superdotman’s mirrorboard for OS X in hopes that I could modify the key bindings in it, but it just has me flustered.

    I don’t need mirrorboard functionality, what I do need is to change the “clear” and “.” button on the numpad to “delete forward” and “,” functions - and that’s it.

    If anyone could help me out it would be greatly appreciated.

  182. Veovis Says:

    I have used Autohotkey for over 2 years and there have been countless scripts posted that can do this (as people before have mentioned.

    @Wolvan:
    if you are on linux just use a xkb
    on windows, download autohotkey. the code would be something like this (if i understand you correctly)
    numpadclear::delete
    .::,

  183. left-handed typing « Angel Says:

    [...] left-handed typing http://blag.xkcd.com/2007/08/14/mirrorboard-a-one-handed-keyboard-layout-for-the-lazy/ [...]

  184. Zach Says:

    I am not sure if anyone will check this since it has been a while, but I finally had time to improve the dictionary check for typing so that if you want to move on to the next word in the dictionary that matches your input you can hit any “whitespace” key (space, tab, return, etc…) to do this, otherwise just keep typing. As for the other changes, I have not modified where the dictionary needs to be, if anyone really wants that and cannot modify it on their own I can do this modification.

    I have just posted it to my website, if anyone wants it. Any other questions, let me know.

  185. Martin Says:

    For Linux users who are interested in the software solution of deciphering which word was entered on an indeterminate keyboard, there is also uim, the Universal Input Method.

    Originally developed for the input of Japanese, it has been expanded as a general input method framework that can implement many types of problems.

    The problem of the mirrorboard is actually similar to Japanese input, where multiple words are written the same phonetically (homophones). Effectively, an input string may represent several different words. An input method solves this by offering a drop down window with various possibilities when ambiguities arise.

    Thos interested in the software solution would do well to have a look at this: http://code.google.com/p/uim/

  186. Paul Says:

    I’m late to the party, but my solution is somewhat the opposite. I barely use the mouse. learn the keyboard shortcuts in your programs and you won’t have to move your hands off the keyboard very often. for web pages, space bar to scroll down, or the arrows, or page down/up… tab to highlight links, enter to activate (unless there’s a zillion of them, in which case the mouse is easier). in most Windows programs, hold alt and the key letters of your menus will highlight. etc. as I transitioned from DOS to Windows back in the day, the keyboard was still more natural for navigation for me, and I still use it whenever it’s a viable option.

  187. Zach Says: