Michael's Keyboard Laws for Developers, Part 4

by Michael S. Kaplan, published on 2007/11/21 10:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2007/11/21/6456468.aspx

See also the first law (VK_A is not always 'A'), the second law (Not every keyboard contains every VK_* value), and the third law (Not every keyboard contains every character).

Somehow you knew that there would be another law, didn't you?

Well, I knew. :-)

For what it's worth., this is the first law that I think we can take out of the "it's intuitive" category that the first three really are in....

It is, to put it simply:

Not every individual keystroke is relevant

There are too many cases, from

and so on, where the keystroke does not have a simple 1-1 relationship with an eventual constituent character.

Not intuitive? Yes, just like dead keys are not intuitive, in fact.

Attempting to perform an action every time a keystroke is pressed, whether within a wordwheel type UI or otherwise really won't help since the relationship between that single keystroke and a character can even be non-existent.

Another way to think of this is that WM_KEYDOWN != WM_CHAR -- not every keystroke equals a character.

This particular law has hurt attempts at predictive UI that are too premature for their own good (the wordwheel is just the most vivid example of that problem, what with the wordwheel so often cited as helpful even if it is acting too soon, before you can really predict what the final character(s) will be) and dead keys (where the initial keystroke does not have to be at all related to the character that comes out after the second keystroke happens).

Better to just wait until you have characters, you know? :-)


This post brought to you by(U+1168, a.k.a. HANGUL JUNGSEONG YE)

no comments

referenced by

2012/05/02 Who owns keyboard testing?

2012/04/26 Michael's Keyboard Laws for Developers, Part 5

go to newer or older post, or back to index or month or day