A while ago, I was playing about with my flatmate's shiny new eeePC. Impressive, I thought, but the keyboard's a bit of a fiddle - the keys are just a bit too small for my fingers (which are neither fat nor stumpy). Plus, the machine seems practically custom-designed to be balanced on one hand and operated with the other, and typing on a proper keyboard with only one hand is nothing short of an offence against all that is Good and Righteous. Surely there's a better method for one-handed text input onto such a small device?
Well, yes there is, as it happens. I'm talking about
chording keyboards. In a normal keyboard, each key stands for one character, and your fingers move about from key to key; in a chording keyboard, your fingers stay fixed, and you indicate different characters by pressing combinations of keys. It's a generalised version of what the shift key does. Chording keyboards apparently take some getting used to, but allow for very high-speed and natural text input. Here's
Stephen Fry talking about the chording keyboard on an early PDA:
My obsession with SmartPhones began many, many years ago. Certainly well before such devices existed in the real world. From the first Sharp contact-and-calendar “electronic organisers” , through the early Psions, the sadly missed AgendA (see above: no QWERTY there, more a kind of weird courtroom stenographer’s chord-based input pad: never have I been able to write faster than with that splendid object - I had another device using the same input system called, I think, Qinky, which connected to the Centronix port of a BBC Micro), to the opening salvo of Palm Pilots, Apple’s Newton and the arrival of Handspring. If they existed I had to have them. Had to.
[The rest of the article's well worth reading. And I see Stephen Fry now
has an eee, too...]
Now, hardware chording keyboards still exist, and some of them speak USB: there's a problem, however, in that all the ones I can find are ridiculously expensive. Like, several hundred pounds. There are instructions for making your own online, but my soldering iron's in Oxford and I'd clearly never get round to it anyway. But then it struck me - we've got a perfectly good set of buttons sitting there on the machine already, we don't need any extra hardware! Have the keys H, J, K, L and Space work as a chording keyboard - that's (2^5 - 1) = 31, combinations, which is enough for the English alphabet plus, say, ",", ".", space, "?", and "'". We could deal with capital letters in the way that text-messaging software does, by making the combination ". " put the next character into upper-case, and possibly by making Shift sticky. We can just have the remaining keys self-insert as normal, so we don't have to do anything very cunning about characters that aren't in the subset represented by chords - I probably type the { key a lot more than most people, but I don't think I'd mind switching to one-fingered typing for that. I wasn't really thinking of this as an input method for heavy coding, anyway. The obvious encoding system to use would be
Baudot, or something based on it, but I'm open to suggestions.
All fine in theory; but how would I go about writing such a thing? Or does one exist already? I had a brief look, but given all the different meanings of "chord", I didn't see anything very promising. I'd thought about writing an Emacs minor mode to handle the chording, but (a) I don't know my way round the Emacs codebase, (b) I don't actually use Emacs (and does it even run on the eee?), and (c) it seems like the Right Thing would be to use XIM (X Input Methods). Unfortunately, XIM documentation appears to be... well,
have a look for yourself. And the thought of writing low-level X code in C fills me with fear and loathing - OK, OK, I'm a wuss who's been spoiled by high-level languages.
Does anyone have any advice? And does anyone fancy doing it for me joining in?