or, “HELP11 SHIFT IS STUCK ON1″.
If you do not have trouble typing, nor holding down shift while pressing other keys, then you probably don’t need Windows XP’s Accessibility features. If you habitually tap the shift key whilst you consider your next sentence, for example, then you are definitely better off without them.
Tapping shift in this way is the activation shortcut for Stickykeys, which helps one-fingered typists by making the Shift key latch on until the next key is pressed. When you activate Stickykeys, it usually pops up a dialog box asking whether you want to activate it. The problem is, if you say no it still messes with your keyboard state and you seemingly no longer have control over your shift key.
Part one of extricating yourself from this is to get the keyboard in a sensible state again. Pressing and releasing the shift key (try the left first, then the right if that doesn’t work) should get back your normal behaviour.
Part two is to get rid of the shortcut so it doesn’t happen again. Unfortunately there is no button marked “nobody who uses this computer needs special accessibility functions” so we have to turn the features off individually:
Start Control Panel and open Accessibility Options.

Uncheck each of the “Use (something)keys” checkboxes as shown above. Then, to turn off the shortcut, click the first Settings… button to get a second dialog:

Uncheck the “Use Shortcut” box in this dialog and click OK.
Repeat the above step for the other Settings… buttons, then when all three are done, click OK to dismiss the Accessibility Options dialog.
Now you can play drums on your shift keys again, much to the delight of your colleagues.
Turns out it wasn’t safe to suggest I would never implement it.

There’s the C# express edition source there and also an executable. It saves and loads its data in the current directory, so I recommend running it via a shortcut so you can control where it puts its datafile.
It’s clear it needs lots of work if it’s going to start to be interesting. Probably starting with taking an average over more than 100 presses of a given key.
This is an idea that occured to me around about 1992. It’s probably safe to suggest I will never implement it.
By catching all keydown events (importantly, including shift and ctrl), the “flavour” of someone’s typing can be recorded. We have a set of pairs of keys, and the delay between them. These results can be stored in a matrix (a naive illustratoin is below, for having typed “Steve” )

(oops, ignore the excel cursor)
By maintaining an average over the last, say, 1000 keystrokes, we may be able to identify a person’s typing signature. We can summarise this by a textual signature, e.g. extract the 10 letter sequence containing the fastest transition and having the fastest total time of all possible 10-letter sequences containing that transition. The signature of the above would be somethings like Stevevevev, but I can imagine that over time my signature might be “printherer” or might even contain my low-security password!
By maintaining a short-term average and comparing with a database of matrixes (is a Kohonen net useful here?) we should be able to detect when a user’s typing signature has changed. This might not only reflect user but also task. Desktop wallpaper and quick launch bar could be tailored according to the user’s typing pattern. Remembered passwords can be cleared or re-locked if the machine detects a probability that the user has changed.
When did people start “arriving into” stations and “landing into” airports, rather than “at” them?
Is this going to escalate? Will we soon need an “into sign” for use in email addresses?
