Support XI2 in PlatformKeycodeFromNative()

R=sadrul@chromium.org

Review URL: https://codereview.chromium.org/397803007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283931 0039d316-1c4b-4281-b951-d872f2087c98
parent 1b064381
......@@ -579,8 +579,36 @@ const char* CodeFromNative(const base::NativeEvent& native_event) {
}
uint32 PlatformKeycodeFromNative(const base::NativeEvent& native_event) {
KeySym keysym;
XLookupString(&native_event->xkey, NULL, 0, &keysym, NULL);
XKeyEvent* xkey = NULL;
XEvent xkey_from_xi2;
switch (native_event->type) {
case KeyPress:
case KeyRelease:
xkey = &native_event->xkey;
break;
case GenericEvent: {
XIDeviceEvent* xievent =
static_cast<XIDeviceEvent*>(native_event->xcookie.data);
switch (xievent->evtype) {
case XI_KeyPress:
case XI_KeyRelease:
// Build an XKeyEvent corresponding to the XI2 event,
// so that we can call XLookupString on it.
InitXKeyEventFromXIDeviceEvent(*native_event, &xkey_from_xi2);
xkey = &xkey_from_xi2.xkey;
break;
default:
NOTREACHED();
break;
}
}
default:
NOTREACHED();
break;
}
KeySym keysym = XK_VoidSymbol;
if (xkey)
XLookupString(xkey, NULL, 0, &keysym, NULL);
return keysym;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment