Index: ui/events/keycodes/keyboard_code_conversion_x.cc |
diff --git a/ui/events/keycodes/keyboard_code_conversion_x.cc b/ui/events/keycodes/keyboard_code_conversion_x.cc |
index b21164e63385deb322baed849fc9eb807cbe4735..dea3899fe278b57cb6cd8d2be9417f87eaf33b17 100644 |
--- a/ui/events/keycodes/keyboard_code_conversion_x.cc |
+++ b/ui/events/keycodes/keyboard_code_conversion_x.cc |
@@ -14,6 +14,7 @@ |
#include "base/logging.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "ui/events/event_constants.h" |
#include "ui/events/keycodes/dom4/keycode_converter.h" |
namespace ui { |
@@ -426,6 +427,51 @@ KeyboardCode KeyboardCodeFromXKeysym(unsigned int keysym) { |
return VKEY_UNKNOWN; |
} |
+int EventFlagsFromXKeysym(unsigned int keysym) { |
+ static const unsigned int numpad_keysyms[] = { |
sadrul
2014/04/14 21:51:32
Does this need to be static?
kpschoedel
2014/04/14 22:25:45
If it's not static, the compiler is expected to tr
|
+ XK_KP_Delete, |
+ XK_KP_Tab, |
+ XK_KP_Enter, |
+ XK_KP_Begin, |
+ XK_KP_Space, |
+ XK_KP_Home, |
+ XK_KP_End, |
+ XK_KP_Page_Up, // aka XK_KP_Prior |
+ XK_KP_Page_Down, // aka XK_KP_Next |
+ XK_KP_Left, |
+ XK_KP_Right, |
+ XK_KP_Down, |
+ XK_KP_Up, |
+ XK_KP_0, |
+ XK_KP_1, |
+ XK_KP_2, |
+ XK_KP_3, |
+ XK_KP_4, |
+ XK_KP_5, |
+ XK_KP_6, |
+ XK_KP_7, |
+ XK_KP_8, |
+ XK_KP_9, |
+ XK_KP_Multiply, |
+ XK_KP_Add, |
+ XK_KP_Separator, |
+ XK_KP_Subtract, |
+ XK_KP_Decimal, |
+ XK_KP_Divide, |
+ XK_KP_Equal, |
+ XK_KP_Insert, |
+ XK_KP_F1, |
+ XK_KP_F2, |
+ XK_KP_F3, |
+ XK_KP_F4, |
+ }; |
+ for (size_t i = 0; i < arraysize(numpad_keysyms); ++i) { |
+ if (numpad_keysyms[i] == keysym) |
+ return EF_NUMPAD; |
sadrul
2014/04/14 21:51:32
There's an IsKeypadKey macro in X11/Xutil.h. Can w
kpschoedel
2014/04/14 22:25:45
Yes, thanks for pointing that out.
|
+ } |
+ return EF_NONE; |
+} |
+ |
const char* CodeFromXEvent(XEvent* xev) { |
return KeycodeConverter::GetInstance()->NativeKeycodeToCode( |
xev->xkey.keycode); |