Index: ui/events/keycodes/keyboard_code_conversion_x.cc |
diff --git a/ui/events/keycodes/keyboard_code_conversion_x.cc b/ui/events/keycodes/keyboard_code_conversion_x.cc |
index 4311a96f7e5b34d7d41cabf086b4104c738540e2..b42aa8a87a950a8ec7606188249e446980621ad7 100644 |
--- a/ui/events/keycodes/keyboard_code_conversion_x.cc |
+++ b/ui/events/keycodes/keyboard_code_conversion_x.cc |
@@ -545,8 +545,11 @@ KeyboardCode KeyboardCodeFromXKeyEvent(const XEvent* xev) { |
} |
keycode = KeyboardCodeFromXKeysym(keysym); |
- if (keycode == VKEY_UNKNOWN) |
+ if (keycode == VKEY_UNKNOWN && !IsModifierKey(keysym)) { |
+ // Modifier keys should not fall back to the hardware-keycode-based US |
+ // layout. See crbug.com/402320 |
keycode = DefaultKeyboardCodeFromHardwareKeycode(xkey->keycode); |
+ } |
return keycode; |
} |