It just occurred to me that the typing experience on modern computers is worse than it should be. No, I’m not just talking about how awful blind typing on a virtual keyboard is, but rather about all sorts of design decisions that have been made in the past regarding how typing should work in desktop OSs, which may not make so much sense any more today as is highlighted by the decision from some recent OS designs to take a different path. Please read and have your say !

On the tragic story of QWERTY layouts

As an appetizer, let’s start with a textbook example of suboptimal computer keyboard design decision that could not be easily undone today : the QWERTY keyboard layout, and its regional variations (AZERTY, etc…). You may not know it, but the way keys are mapped on computer keyboard, a design decision which dates back from the dark ages of mechanical typewriters, was actually thought out so as to make people type slowly, in a manner that is as inefficient as possible. To achieve this, frequently used keys like the “e” vowel are put far away from the finger’s rest positions, the left hand has more work to do than the right one, and fingers and wrist frequently need to be moved in uncomfortable positions when typing common words.

Why, you may wonder, did sane engineers explicitly design a product with inefficiency as a stated goal ? Was it a failed attempt at selling an updated or “pro” version that wouldn’t have these flaws for a higher price ? Actually, no. It turns out that mechanical typewriters, which these keyboard layouts were designed for, had a fairly annoying tendency to jam if one typed to quickly and inadvertently let moving mechanical parts hit each other. Making sure that people typed more slowly was way cheaper than designing a better-performing mechanism, and so it is what engineers did. Then, as electronic typewriters and computers made their appearance, engineers which designed those reused the mechanical typewriter layout so that users of the latter are more productive with the former, and so the QWERTY abomination continued to exist on new and improved machines that did not require its use.

As I mentioned earlier, though, I think that QWERTY is one of those things that fall in the “too late to fix” category. People have been used to it for too long, all computers with a physical keyboard are specifically designed for this layout, and if we were to change it now, it would only result in pain and incomprehension from users. The introduction of microcomputers or touchscreen devices, as an example, would have been occasions to introduce changes in this area (“It is a different device, so it should behave differently”), but we didn’t and now it’s too late.

Press any key to leave a useless trail of identical letters

Things do not always work this depressing way though. One example of a perfectible design decision that has been properly fixed in new devices is the way computer keyboards behave when a key is pressed. Historically, when someone did so, it would simply result in an endless stream of identical characters to be received by the computer, something which users want to do so rarely that when they do, it be done by pressing the same key multiple times without significant usability losses (and with the added satisfaction of mashing keyboard keys). Modern cellphones and tablets, on the other hand, do it differently.

On most of those, if you hold a key pressed, a menu will appear on the screen. On this menu, you can select extra characters which are related to the one which is currently requested. As an example, if you hold the “E” key pressed on my Android-powered cellphone’s keyboard, you will be provided with the option to type the letters è, é, ê, ë, ę, and ě. And even if English speakers, who do not use diacritical marks and special characters that wouldn’t fit on a 42-key cellphone keyboard, may not be aware of it, such a feature is pure gold for those who do.

This leads me to ask : why shouldn’t desktop operating systems also manage typing this way ? After all, we don’t spend our days typing streams of identical characters, and ever since the popularization of Unicode, OSes have acknowledged that there are people in this world who need more characters to type than those available on a 104-key IBM-compatible keyboard. If cellphones could do it, why wouldn’t desktops do it to, and save non-English speakers the hurdle of hunting common characters through the depths of an endless map ?

When virtual keyboards mean virtual typing efficiency

Mobile devices seem to be under the influence of some kind of curse : as far as memory serves, they have always featured the worst means of text input ever designed by man. First they tried to use 12-keys phone keypads as a keyboard, then they were victim of the world’s first rubbish auto-correction feature with the “T9” system, then they featured the first full QWERTY keyboards that are incompatible with fat fingers, and now they have went even deeper and “freed” those tiny keyboards from the haptic feedback that kept them a little bit precise at their small size, resulting in the introduction of the world’s most imprecise text input method to depth. And then, as history repeats itself, they tried once again to fix it through annoying auto-correction. ‘Cause everyone loves it when the computer pretends to know what they are typing better than them.

To be fair, though, it’s not easy to replicate the functionality of a large keyboard on a tiny keypad, no matter how you put it, and there is a reason why I stop at 7″ tablets in my target hardware specifications. But still, one has to wonder if virtual keyboard are really as good as they will ever get, and this is where I have to give credit to Microsoft for trying to push that technology forward in their upcoming Windows 8 product. For a short summary, here’s what they are going to do :

  • When a user types between two keys, finally put that quirky auto-correction feature to some good use and use it along with a model of touchscreen usage to determine which key is most likely to have been targeted by the user.
  • Keep virtual keyboard functionality beyond typing to a minimum. Touchscreen manipulation is less precise than physical button manipulation since there is no feeling of depth to rely on, so the larger the keys the better. If people want more power, they can well buy a full physical bluetooth keyboard.
  • DO NOT apply autocorrection when fingers have flawlessly targeted one specific key, do not force it onto users, and do not require large hand motion to use it either (instead using a dedicated “Insert” key on the virtual keyboard)

I found this to be a very reasonable set of improvements to the virtual keyboard usage experience, and if they have not put heaps of patents on it, I would be glad to offer it to my future touchscreen users too.

And… here’s my part

Now, so far, I have mostly been reviewing improvements to the typing experience that have been recently introduced for mobile devices but would make sense, in my opinion, for every personal computing device out there. However, such a review would not be complete without an additional contribution from my part. So here goes.

My proposal is not so much about how we type, which has already been covered in much details, but rather about how we use readily-available physical keyboards on computers beyond typing use cases. Today, can have as much as 4 function keys which are dedicated to keyboard shortcuts : Ctrl, Fn (for laptop controls), Super (aka Windows flag or Mac’s Cmd key), and Alt. Here is how they are used on various OSs :

  • Windows : Super is used for system controls, Ctrl is used for application controls, Alt is used for everything, Maj can also be used in combination with those.
  • Linux : Similar to Windows, but with less Super and Ctrl-based system controls. Alt is also used for moving windows around.
  • Mac OS X : Cmd for nearly everything, in combination with other keys as needed.

As can be seen, there is not really any kind of consensus as for what should be done with these keys. One consequence, which I see as harmful, is that there is no way to know if a specific keystroke is bound to system functionality (and thus, can be trusted to work in a consistent fashion all the time) or to application-specific functionality (which can present application-specific specificities). Therefore, to keep things as familiar to existing users as possible, I would suggest to use the following, more consistent convention :

  • Ctrl and Alt are used for application-specific controls, plus system functionality which is managed in an application-specific way such as clipboard.
  • Super is exclusively used for system functionality, and all system keyboard shortcuts (kill task, switch task, show desktop, perhaps even log in in security-conscious environments…) go through it. Applications need special security permissions to even probe Super-based keystrokes, let alone handle them.
  • Fn keys are likely nonstandard among hardware manufacturers, so better leave them alone.

There ! Hope that you have enjoyed this small article, and have a nice week-end !


One thought on “Typing

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s