Chromium Code Reviews| Index: ui/events/keycodes/keyboard_code_conversion_xkb.cc |
| diff --git a/ui/events/keycodes/keyboard_code_conversion_xkb.cc b/ui/events/keycodes/keyboard_code_conversion_xkb.cc |
| index 22172a11663c3dce6c18971c1a62834f10fed38b..a0a0cef8ab0af814d4b6858f72f3936bed3da0d0 100644 |
| --- a/ui/events/keycodes/keyboard_code_conversion_xkb.cc |
| +++ b/ui/events/keycodes/keyboard_code_conversion_xkb.cc |
| @@ -7,6 +7,10 @@ |
| #include "ui/events/keycodes/dom/dom_key.h" |
| #include "ui/events/keycodes/keyboard_code_conversion.h" |
| +#ifndef XK_dead_greek |
| +#define XK_dead_greek 0xfe8c |
| +#endif |
| + |
| namespace ui { |
| DomKey NonPrintableXKeySymToDomKey(xkb_keysym_t keysym) { |
| @@ -351,36 +355,71 @@ DomKey NonPrintableXKeySymToDomKey(xkb_keysym_t keysym) { |
| case XKB_KEY_ISO_Last_Group: |
| return DomKey::GROUP_LAST; |
| case XKB_KEY_dead_grave: |
| + return DomKey::Dead(0x0300); // combining grave accent |
| case XKB_KEY_dead_acute: |
| + return DomKey::Dead(0x0301); // combining acute accent |
| case XKB_KEY_dead_circumflex: |
| + return DomKey::Dead(0x0302); // combining circumflex accent |
| case XKB_KEY_dead_tilde: |
| + return DomKey::Dead(0x0303); // combining tilde |
| case XKB_KEY_dead_macron: |
| + return DomKey::Dead(0x0304); // combining macron |
| case XKB_KEY_dead_breve: |
| + return DomKey::Dead(0x0306); // combining breve |
| case XKB_KEY_dead_abovedot: |
| + return DomKey::Dead(0x0307); // combining dot above |
| case XKB_KEY_dead_diaeresis: |
| + return DomKey::Dead(0x0308); // combining diaeresis |
| case XKB_KEY_dead_abovering: |
| + return DomKey::Dead(0x030A); // combining ring above |
| case XKB_KEY_dead_doubleacute: |
| + return DomKey::Dead(0x030B); // combining double acute accent |
| case XKB_KEY_dead_caron: |
| + return DomKey::Dead(0x030C); // combining caron |
| case XKB_KEY_dead_cedilla: |
| + return DomKey::Dead(0x0327); // combining cedilla |
| case XKB_KEY_dead_ogonek: |
| + return DomKey::Dead(0x0328); // combining ogonek |
| case XKB_KEY_dead_iota: |
| + return DomKey::Dead(0x0345); // combining greek ypogegrammeni |
| + case XKB_KEY_dead_voiced_sound: |
| + return DomKey::Dead(0x3099); // combining voiced sound mark |
| + case XKB_KEY_dead_semivoiced_sound: |
| + return DomKey::Dead(0x309A); // combining semi-voiced sound mark |
| case XKB_KEY_dead_belowdot: |
| + return DomKey::Dead(0x0323); // combining dot below |
| case XKB_KEY_dead_hook: |
| + return DomKey::Dead(0x0309); // combining hook above |
| case XKB_KEY_dead_horn: |
| + return DomKey::Dead(0x031B); // combining horn |
| case XKB_KEY_dead_stroke: |
| + return DomKey::Dead(0x0338); // combining long solidus overlay |
| case XKB_KEY_dead_abovecomma: |
| + return DomKey::Dead(0x0313); // combining comma above |
| case XKB_KEY_dead_abovereversedcomma: |
| + return DomKey::Dead(0x0314); // combining reversed comma above |
| case XKB_KEY_dead_doublegrave: |
| + return DomKey::Dead(0x030F); // combining double grave accent |
| case XKB_KEY_dead_belowring: |
| + return DomKey::Dead(0x0325); // combining ring below |
| case XKB_KEY_dead_belowmacron: |
| + return DomKey::Dead(0x0331); // combining macron below |
| case XKB_KEY_dead_belowcircumflex: |
| + return DomKey::Dead(0x032D); // combining circumflex accent below |
| case XKB_KEY_dead_belowtilde: |
| + return DomKey::Dead(0x0330); // combining tilde below |
| case XKB_KEY_dead_belowbreve: |
| + return DomKey::Dead(0x032E); // combining breve below |
| case XKB_KEY_dead_belowdiaeresis: |
| + return DomKey::Dead(0x0324); // combining diaeresis below |
| case XKB_KEY_dead_invertedbreve: |
| + return DomKey::Dead(0x0311); // combining inverted breve |
| case XKB_KEY_dead_belowcomma: |
| + return DomKey::Dead(0x0326); // combining comma below |
| case XKB_KEY_dead_currency: |
| - return DomKey::DEAD; |
| + return DomKey::Dead(0x00A4); // currency sign |
| + case XKB_KEY_dead_greek: |
| + return DomKey::Dead(0x037E); // greek question mark |
| default: |
| return DomKey::NONE; |
| } |
| @@ -388,9 +427,9 @@ DomKey NonPrintableXKeySymToDomKey(xkb_keysym_t keysym) { |
| DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) { |
| DomKey dom_key = NonPrintableXKeySymToDomKey(keysym); |
| - if (dom_key == DomKey::NONE) |
| - dom_key = CharacterToDomKey(character); |
| - return dom_key; |
| + if (dom_key != DomKey::NONE) |
| + return dom_key; |
| + return character; |
|
Wez
2015/08/13 22:31:48
This means that if we see a Unicode combining-char
|
| } |
| } // namespace ui |