Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(601)

Unified Diff: ui/events/keycodes/keyboard_code_conversion_xkb.cc

Issue 1284433002: Revise ui::DomKey to unify character and non-character codes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698