Index: ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc |
diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc |
index 0660dd1f48e0f6c790513ddd0c89bbc14ed8960d..0b4cb734650d6806c59fceba88188455c016bac9 100644 |
--- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc |
+++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc |
@@ -775,12 +775,10 @@ bool XkbKeyboardLayoutEngine::Lookup(DomCode dom_code, |
if (*key_code == VKEY_UNKNOWN) |
*key_code = DomCodeToUsLayoutKeyboardCode(dom_code); |
} |
- |
- if ((flags & EF_CONTROL_DOWN) == EF_CONTROL_DOWN) { |
- // Use GetCharacterFromKeyCode() to set |character| to 0x0 for keys that |
- // are not part of the accepted set of Control+Key combinations. |
- *character = GetCharacterFromKeyCode(*key_code, flags); |
- } |
+ // If the Control key is down, only allow ASCII control characters to be |
+ // returned, regardless of the key layout. crbug.com/450849 |
+ if ((flags & EF_CONTROL_DOWN) && (*character >= 0x20)) |
+ *character = 0; |
} else if (*dom_key == DomKey::DEAD) { |
*character = DeadXkbKeySymToCombiningCharacter(xkb_keysym); |
*key_code = DomCodeToUsLayoutKeyboardCode(dom_code); |