Abstract Events

Some user agents use a click to activate a link. Some however (for instance Amaya; Windows Explorer in some modes) use a click to select (give focus) and a double click to activate. The user wants to activate a link, and does whatever action is needed. The user's intention is an activation, the fact that it is a click that achieves that is incidental.

Intention

By listening for a 'click' event, what is your intention? Are you overriding the 'select' action on UAs that use a double click for activation, or do you really mean that you're listening for an activation? It is clear that there is a lot of confusion in current UAs, because if you tab to a link, and then hit return to activate it, should a 'click' event be generated? Those UAs that think 'click' means activate do generate a 'click', those UAs that think a click is a click do not.

So clearly you shouldn't be listening for a 'click' event, because you don't know what a click means for a UA; you should be listening for an activation event, which works for all UAs.

Bindings

Similarly for all other hardware-oriented events. What we must do is identify all the current bindings from hardware events to intentions, and classify those intentions as events, and throw out the hardware events. That is the only way to achieve interoperability, and ensure that web application behaviour matches that of the underlying UA. The fact that this also gives you accessibility into the bargain is just one of those wonders of life.

Examples

Now, to kick this off, what are examples of intentions?

Click:
Double click:
Return:
Space:
Mouse over:
Tab:

Others

There are also: select text begin/end, and we need to find something for keypress events. Most are 'insert-character' I think, except as noted above.

There are surely others, and we should try to collect as many as possible from other people, so nothing gets forgotten.