diff options
author | kpschoedel <kpschoedel@chromium.org> | 2014-12-17 12:21:41 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-17 20:22:12 +0000 |
commit | 920f318f867836faa4514308649be56f82405a37 (patch) | |
tree | 7fa627c16fe3b35be9f9b6c1fa518e2e4aa3baef /ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc | |
parent | 3c9fdc5d60c35c297f85c2f3dcce4a62b7f0c5f9 (diff) | |
download | chromium_src-920f318f867836faa4514308649be56f82405a37.zip chromium_src-920f318f867836faa4514308649be56f82405a37.tar.gz chromium_src-920f318f867836faa4514308649be56f82405a37.tar.bz2 |
Workaround for xkbcommon dead keys.
Dead key processing on ChromeOS currently depends on having X |KeySym|
values in KeyEvent.platform_keycode(). This patch adds the 'platform
keycode' (KeySym) to the Ozone layout interface. Since this introduces
platform dependence, it needs to be reimplemented: crbug.com/442757
BUG=430194
R=sadrul
TEST=manual on link_freon
Review URL: https://codereview.chromium.org/808043002
Cr-Commit-Position: refs/heads/master@{#308850}
Diffstat (limited to 'ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc')
-rw-r--r-- | ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc | 12 |
1 files changed, 7 insertions, 5 deletions
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 4e15b2b..7205539 100644 --- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc +++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc @@ -669,12 +669,12 @@ bool XkbKeyboardLayoutEngine::SetCurrentLayoutByName( xkb_keymap* keymap = xkb_keymap_new_from_names(xkb_context_.get(), &names, XKB_KEYMAP_COMPILE_NO_FLAGS); - if (keymap) + if (keymap) { SetKeymap(keymap); - return true; -#else + return true; + } +#endif // defined(OS_CHROMEOS) return false; -#endif } bool XkbKeyboardLayoutEngine::UsesISOLevel5Shift() const { @@ -691,7 +691,8 @@ bool XkbKeyboardLayoutEngine::Lookup(DomCode dom_code, int flags, DomKey* dom_key, base::char16* character, - KeyboardCode* key_code) const { + KeyboardCode* key_code, + uint32* platform_keycode) const { // Convert DOM physical key to XKB representation. xkb_keycode_t xkb_keycode = key_code_converter_.DomCodeToXkbKeyCode(dom_code); if (xkb_keycode == key_code_converter_.InvalidXkbKeyCode()) { @@ -705,6 +706,7 @@ bool XkbKeyboardLayoutEngine::Lookup(DomCode dom_code, xkb_keysym_t xkb_keysym; if (!XkbLookup(xkb_keycode, xkb_flags, &xkb_keysym, character)) return false; + *platform_keycode = xkb_keysym; // Classify the keysym and convert to DOM and VKEY representations. *dom_key = NonPrintableXkbKeySymToDomKey(xkb_keysym); if (*dom_key == DomKey::NONE) { |