diff options
author | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-19 00:25:23 +0000 |
---|---|---|
committer | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-19 00:25:23 +0000 |
commit | 4d8c03fbe1482b11cdfbbf00d476cbfa9e959014 (patch) | |
tree | f175f6cb9ffb898393145d10f530121623485326 /ui | |
parent | f9dac2c74ee05653fda500ea77dbce4aac3eea70 (diff) | |
download | chromium_src-4d8c03fbe1482b11cdfbbf00d476cbfa9e959014.zip chromium_src-4d8c03fbe1482b11cdfbbf00d476cbfa9e959014.tar.gz chromium_src-4d8c03fbe1482b11cdfbbf00d476cbfa9e959014.tar.bz2 |
Supports arrow keys in the map from hardware keycode to xkey sym.
This cl is adding map entries in DefaultXKeysymFromHardwareKeycode() function which is fallback of KeyboardCodeFromXKeyEvent() function.
KeyboardCodeFromXKeyEvent() supports arrow keys but some code needs to convert xkb scancode to keysym without XEvent instance (e.g. a simulated key event from On-screen Keyboard), so adding additional map entries in DefaultXKeysymFromHardwareKeycode() become necessary.
BUG=350834
TEST=Verified on pixel device.
Review URL: https://codereview.chromium.org/196823002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257828 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/events/keycodes/keyboard_code_conversion_x.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/ui/events/keycodes/keyboard_code_conversion_x.cc b/ui/events/keycodes/keyboard_code_conversion_x.cc index 89f7ac8..ffda952 100644 --- a/ui/events/keycodes/keyboard_code_conversion_x.cc +++ b/ui/events/keycodes/keyboard_code_conversion_x.cc @@ -538,8 +538,21 @@ unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) { XK_Scroll_Lock, // 0x4E: XK_Scroll_Lock }; - return hardware_code < arraysize(kHardwareKeycodeMap) ? - kHardwareKeycodeMap[hardware_code] : 0; + if (hardware_code >= arraysize(kHardwareKeycodeMap)) { + // Checks for arrow keys. + switch (hardware_code) { + case 0x6f: + return XK_Up; + case 0x71: + return XK_Left; + case 0x72: + return XK_Right; + case 0x74: + return XK_Down; + } + return 0; + } + return kHardwareKeycodeMap[hardware_code]; } // TODO(jcampan): this method might be incomplete. |