Index: ui/events/x/events_x.cc |
diff --git a/ui/events/x/events_x.cc b/ui/events/x/events_x.cc |
index 9bf87c0e24c4e4b2a25aeedddf4d00b1340f4d0e..441aec529b079201084b513750218add7c60b4e3 100644 |
--- a/ui/events/x/events_x.cc |
+++ b/ui/events/x/events_x.cc |
@@ -191,6 +191,9 @@ |
return GetEventFlagsFromXState(xevent->xkey.state) | |
(xevent->xkey.send_event ? ui::EF_FINAL : 0) | |
+ (IsKeypadKey(XLookupKeysym(&xevent->xkey, 0)) ? ui::EF_NUMPAD_KEY : 0) | |
+ (IsFunctionKey(XLookupKeysym(&xevent->xkey, 0)) ? |
+ ui::EF_FUNCTION_KEY : 0) | |
ime_fabricated_flag; |
} |
@@ -200,7 +203,11 @@ |
DCHECK((xievent->evtype == XI_KeyPress) || |
(xievent->evtype == XI_KeyRelease)); |
return GetEventFlagsFromXState(xievent->mods.effective) | |
- (xevent->xkey.send_event ? ui::EF_FINAL : 0); |
+ (xevent->xkey.send_event ? ui::EF_FINAL : 0) | |
+ (IsKeypadKey( |
+ XkbKeycodeToKeysym(xievent->display, xievent->detail, 0, 0)) |
+ ? ui::EF_NUMPAD_KEY |
+ : 0); |
} |
// Get the event flag for the button in XButtonEvent. During a ButtonPress |
@@ -301,6 +308,7 @@ |
{ui::EF_ALTGR_DOWN, Mod5Mask}, |
{ui::EF_COMMAND_DOWN, Mod4Mask}, |
{ui::EF_MOD3_DOWN, Mod3Mask}, |
+ {ui::EF_NUMPAD_KEY, Mod2Mask}, |
{ui::EF_LEFT_MOUSE_BUTTON, Button1Mask}, |
{ui::EF_MIDDLE_MOUSE_BUTTON, Button2Mask}, |
{ui::EF_RIGHT_MOUSE_BUTTON, Button3Mask}, |