Index: ui/keyboard/keyboard_util.cc |
diff --git a/ui/keyboard/keyboard_util.cc b/ui/keyboard/keyboard_util.cc |
index c234127a9ac9b0b24e74b1cd4a714a3a682418c1..7b77b438ff792b9c462c541d1a06900393feaf02 100644 |
--- a/ui/keyboard/keyboard_util.cc |
+++ b/ui/keyboard/keyboard_util.cc |
@@ -6,6 +6,7 @@ |
#include <string> |
+#include "base/basictypes.h" |
#include "base/command_line.h" |
#include "base/lazy_instance.h" |
#include "base/logging.h" |
@@ -18,7 +19,11 @@ |
#include "ui/base/ime/input_method.h" |
#include "ui/base/ime/text_input_client.h" |
#include "ui/events/event_processor.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/keyboard/keyboard_controller.h" |
#include "ui/keyboard/keyboard_controller_proxy.h" |
#include "ui/keyboard/keyboard_switches.h" |
@@ -31,7 +36,8 @@ const char kKeyUp[] = "keyup"; |
void SendProcessKeyEvent(ui::EventType type, |
aura::WindowTreeHost* host) { |
- ui::KeyEvent event(type, ui::VKEY_PROCESSKEY, ui::EF_NONE); |
+ ui::KeyEvent event(type, ui::VKEY_PROCESSKEY, ui::DomCode::NONE, ui::EF_NONE, |
+ ui::DomKey::PROCESS, 0, ui::EventTimeForNow()); |
event.SetTranslated(true); |
ui::EventDispatchDetails details = |
host->event_processor()->OnEventFromSource(&event); |
@@ -191,36 +197,54 @@ bool MoveCursor(int swipe_direction, |
aura::WindowTreeHost* host) { |
if (!host) |
return false; |
- ui::KeyboardCode codex = ui::VKEY_UNKNOWN; |
- ui::KeyboardCode codey = ui::VKEY_UNKNOWN; |
+ ui::DomCode domcodex = ui::DomCode::NONE; |
+ ui::DomCode domcodey = ui::DomCode::NONE; |
if (swipe_direction & kCursorMoveRight) |
- codex = ui::VKEY_RIGHT; |
+ domcodex = ui::DomCode::ARROW_RIGHT; |
else if (swipe_direction & kCursorMoveLeft) |
- codex = ui::VKEY_LEFT; |
+ domcodex = ui::DomCode::ARROW_LEFT; |
if (swipe_direction & kCursorMoveUp) |
- codey = ui::VKEY_UP; |
+ domcodey = ui::DomCode::ARROW_UP; |
else if (swipe_direction & kCursorMoveDown) |
- codey = ui::VKEY_DOWN; |
+ domcodey = ui::DomCode::ARROW_DOWN; |
// First deal with the x movement. |
- if (codex != ui::VKEY_UNKNOWN) { |
- ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codex, modifier_flags); |
+ if (domcodex != ui::DomCode::NONE) { |
+ ui::KeyboardCode codex = ui::VKEY_UNKNOWN; |
+ ui::DomKey domkeyx = ui::DomKey::NONE; |
+ base::char16 cx; |
+ ignore_result(DomCodeToUsLayoutMeaning(domcodex, ui::EF_NONE, &domkeyx, |
+ &cx, &codex)); |
+ ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codex, domcodex, |
+ modifier_flags, domkeyx, cx, |
+ ui::EventTimeForNow()); |
ui::EventDispatchDetails details = |
host->event_processor()->OnEventFromSource(&press_event); |
CHECK(!details.dispatcher_destroyed); |
- ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codex, modifier_flags); |
+ ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codex, domcodex, |
+ modifier_flags, domkeyx, cx, |
+ ui::EventTimeForNow()); |
details = host->event_processor()->OnEventFromSource(&release_event); |
CHECK(!details.dispatcher_destroyed); |
} |
// Then deal with the y movement. |
- if (codey != ui::VKEY_UNKNOWN) { |
- ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codey, modifier_flags); |
+ if (domcodey != ui::DomCode::NONE) { |
+ ui::KeyboardCode codey = ui::VKEY_UNKNOWN; |
+ ui::DomKey domkeyy = ui::DomKey::NONE; |
+ base::char16 cy; |
+ ignore_result(DomCodeToUsLayoutMeaning(domcodey, ui::EF_NONE, &domkeyy, |
+ &cy, &codey)); |
+ ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codey, domcodey, |
+ modifier_flags, domkeyy, cy, |
+ ui::EventTimeForNow()); |
ui::EventDispatchDetails details = |
host->event_processor()->OnEventFromSource(&press_event); |
CHECK(!details.dispatcher_destroyed); |
- ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codey, modifier_flags); |
+ ui::KeyEvent release_event(ui::ET_KEY_RELEASED, codey, domcodey, |
+ modifier_flags, domkeyy, cy, |
+ ui::EventTimeForNow()); |
details = host->event_processor()->OnEventFromSource(&release_event); |
CHECK(!details.dispatcher_destroyed); |
} |
sadrul
2015/04/21 19:42:17
Can lines 214:229 and 234:249 be moved to a separa
kpschoedel
2015/04/21 19:53:15
Yes. I'm still thinking about how best to express
|
@@ -274,10 +298,16 @@ bool SendKeyEvent(const std::string type, |
} |
} |
+ ui::DomCode dom_code = ui::DomCode::NONE; |
+ if (!key_name.empty()) |
+ dom_code = ui::KeycodeConverter::CodeStringToDomCode(key_name.c_str()); |
+ if (dom_code == ui::DomCode::NONE) |
+ dom_code = ui::UsLayoutKeyboardCodeToDomCode(code); |
+ CHECK(dom_code != ui::DomCode::NONE); |
ui::KeyEvent event( |
event_type, |
code, |
- ui::KeycodeConverter::CodeStringToDomCode(key_name.c_str()), |
+ dom_code, |
modifiers); |
ui::EventDispatchDetails details = |
host->event_processor()->OnEventFromSource(&event); |