summaryrefslogtreecommitdiffstats
path: root/ui/base/keycodes
diff options
context:
space:
mode:
Diffstat (limited to 'ui/base/keycodes')
-rw-r--r--ui/base/keycodes/keyboard_code_conversion_gtk.cc7
-rw-r--r--ui/base/keycodes/keyboard_code_conversion_x.cc12
-rw-r--r--ui/base/keycodes/keyboard_code_conversion_x.h7
3 files changed, 18 insertions, 8 deletions
diff --git a/ui/base/keycodes/keyboard_code_conversion_gtk.cc b/ui/base/keycodes/keyboard_code_conversion_gtk.cc
index 0eff5aa..7afed4b 100644
--- a/ui/base/keycodes/keyboard_code_conversion_gtk.cc
+++ b/ui/base/keycodes/keyboard_code_conversion_gtk.cc
@@ -39,11 +39,8 @@
#include <gdk/gdkkeysyms.h>
#include "build/build_config.h"
-#include "ui/base/keycodes/keyboard_codes_posix.h"
-
-#ifdef USE_X11
#include "ui/base/keycodes/keyboard_code_conversion_x.h"
-#endif
+#include "ui/base/keycodes/keyboard_codes_posix.h"
namespace ui {
@@ -637,14 +634,12 @@ int GdkNativeKeyCodeForWindowsKeyCode(KeyboardCode keycode, bool shift) {
KeyboardCode KeyboardCodeFromGdkEventKey(GdkEventKey* event) {
KeyboardCode keycode = WindowsKeyCodeForGdkKeyCode(event->keyval);
-#ifdef USE_X11
// Gtk's key values are same as X11's keysyms.
if (keycode == VKEY_UNKNOWN) {
unsigned int keyval =
DefaultXKeysymFromHardwareKeycode(event->hardware_keycode);
keycode = WindowsKeyCodeForGdkKeyCode(keyval);
}
-#endif
return keycode;
}
diff --git a/ui/base/keycodes/keyboard_code_conversion_x.cc b/ui/base/keycodes/keyboard_code_conversion_x.cc
index 4235fca..494caff 100644
--- a/ui/base/keycodes/keyboard_code_conversion_x.cc
+++ b/ui/base/keycodes/keyboard_code_conversion_x.cc
@@ -6,9 +6,11 @@
#include <X11/keysym.h>
#include <X11/Xlib.h>
+#include <X11/Xutil.h>
#include "base/basictypes.h"
#include "base/logging.h"
+#include "base/utf_string_conversions.h"
namespace ui {
@@ -289,6 +291,16 @@ KeyboardCode KeyboardCodeFromXKeysym(unsigned int keysym) {
return VKEY_UNKNOWN;
}
+unsigned int DefaultSymbolFromXEvent(XEvent* xev) {
+ char buf[6];
+ int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL);
+ DCHECK_LE(bytes_written, 6);
+
+ string16 result;
+ return (bytes_written > 0 && UTF8ToUTF16(buf, bytes_written, &result) &&
+ result.length() == 1) ? result[0] : 0;
+}
+
unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) {
static const unsigned int kHardwareKeycodeMap[] = {
0, // 0x00:
diff --git a/ui/base/keycodes/keyboard_code_conversion_x.h b/ui/base/keycodes/keyboard_code_conversion_x.h
index 17eab24..e42e02f 100644
--- a/ui/base/keycodes/keyboard_code_conversion_x.h
+++ b/ui/base/keycodes/keyboard_code_conversion_x.h
@@ -16,8 +16,11 @@ UI_EXPORT KeyboardCode KeyboardCodeFromXKeyEvent(XEvent* xev);
UI_EXPORT KeyboardCode KeyboardCodeFromXKeysym(unsigned int keysym);
-// Converts a hardware keycode into a key symbol on a standard US PC keyboard.
-UI_EXPORT unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int keycode);
+// Returns a key symbol on a standard US PC keyboard from an XEvent.
+UI_EXPORT unsigned int DefaultSymbolFromXEvent(XEvent* xev);
+
+// Converts an X keycode into an X KeySym.
+unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int keycode);
} // namespace ui