| 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 b84988a1ed993d59308dff5d6a890010cb571c38..6e901e6aa4a0074a017fcf93dffef9582903d8f7 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) {
|
| @@ -353,36 +357,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;
|
| }
|
| @@ -390,9 +429,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 DomKey::FromCharacter(character);
|
| }
|
|
|
| } // namespace ui
|
|
|