Commit 256dcbf4 authored by Tetsui Ohkubo's avatar Tetsui Ohkubo Committed by Commit Bot

chromeos: Remove F16 to CapsLock hack.

Historically, pressing CapsLock with an external keyboard on Chrome OS
generated F16 (XF86Launch7), in order to bypass limitation from the time
Chrome OS was still using X11. On Chrome side, F16 and CapsLock are
alerady treated as the same, and we can now remove handling of F16
completely.

XKB side change: https://crrev.com/c/1454437

TEST=manual (Confirmed an external keyboard CapsLock including remapping
keeps working with 1454437)
BUG=None

Change-Id: I99a18ffd99eec4b99a5e02031e52bd7693043f03
Reviewed-on: https://chromium-review.googlesource.com/c/1460215Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Reviewed-by: default avatarKevin Schoedel <kpschoedel@chromium.org>
Commit-Queue: Tetsui Ohkubo <tetsui@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632062}
parent f837d2f1
......@@ -1276,21 +1276,21 @@ TEST_F(EventRewriterTest, TestRewriteCapsLock) {
rewriter_->set_ime_keyboard_for_testing(&ime_keyboard);
EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
// On Chrome OS, CapsLock is mapped to F16 with Mod3Mask.
// On Chrome OS, CapsLock is mapped to CapsLock with Mod3Mask.
EXPECT_EQ(GetExpectedResultAsString(
ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK,
ui::EF_CAPS_LOCK_ON | ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK),
GetRewrittenEventAsString(rewriter_, ui::ET_KEY_PRESSED,
ui::VKEY_F16, ui::DomCode::F16,
ui::EF_MOD3_DOWN, ui::DomKey::F16));
ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK,
ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK));
EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL,
ui::DomCode::CAPS_LOCK, ui::EF_NONE,
ui::DomKey::CAPS_LOCK),
GetRewrittenEventAsString(rewriter_, ui::ET_KEY_RELEASED,
ui::VKEY_F16, ui::DomCode::F16,
ui::EF_MOD3_DOWN, ui::DomKey::F16));
ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK,
ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK));
EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_);
// Remap Caps Lock to Control.
......@@ -1314,22 +1314,6 @@ TEST_F(EventRewriterTest, TestRewriteCapsLock) {
GetRewrittenEventAsString(rewriter_, ui::ET_KEY_RELEASED,
ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK,
ui::EF_NONE, ui::DomKey::CAPS_LOCK));
// Press F16.
EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL,
ui::DomCode::CONTROL_LEFT,
ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL),
GetRewrittenEventAsString(rewriter_, ui::ET_KEY_PRESSED,
ui::VKEY_F16, ui::DomCode::F16,
ui::EF_MOD3_DOWN, ui::DomKey::F16));
// Release F16.
EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CONTROL,
ui::DomCode::CONTROL_LEFT, ui::EF_NONE,
ui::DomKey::CONTROL),
GetRewrittenEventAsString(rewriter_, ui::ET_KEY_RELEASED,
ui::VKEY_F16, ui::DomCode::F16,
ui::EF_MOD3_DOWN, ui::DomKey::F16));
}
TEST_F(EventRewriterTest, TestRewriteDiamondKey) {
......
......@@ -765,11 +765,10 @@ bool EventRewriterChromeOS::RewriteModifierKeys(const ui::KeyEvent& key_event,
// Remapping based on DomCode.
switch (incoming.code) {
// On Chrome OS, XF86XK_Launch7 (F16) with Mod3Mask is sent when Caps Lock
// is pressed (with one exception: when
// IsISOLevel5ShiftUsedByCurrentInputMethod() is true, the key generates
// XK_ISO_Level3_Shift with Mod3Mask, not XF86XK_Launch7).
case ui::DomCode::F16:
// On Chrome OS, Caps_Lock with Mod3Mask is sent when Caps Lock is pressed
// (with one exception: when IsISOLevel5ShiftUsedByCurrentInputMethod() is
// true, the key generates XK_ISO_Level3_Shift with Mod3Mask, not
// Caps_Lock).
case ui::DomCode::CAPS_LOCK:
// This key is already remapped to Mod3 in remapping based on DomKey. Skip
// more remapping.
......@@ -817,13 +816,10 @@ bool EventRewriterChromeOS::RewriteModifierKeys(const ui::KeyEvent& key_event,
state->key = remapped_key->result.key;
incoming.flags |= characteristic_flag;
characteristic_flag = remapped_key->flag;
if (incoming.key_code == ui::VKEY_CAPITAL ||
incoming.key_code == ui::VKEY_F16) {
if (incoming.key_code == ui::VKEY_CAPITAL) {
// Caps Lock is rewritten to another key event, remove EF_CAPS_LOCK_ON
// flag to prevent the keyboard's Caps Lock state being synced to the
// rewritten key event's flag in InputMethodChromeOS. (Caps Lock key on an
// external keyboard generates F16 which is treated as Caps Lock and then
// rewritten.)
// rewritten key event's flag in InputMethodChromeOS.
incoming.flags &= ~ui::EF_CAPS_LOCK_ON;
}
if (remapped_key->remap_to == ui::chromeos::ModifierKey::kCapsLockKey)
......
......@@ -15,10 +15,6 @@ int ModifierDomKeyToEventFlag(DomKey key) {
return EF_ALT_DOWN;
case DomKey::ALT_GRAPH:
return EF_ALTGR_DOWN;
// ChromeOS uses F16 to represent CapsLock before the rewriting stage,
// based on the historical X11 implementation.
// TODO post-X11: Switch to use CapsLock uniformly.
case DomKey::F16:
case DomKey::CAPS_LOCK:
return EF_CAPS_LOCK_ON;
case DomKey::CONTROL:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment