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 48025c436939994b5fe2ebf9186a973182966adb..fa99f495c7d8e245db5b155d139e788b3d48b2f0 100644 |
--- a/ui/events/keycodes/keyboard_code_conversion_x.cc |
+++ b/ui/events/keycodes/keyboard_code_conversion_x.cc |
@@ -19,6 +19,7 @@ |
#include "base/strings/sys_string_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
#include "ui/events/keycodes/dom4/keycode_converter.h" |
+#include "ui/events/keycodes/keyboard_code_conversion_xkb.h" |
#include "ui/events/x/keysym_to_unicode.h" |
#define VKEY_UNSUPPORTED VKEY_UNKNOWN |
@@ -883,7 +884,7 @@ DomCode CodeFromXEvent(const XEvent* xev) { |
return ui::KeycodeConverter::NativeKeycodeToDomCode(keycode); |
} |
-uint16 GetCharacterFromXEvent(const XEvent* xev) { |
+void GetMeaningFromXEvent(const XEvent* xev, DomKey* key, base::char16* ch) { |
XEvent xkeyevent = {0}; |
const XKeyEvent* xkey = NULL; |
if (xev->type == GenericEvent) { |
@@ -896,7 +897,15 @@ uint16 GetCharacterFromXEvent(const XEvent* xev) { |
} |
KeySym keysym = XK_VoidSymbol; |
XLookupString(const_cast<XKeyEvent*>(xkey), NULL, 0, &keysym, NULL); |
- return GetUnicodeCharacterFromXKeySym(keysym); |
+ *ch = GetUnicodeCharacterFromXKeySym(keysym); |
+ *key = XkbKeySymToDomKey(keysym, *ch); |
+} |
+ |
+uint16 GetCharacterFromXEvent(const XEvent* xev) { |
+ base::char16 ch; |
+ DomKey key; |
+ GetMeaningFromXEvent(xev, &key, &ch); |
+ return ch; |
} |
KeyboardCode DefaultKeyboardCodeFromHardwareKeycode( |