Re: specification of "legacy" key events

On Thu, 08 May 2008 03:22:08 +0200, Olli Pettay <Olli.Pettay@helsinki.fi>  
wrote:

>>> Why not? IME could emulate normal keydown/keypress/keyup.
>>
>> For legacy content compatibility. IMEs that process key input do not
>> currently cause keypress events to fire, and I believe changing this
>> would break legacy content for IME users. (I'm fairly sure this point
>> has been raised by implementors and I could try to find the relevant
>> E-mails if you need them.)

> Mozilla does dispatch a keypress with IME (at least when testing MS IME
> Standard 2002 ver 8.1 / Hiragana) . So if you know some relevant
> emails, would be great have the links.

Hi,
one E-mail I had in mind was from Oliver Hunt on August 1st 2007 [1],  
where he says:

> * KeyPress and TextInput events are *not* fired if an Input Method has  
> handled the event

but when re-reading the E-mail what Oliver actually said is a bit more  
complex than I managed to capture in the proposed spec.

The most important point is that the keyCode of any keydown and keypress  
event must be 229 if an IME is processing the input. Apart from that there  
is some inconsistency -

Firefox fires keydown and keypress for the *first* character - the one  
that initiates IME processing. Then it fires no keydown/press/up events  
until character conversion is confirmed in the IME (for Japanese IME this  
is done by pressing enter and Firefox fires a keyUp for the enter key).

On the other hand, MSIE fires keydown and keyup events - keydown has code  
229 and keyup has the virtual key code normally associated with the given  
key.

Safari behaves like IE.

Opera seems to fire an initial keydown and no more events - nearly what  
Firefox does but without the keypress.

IMHO, there is no strong use case for firing events while IME is  
processing - AFAIK there is nothing the web app can do about the input  
except confuse itself. Unless someone brings up use cases or content that  
depends on what Safari&IE do I'd suggest we specify something along the  
lines of what Firefox&Opera do. To be specific, a keydown and a keypress  
with codes 229 initally and no events while IME is handling input.  
Inserting the text might cause a keyup for enter (if that IME uses enter  
to confirm input) and must cause a textInput event.

[1] http://lists.w3.org/Archives/Public/public-webapi/2007Aug/0007.html

-- 
Hallvord R. M. Steen
Core QA JavaScript tester, Opera Software
http://www.opera.com/
Opera - simply the best Internet experience

Received on Thursday, 8 May 2008 09:14:48 UTC