hyatt at apple.com
Wed Mar 28 16:06:43 PDT 2007
A couple of things to note here. ToT is not the same as Safari 2, so
keep that in mind.
event.keyCode is set to the Windows key code for keydown and keyup.
This means you should have consistency now across WebKit impls for
event.keyCode assuming everyone has implemented WindowsKeyCode
properly. For example on Mac if you alert for the down arrow key you
get 4040 in a keydown/keyup.
For keypress, event.keyCode is equivalent to event.charCode. The
char code is obtained by getting the first character of the key
event's "text" and returning that. This text is initialized in
platform/mac/KeyEventMac to be the raw characters of the event
according to the platform. In the case of down arrow for example,
this means you'll get 62323.
Note that the Web API WG has taken over DOM Level 3 Events in order
to better specify key events. You can find that spec here:
keyCode/charCode are basically being scrapped in favor of
keyIdentifier (implemented in ToT!), and - I believe - this system is
designed to yield consistent results across platforms.
(hyatt at apple.com)
On Mar 28, 2007, at 3:43 PM, Adam Treat wrote:
> Currently the keycodes returned by the various platforms under
> WebKit are
> nowhere near close to uniform. This seems like something that
> should be
> standard across all platforms that WebKit provides. It is unclear
> to me
> exactly how the keycodes are generated by the different platforms...
> In platform/qt/PlatformKeyboardEventQt.cpp the following snippet of
> code seems
> to handle the return code for the up arrow key:
> case Qt::Key_Up:
> return VK_UP; // (26) UP ARROW key
> The equivalent code for the mac would seem to be in
> // VK_UP (26) UP ARROW key
> case NSUpArrowFunctionKey: return 0x26;
> The actual behavior under Safari seems to be to return '63232'
> I am not at all aware how this happens.
> this page.
> If we can't fix this as a standard across browsers, surely this
> could be fixed
> across platforms that WebKit provides, no?
> PS Any clue as to where Safari turns that code into '63232' would
> be much
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
More information about the webkit-dev