I'd like to propose a discussion about the handling of the ALT + key 
combination that will hopefully end in a normative requirement.

In observing IE as well as other browsers, there is "good" x-browser 
consistency between the handling of ALT and pressing a modifier key.

While the browsers are mostly consistent, they do so in a way that is not very 
reliable for web developers because key down/key up pairs are often not 
respected (key events get dropped in some scenarios).

I've identified the following scenarios that we can discuss:

Scenarios for ALT handling where the key combination is not a 
'browser-reserved' key:
(Using 'X' which is a non-reserved accelerator key-at least in IE/Firefox3.)


1.       Scenario 1: down ALT, down x, up ALT, up x

2.       Scenario 2: down ALT, down x, up x, up ALT

3.       Scenario 4: down ALT, up ALT, down ALT, down x, up ALT, up x

4.       Scenario 5: down ALT, up ALT, down ALT, down x, up x, up ALT

In each of these scenarios, an ALT key up or down event is lost, resulting in 
an inconsistent pairing of down/up events for the web developer.

When handing scenarios for "browser-reserved" accelerator keys, more key events 
are lost (including the simple ALT down/up pair repeated twice). It would be 
nice to specify (perhaps in an appendix) the behavior of browser-reserved 
accelerator key combinations and what should be expected.

To help push the discussion along, I would like to propose two potential ideas 
(one is more drastic than the other):


1.       Create a requirement that browsers emit proper ALT key sequences 
(up/down pairs) to the web page unless focus has shifted out of the web page 
itself-here we would need to try to define where to draw the line of when ALT 
is in focus and when it is not in focus related to browser-reserved accelerator 
actions.

2.       Remove the emission of modifier key (e.g., Shift/Alt/etc.) events from 
the key identifiers set. Thus, pressing ALT (for example) would not emit any 
keyboard events until a corresponding key was pressed. The KeyboardEvent 
interface will continue to support the Boolean modifier key flags so that 
distinctions between a key + a modifier can be made by the web developer, but 
this will cut back and the number of events raised and eliminate the 
out-of-order key event problems (ALT down > key down > ALT up > Key up versus 
ALT down > key down > key up > ALT up). Of course, a side effect is that this 
outcome will also effectively remove the detection of single modifier key 
presses for use in web applications.

Reply via email to