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

Unified Diff: chrome/browser/chromeos/events/event_rewriter.cc

Issue 399443004: Maintain Diamond (F15) modifier state when rewriting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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
Index: chrome/browser/chromeos/events/event_rewriter.cc
diff --git a/chrome/browser/chromeos/events/event_rewriter.cc b/chrome/browser/chromeos/events/event_rewriter.cc
index fdd465ff6897bcd970bbf08d91b758457a58e186..900ac4a8adf0cdfb477fe5255f0603ff7fc4c906 100644
--- a/chrome/browser/chromeos/events/event_rewriter.cc
+++ b/chrome/browser/chromeos/events/event_rewriter.cc
@@ -182,7 +182,8 @@ EventRewriter::EventRewriter(ash::StickyKeysController* sticky_keys_controller)
: last_keyboard_device_id_(ui::ED_UNKNOWN_DEVICE),
ime_keyboard_for_testing_(NULL),
pref_service_for_testing_(NULL),
- sticky_keys_controller_(sticky_keys_controller) {
+ sticky_keys_controller_(sticky_keys_controller),
+ active_diamond_modifier_(ui::EF_NONE) {
}
EventRewriter::~EventRewriter() {
@@ -325,7 +326,7 @@ int EventRewriter::GetRemappedModifierMasks(const PrefService& pref_service,
const ui::Event& event,
int original_flags) const {
int unmodified_flags = original_flags;
- int rewritten_flags = 0;
+ int rewritten_flags = active_diamond_modifier_;
for (size_t i = 0; unmodified_flags && (i < arraysize(kModifierRemappings));
++i) {
const ModifierRemapping* remapped_key = NULL;
@@ -619,11 +620,20 @@ void EventRewriter::RewriteModifierKeys(const ui::KeyEvent& key_event,
if (HasDiamondKey())
remapped_key =
GetRemappedKey(prefs::kLanguageRemapDiamondKeyTo, *pref_service);
- // Default behavior is Ctrl key.
+ // Default behavior of F15 is Control, even if --has-chromeos-diamond-key
+ // is absent, according to unit test comments.
if (!remapped_key) {
DCHECK_EQ(ui::VKEY_CONTROL, kModifierRemappingCtrl->key_code);
remapped_key = kModifierRemappingCtrl;
- characteristic_flag = ui::EF_CONTROL_DOWN;
+ }
+ // F15 is not a modifier key, so we need to track its state directly.
+ if (key_event.type() == ui::ET_KEY_PRESSED) {
+ int remapped_flag = remapped_key->flag;
+ if (remapped_key->remap_to == input_method::kCapsLockKey)
+ remapped_flag |= ui::EF_CAPS_LOCK_DOWN;
+ active_diamond_modifier_ = remapped_flag;
+ } else {
+ active_diamond_modifier_ = ui::EF_NONE;
}
break;
// On Chrome OS, XF86XK_Launch7 (F16) with Mod3Mask is sent when Caps Lock

Powered by Google App Engine
This is Rietveld 408576698