| Index: chrome/browser/chromeos/input_method/input_method_engine.cc
|
| diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc
|
| index 4f7c33741b21e44f215b4182e377ed245a76e7c9..bd0cd218911900e0871d349f824b8e431396ef3b 100644
|
| --- a/chrome/browser/chromeos/input_method/input_method_engine.cc
|
| +++ b/chrome/browser/chromeos/input_method/input_method_engine.cc
|
| @@ -4,11 +4,6 @@
|
|
|
| #include "chrome/browser/chromeos/input_method/input_method_engine.h"
|
|
|
| -#define XK_MISCELLANY
|
| -#include <X11/keysymdef.h>
|
| -#include <X11/X.h>
|
| -#include <X11/Xlib.h>
|
| -#include <X11/Xutil.h>
|
| #undef FocusIn
|
| #undef FocusOut
|
| #undef RootWindow
|
| @@ -34,8 +29,6 @@
|
| #include "ui/base/ime/chromeos/ime_keymap.h"
|
| #include "ui/events/event.h"
|
| #include "ui/events/event_processor.h"
|
| -#include "ui/events/keycodes/dom4/keycode_converter.h"
|
| -#include "ui/events/keycodes/keyboard_code_conversion_x.h"
|
| #include "ui/keyboard/keyboard_controller.h"
|
| #include "ui/keyboard/keyboard_util.h"
|
|
|
| @@ -266,24 +259,19 @@ bool InputMethodEngine::SendKeyEvents(
|
| const ui::EventType type =
|
| (event.type == "keyup") ? ui::ET_KEY_RELEASED : ui::ET_KEY_PRESSED;
|
|
|
| - // KeyboardCodeFromXKyeSym assumes US keyboard layout.
|
| - ui::KeycodeConverter* conv = ui::KeycodeConverter::GetInstance();
|
| - DCHECK(conv);
|
| -
|
| - // DOM code (KeyA) -> XKB -> XKeySym (XK_A) -> KeyboardCode (VKEY_A)
|
| - const uint16 native_keycode =
|
| - conv->CodeToNativeKeycode(event.code.c_str());
|
| - const uint xkeysym = ui::DefaultXKeysymFromHardwareKeycode(native_keycode);
|
| - const ui::KeyboardCode key_code = ui::KeyboardCodeFromXKeysym(xkeysym);
|
| -
|
| - const std::string code = event.code;
|
| int flags = ui::EF_NONE;
|
| flags |= event.alt_key ? ui::EF_ALT_DOWN : ui::EF_NONE;
|
| flags |= event.ctrl_key ? ui::EF_CONTROL_DOWN : ui::EF_NONE;
|
| flags |= event.shift_key ? ui::EF_SHIFT_DOWN : ui::EF_NONE;
|
| flags |= event.caps_lock ? ui::EF_CAPS_LOCK_DOWN : ui::EF_NONE;
|
|
|
| - ui::KeyEvent ui_event(type, key_code, code, flags, false /* is_char */);
|
| + ui::KeyEvent ui_event(type,
|
| + ui::FromCodeToKeyboardCode(event.code),
|
| + event.code,
|
| + flags,
|
| + false /* is_char */);
|
| + if (!event.key.empty())
|
| + ui_event.set_character(base::UTF8ToUTF16(event.key)[0]);
|
| base::AutoReset<const ui::KeyEvent*> reset_sent_key(&sent_key_event_,
|
| &ui_event);
|
| ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&ui_event);
|
| @@ -584,6 +572,7 @@ void InputMethodEngine::Reset() {
|
| }
|
|
|
| namespace {
|
| +
|
| void GetExtensionKeyboardEventFromKeyEvent(
|
| const ui::KeyEvent& event,
|
| InputMethodEngine::KeyboardEvent* ext_event) {
|
| @@ -597,28 +586,9 @@ void GetExtensionKeyboardEventFromKeyEvent(
|
| ext_event->ctrl_key = event.IsControlDown();
|
| ext_event->shift_key = event.IsShiftDown();
|
| ext_event->caps_lock = event.IsCapsLockDown();
|
| -
|
| - uint32 x11_keysym = 0;
|
| - if (event.HasNativeEvent()) {
|
| - const base::NativeEvent& native_event = event.native_event();
|
| - DCHECK(native_event);
|
| -
|
| - XKeyEvent* x_key = &(static_cast<XEvent*>(native_event)->xkey);
|
| - KeySym keysym = NoSymbol;
|
| - ::XLookupString(x_key, NULL, 0, &keysym, NULL);
|
| - x11_keysym = keysym;
|
| - } else {
|
| - // Convert ui::KeyEvent.key_code to DOM UIEvent key.
|
| - // XKeysymForWindowsKeyCode converts key_code to XKeySym, but it
|
| - // assumes US layout and does not care about CapLock state.
|
| - //
|
| - // TODO(komatsu): Support CapsLock states.
|
| - // TODO(komatsu): Support non-us keyboard layouts.
|
| - x11_keysym = ui::XKeysymForWindowsKeyCode(event.key_code(),
|
| - event.IsShiftDown());
|
| - }
|
| - ext_event->key = ui::FromXKeycodeToKeyValue(x11_keysym);
|
| + ext_event->key = UTF16ToUTF8(base::string16(1, event.GetCharacter()));
|
| }
|
| +
|
| } // namespace
|
|
|
| void InputMethodEngine::ProcessKeyEvent(
|
|
|