Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(986)

Unified Diff: ui/keyboard/keyboard_util.cc

Issue 841263005: Use DOM- rather than Windows-based key code for non-layout cases. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix virtual keyboard, added caution and unit test Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/keyboard/keyboard.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/keyboard/keyboard_util.cc
diff --git a/ui/keyboard/keyboard_util.cc b/ui/keyboard/keyboard_util.cc
index c234127a9ac9b0b24e74b1cd4a714a3a682418c1..dcea9e4bb163984e4cfb31f0d040cf429b59f3ff 100644
--- a/ui/keyboard/keyboard_util.cc
+++ b/ui/keyboard/keyboard_util.cc
@@ -18,7 +18,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 +35,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);
@@ -193,34 +198,54 @@ bool MoveCursor(int swipe_direction,
return false;
ui::KeyboardCode codex = ui::VKEY_UNKNOWN;
ui::KeyboardCode codey = ui::VKEY_UNKNOWN;
- if (swipe_direction & kCursorMoveRight)
+ ui::DomCode domcodex = ui::DomCode::NONE;
+ ui::DomCode domcodey = ui::DomCode::NONE;
+ ui::DomKey domkeyx = ui::DomKey::NONE;
+ ui::DomKey domkeyy = ui::DomKey::NONE;
+ if (swipe_direction & kCursorMoveRight) {
codex = ui::VKEY_RIGHT;
- else if (swipe_direction & kCursorMoveLeft)
+ domcodex = ui::DomCode::ARROW_RIGHT;
+ domkeyx = ui::DomKey::ARROW_RIGHT;
+ } else if (swipe_direction & kCursorMoveLeft) {
codex = ui::VKEY_LEFT;
+ domcodex = ui::DomCode::ARROW_LEFT;
+ domkeyx = ui::DomKey::ARROW_LEFT;
+ }
- if (swipe_direction & kCursorMoveUp)
+ if (swipe_direction & kCursorMoveUp) {
codey = ui::VKEY_UP;
- else if (swipe_direction & kCursorMoveDown)
+ domcodey = ui::DomCode::ARROW_UP;
+ domkeyy = ui::DomKey::ARROW_UP;
+ } else if (swipe_direction & kCursorMoveDown) {
codey = ui::VKEY_DOWN;
+ domcodey = ui::DomCode::ARROW_DOWN;
+ domkeyy = ui::DomKey::ARROW_DOWN;
+ }
sadrul 2015/04/21 18:48:16 This seems a bit unfortunate. Is it possible to au
kpschoedel 2015/04/21 19:32:07 Done, using DomCode as the source of truth. In the
// First deal with the x movement.
if (codex != ui::VKEY_UNKNOWN) {
- ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codex, modifier_flags);
+ ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codex, domcodex,
+ modifier_flags, domkeyx, 0, 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, 0,
+ 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);
+ ui::KeyEvent press_event(ui::ET_KEY_PRESSED, codey, domcodey,
+ modifier_flags, domkeyy, 0, 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, 0,
+ ui::EventTimeForNow());
details = host->event_processor()->OnEventFromSource(&release_event);
CHECK(!details.dispatcher_destroyed);
}
@@ -274,10 +299,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);
kpschoedel 2015/04/21 19:32:07 Remark: if the virtual keyboard knows the intended
ui::EventDispatchDetails details =
host->event_processor()->OnEventFromSource(&event);
« no previous file with comments | « ui/keyboard/keyboard.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698