summaryrefslogtreecommitdiffstats
path: root/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
diff options
context:
space:
mode:
authorkpschoedel <kpschoedel@chromium.org>2014-12-17 12:21:41 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-17 20:22:12 +0000
commit920f318f867836faa4514308649be56f82405a37 (patch)
tree7fa627c16fe3b35be9f9b6c1fa518e2e4aa3baef /ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
parent3c9fdc5d60c35c297f85c2f3dcce4a62b7f0c5f9 (diff)
downloadchromium_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.cc12
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) {