Index: ui/events/event.cc |
diff --git a/ui/events/event.cc b/ui/events/event.cc |
index e817ca5dcdebcf77425d6f7dfea482c1db25f8dc..b5c7a68c3163281a230f58321ea2bb342ee9866e 100644 |
--- a/ui/events/event.cc |
+++ b/ui/events/event.cc |
@@ -17,6 +17,7 @@ |
#include "base/strings/stringprintf.h" |
#include "ui/events/event_utils.h" |
#include "ui/events/keycodes/dom3/dom_code.h" |
+#include "ui/events/keycodes/dom3/dom_key.h" |
#include "ui/events/keycodes/dom4/keycode_converter.h" |
#include "ui/events/keycodes/keyboard_code_conversion.h" |
#include "ui/gfx/geometry/safe_integer_conversions.h" |
@@ -29,8 +30,9 @@ |
#include "ui/events/keycodes/keyboard_code_conversion_x.h" |
#elif defined(USE_OZONE) |
#include "ui/events/keycodes/keyboard_code_conversion.h" |
+#include "ui/ozone/public/keyboard_layouts.h" |
+#include "ui/ozone/public/ozone_platform.h" |
kpschoedel
2014/11/20 16:18:38
Will need +ui/ozone dependency.
sadrul
2014/11/21 21:25:25
//ui/ozone has deps on //ui/events/, so we can't c
kpschoedel
2014/11/21 21:43:33
Argh. OK, this needs a rethink. Layout is fortunat
spang
2014/11/21 21:58:52
Can we really say it is orthogonal?
I think we sh
|
#endif |
- |
namespace { |
std::string EventTypeName(ui::EventType type) { |
@@ -665,6 +667,17 @@ KeyEvent::KeyEvent(EventType type, |
is_char_(false), |
platform_keycode_(0), |
character_(0) { |
+#if defined(USE_OZONE) |
+ // TODO(kpschoedel): Change after keyboard_code_conversion_ozone. |
+ if (key_code_ == VKEY_UNKNOWN) { |
+ DomKey todo_dom_key = DomKey::NONE; |
+ OzonePlatform::GetInstance()->GetKeyboardLayouts()->Lookup(code_, |
+ this->flags(), |
+ &todo_dom_key, |
+ &character_, |
+ &key_code_); |
+ } |
+#endif |
kpschoedel
2014/11/20 16:18:38
Should the Ozone event source instead be responsib
sadrul
2014/11/21 21:25:25
I think so, yeah.
kpschoedel
2014/11/21 21:43:33
In that case, I think we'll want the extended cons
|
} |
KeyEvent::KeyEvent(base::char16 character, KeyboardCode key_code, int flags) |
@@ -738,6 +751,18 @@ base::char16 KeyEvent::GetCharacter() const { |
return IsControlDown() ? |
GetCharacterFromKeyCode(key_code_, flags()) : |
GetCharacterFromXEvent(native_event()); |
+#elif defined(USE_OZONE) |
+ DomKey todo_dom_key = DomKey::NONE; |
+ KeyboardCode dummy_key_code = VKEY_UNKNOWN; |
+ if (OzonePlatform::GetInstance()->GetKeyboardLayouts()->Lookup( |
+ code_, |
+ flags(), |
+ &todo_dom_key, |
+ &character_, |
+ &dummy_key_code)) { |
+ return character_; |
+ } |
+ return GetCharacterFromKeyCode(key_code_, flags()); |
#else |
if (native_event()) { |
DCHECK(EventTypeFromNative(native_event()) == ET_KEY_PRESSED || |