[Webkit-unassigned] [Bug 89742] [Win] key event's location does not work on Windows platform.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Sep 3 02:23:51 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=89742





--- Comment #6 from Takashi Sakamoto <tasak at google.com>  2012-09-03 02:24:01 PST ---
(From update of attachment 149232)
View in context: https://bugs.webkit.org/attachment.cgi?id=149232&action=review

Thank you for reviewing.

>> Source/WebKit/chromium/ChangeLog:10
>> +        keys. So modified keybordEvent to see a scancode and an extended key
> 
> You mean in wParam? It's inaccurate to say those window messages don't supply key code that distinguishes left and right keys because they DO in lParam.

Yes, I mean wParam. I know lParam has extended key bit. However, it is not A VIRTUAL KEYCODE. We have to re-create a new virtual keycode by using the given scancode, extended key bit, and virtual keycode. So I wrote "So modified keybordEvent to see a scancode and an extended key bit in lParam to distinguish."

>> Source/WebKit/chromium/ChangeLog:14
>> +        (WebKit::windowsKeycodeWithLocation):
> 
> This code seems port neutral. Why does it have to be in chromium directory? What do other ports do?

I think, this code is very windows-specific. As far as I know, Linux+GTK uses XKeyEvent and it contains a key symbol which distinguishes between left- and right-hand keys (e.g. keysym 0xffe1, Shift_L or keysym 0xffe2, Shift_R).
(I read chromium/src/content/browser/renderer_host/native_web_keyboard_event_gtk.cc)

>> Source/WebKit/chromium/src/win/WebInputEventFactory.cpp:99
>> +static int windowsKeycodeWithLocation(WPARAM wparam, LPARAM lParam)
> 
> Why is "param" in lParam capitalized?
> It appears that the convention is not to capitalize it.

Done.

>> Source/WebKit/chromium/src/win/WebInputEventFactory.cpp:118
>> +
> 
> Where is the closing } ??

I'm sorry. I have just prepared windows development environment. (So I was planning to see WebKit bot's result.) Now I can build and do tests in Windows. I tested my new patch.

>> Source/WebKit/chromium/src/win/WebInputEventFactory.cpp:123
>> +    int virtualKeycode = ::MapVirtualKey(scancode, MAPVK_VSC_TO_VK_EX);
> 
> I have a lot of difficulty understanding this comment, and how it relates to the code below.

I rewrote the comment and moved the comment before "if ((lParam >> 16) & KF_EXTENDED)". I mean, for example, the code always returns VK_RCONTROL in the case where the given lparam's extended key bit is set and the wparam is VK_CONTROL. However, it might be better to use MapVirtualKey to recreate a new virtual keycode. I think, the conversion should be done by Windows API.

>> Source/WebKit/chromium/src/win/WebInputEventFactory.cpp:124
>> +    return virtualKeyCode ? virtualKeyCode : keycode;
> 
> For which virtual key code is this code used?

Done.

>> Tools/DumpRenderTree/win/EventSender.cpp:486
>> +        keyData += 0x1d << 16; // Left control's scancode
> 
> Why are we not calling MapVirtualKey with MAPVK_VK_TO_VSC?

Done.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list