Title: [134982] trunk/Tools
- Revision
- 134982
- Author
- bfulg...@webkit.org
- Date
- 2012-11-16 12:19:08 -0800 (Fri, 16 Nov 2012)
Log Message
[Win] key event's location does not work on Windows platform.
https://bugs.webkit.org/show_bug.cgi?id=89742
Patch by Takashi Sakamoto <ta...@google.com> on 2012-11-15
Reviewed by Brent Fulgham.
Modified keyDownCallback to use lparam to specify left-hand keys or
right-hand keys.
* DumpRenderTree/win/EventSender.cpp:
(makeKeyDataForScanCode):
Given a virtual keycode, generate scancode and extended key bit of
lparam.
(keyDownCallback):
Use lparam for left-hand and right-hand keys, because Windows doesn't
directly provide a virtual keycode which distinguishes between
left-hand and right-hand. For example, when control key is pressed,
wparam has VK_CONTROL, neither VK_RCONTROL nor VK_LCONTROL.
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (134981 => 134982)
--- trunk/Tools/ChangeLog 2012-11-16 20:18:04 UTC (rev 134981)
+++ trunk/Tools/ChangeLog 2012-11-16 20:19:08 UTC (rev 134982)
@@ -1,3 +1,23 @@
+2012-11-15 Takashi Sakamoto <ta...@google.com>
+
+ [Win] key event's location does not work on Windows platform.
+ https://bugs.webkit.org/show_bug.cgi?id=89742
+
+ Reviewed by Brent Fulgham.
+
+ Modified keyDownCallback to use lparam to specify left-hand keys or
+ right-hand keys.
+
+ * DumpRenderTree/win/EventSender.cpp:
+ (makeKeyDataForScanCode):
+ Given a virtual keycode, generate scancode and extended key bit of
+ lparam.
+ (keyDownCallback):
+ Use lparam for left-hand and right-hand keys, because Windows doesn't
+ directly provide a virtual keycode which distinguishes between
+ left-hand and right-hand. For example, when control key is pressed,
+ wparam has VK_CONTROL, neither VK_RCONTROL nor VK_LCONTROL.
+
2012-11-16 Tommy Widenflycht <tom...@google.com>
[chromium] MediaStream API: Add missing WebRTCPeerConnectionHandlerClient::didAddRemoteDataChannel
Modified: trunk/Tools/DumpRenderTree/win/EventSender.cpp (134981 => 134982)
--- trunk/Tools/DumpRenderTree/win/EventSender.cpp 2012-11-16 20:18:04 UTC (rev 134981)
+++ trunk/Tools/DumpRenderTree/win/EventSender.cpp 2012-11-16 20:19:08 UTC (rev 134982)
@@ -45,6 +45,9 @@
#include <wtf/text/WTFString.h>
#define WM_DRT_SEND_QUEUED_EVENT (WM_APP+1)
+#ifndef MAPVK_VK_TO_VSC
+#define MAPVK_VK_TO_VSC 0
+#endif
static bool down;
static bool dragMode = true;
@@ -434,6 +437,16 @@
replayingSavedEvents = false;
}
+static int makeKeyDataForScanCode(int virtualKeyCode)
+{
+ unsigned scancode = MapVirtualKey(virtualKeyCode, MAPVK_VK_TO_VSC);
+ int keyData = scancode & 0xFF;
+ scancode = scancode >> 8;
+ if (scancode == 0xe0 || scancode == 0xe1)
+ keyData += KF_EXTENDED;
+ return keyData << 16;
+}
+
static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
@@ -479,19 +492,25 @@
virtualKeyCode = VK_SNAPSHOT;
else if (JSStringIsEqualToUTF8CString(character, "menu"))
virtualKeyCode = VK_APPS;
- else if (JSStringIsEqualToUTF8CString(character, "leftControl"))
- virtualKeyCode = VK_LCONTROL;
- else if (JSStringIsEqualToUTF8CString(character, "leftShift"))
- virtualKeyCode = VK_LSHIFT;
- else if (JSStringIsEqualToUTF8CString(character, "leftAlt"))
- virtualKeyCode = VK_LMENU;
- else if (JSStringIsEqualToUTF8CString(character, "rightControl"))
- virtualKeyCode = VK_RCONTROL;
- else if (JSStringIsEqualToUTF8CString(character, "rightShift"))
- virtualKeyCode = VK_RSHIFT;
- else if (JSStringIsEqualToUTF8CString(character, "rightAlt"))
- virtualKeyCode = VK_RMENU;
- else {
+ else if (JSStringIsEqualToUTF8CString(character, "leftControl")) {
+ virtualKeyCode = VK_CONTROL;
+ keyData += makeKeyDataForScanCode(VK_LCONTROL);
+ } else if (JSStringIsEqualToUTF8CString(character, "leftShift")) {
+ virtualKeyCode = VK_SHIFT;
+ keyData += makeKeyDataForScanCode(VK_LSHIFT);
+ } else if (JSStringIsEqualToUTF8CString(character, "leftAlt")) {
+ virtualKeyCode = VK_MENU;
+ keyData += makeKeyDataForScanCode(VK_LMENU);
+ } else if (JSStringIsEqualToUTF8CString(character, "rightControl")) {
+ virtualKeyCode = VK_CONTROL;
+ keyData += makeKeyDataForScanCode(VK_RCONTROL);
+ } else if (JSStringIsEqualToUTF8CString(character, "rightShift")) {
+ virtualKeyCode = VK_SHIFT;
+ keyData += makeKeyDataForScanCode(VK_RSHIFT);
+ } else if (JSStringIsEqualToUTF8CString(character, "rightAlt")) {
+ virtualKeyCode = VK_MENU;
+ keyData += makeKeyDataForScanCode(VK_RMENU);
+ } else {
charCode = JSStringGetCharactersPtr(character)[0];
virtualKeyCode = LOBYTE(VkKeyScan(charCode));
if (WTF::isASCIIUpper(charCode))
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes