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 |