diff options
Diffstat (limited to 'ui/base/keycodes')
-rw-r--r-- | ui/base/keycodes/keyboard_code_conversion_gtk.cc | 7 | ||||
-rw-r--r-- | ui/base/keycodes/keyboard_code_conversion_x.cc | 12 | ||||
-rw-r--r-- | ui/base/keycodes/keyboard_code_conversion_x.h | 7 |
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 |