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 0b4cb734650d6806c59fceba88188455c016bac9..0660dd1f48e0f6c790513ddd0c89bbc14ed8960d 100644 |
--- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc |
+++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc |
@@ -775,10 +775,12 @@ bool XkbKeyboardLayoutEngine::Lookup(DomCode dom_code, |
if (*key_code == VKEY_UNKNOWN) |
*key_code = DomCodeToUsLayoutKeyboardCode(dom_code); |
} |
- // 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; |
+ |
+ 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); |
+ } |
} else if (*dom_key == DomKey::DEAD) { |
*character = DeadXkbKeySymToCombiningCharacter(xkb_keysym); |
*key_code = DomCodeToUsLayoutKeyboardCode(dom_code); |