W3C home > Mailing lists > Public > www-dom@w3.org > July to September 2010

Re: [DOM3Events] keyCode and charCode [ISSUE-133]

From: Doug Schepers <schepers@w3.org>
Date: Thu, 16 Sep 2010 09:56:14 -0400
Message-ID: <4C9221FE.8040601@w3.org>
To: Boris Zbarsky <bzbarsky@MIT.EDU>
CC: Simon Pieters <simonp@opera.com>, www-dom@w3.org
Hi, Folks-

Boris Zbarsky wrote (on 9/16/10 3:43 AM):
> On 9/16/10 12:19 AM, Simon Pieters wrote:
>> Please specify keyCode and charCode, even if marked as 'obsolete'.
>
> Agreed. These do need to be specified, for web compat.
>
>> I'm pretty sure no browser is going to ship without at least one of
>> them. (I
>> notice that charCode is undefined in Opera, keyCode always returns 0 in
>> Firefox, and in WebKit they both work.)
>
> keyCode works fine in Firefox with US keyboard layouts. Other keyboard
> layouts may not work, though.

After talking with many people, including browser vendors and the i18n 
WG, and doing a good bit of research, and considering the real-world use 
of keyCode and charCode, we came to the conclusion that it would be very 
difficult (if possible at all) to specify keyCode and charCode in a way 
that would be consistent across browsers, or even the same browser on 
different platforms.

Browsers have had 15 years to get this right, and despite its 
importance, they haven't been able to.  Not one browser we tested was 
consistent across platforms and keyboard layouts.  Opera doesn't even 
really try.  Every DOM Events specification (and I think some HTML 
specifications) tried to specify the behavior, and failed; in fact, 
keyboard events were the very reason this spec was parked as a WG Note 
for 5 years or so (note that this spec has already had the longest 
development time, by far, of any W3C spec... it was started over 10 
years ago [1]).

There is an enormous amount of content out there that relies on the 
current behavior, quirks and all, and I would be very concerned about 
breaking it by specifying keyCode and charCode in more detail than the 
spec already does.  I suspect that browsers would not change their 
behavior to match the spec, or would revert when they got enough 
complaints for content authors; then whatever the spec says (beyond 
"these features are obsolete, use the replacements") would be misleading 
to content authors and implementers.

By contrast, the new .key and .char properties stand a very good chance 
of being implemented interoperably between browsers across different 
platforms and keyboard layouts, and should be easier for content authors 
to use because they give more meaningful values, and account for keys 
that .keyCode and .charCode don't.


I won't object to including more detailed keyCode and charCode 
definitions in the DOM3 Events spec, but I don't think I have the time 
or patience to do the work myself.  To do so, only to make the features 
obsolete, seems wasteful, frustrating, possibly harmful, and probably 
misleading.  However, if someone else wants to do that work, and if they 
manage to get it to the point where it is moderately consistent, and 
where browser vendors agree with the behavior and agree to implement it, 
and if they manage to specify it in a way that there are concrete 
testable assertions, and if they do so in a timely manner that doesn't 
slow down the effort to progress DOM3 Events along the Recommendation 
track so that the features it does have are more widely implemented and 
more quickly able to be used by content authors, then I will include 
that wording in the spec.  Please do read what the spec says today about 
them first, as a possible starting point.

As editor of the spec, I don't claim to be the sole author 
(thankfully!), so I welcome contributions... but looking at the history 
of key events over the last 15 years, I have grave concerns that tilting 
at these particular windmills will cause this spec to be fatally 
delayed, and I am skeptical that it would help anyone, other than 
providing a sense of closure on this open wound; stop picking at the 
scab, it will leave a scar.  I think there are far more important things 
we could be doing that would have far greater positive impact for 
everyone involved.  Shipping is a feature, whether you detect it with 
DOM3Events.hasFeature("Shipping") or DOM3Events.shipping.

So, if there is a hearty soul out there who can harpoon this white whale 
before the end of the Last Call period, on 18 October, then I salute 
them.  Otherwise, I would prefer to mark this issue as WONTFIX, so we 
don't have to wait another 10 years for it to be done.

[1] http://www.w3.org/standards/history/DOM-Level-3-Events

Regards-
-Doug Schepers
W3C Team Contact, SVG and WebApps WGs
Received on Thursday, 16 September 2010 13:56:17 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 22 June 2012 06:14:05 GMT