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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/keycodes/keyboard_code_conversion_xkb.h" 5 #include "ui/events/keycodes/keyboard_code_conversion_xkb.h"
6 6
7 #include "ui/events/keycodes/dom/dom_key.h" 7 #include "ui/events/keycodes/dom/dom_key.h"
8 #include "ui/events/keycodes/keyboard_code_conversion.h" 8 #include "ui/events/keycodes/keyboard_code_conversion.h"
9 9
10 #ifndef XK_dead_greek
11 #define XK_dead_greek 0xfe8c
12 #endif
13
10 namespace ui { 14 namespace ui {
11 15
12 DomKey NonPrintableXKeySymToDomKey(xkb_keysym_t keysym) { 16 DomKey NonPrintableXKeySymToDomKey(xkb_keysym_t keysym) {
13 switch (keysym) { 17 switch (keysym) {
14 case XKB_KEY_BackSpace: 18 case XKB_KEY_BackSpace:
15 return DomKey::BACKSPACE; 19 return DomKey::BACKSPACE;
16 case XKB_KEY_Tab: 20 case XKB_KEY_Tab:
17 case XKB_KEY_KP_Tab: 21 case XKB_KEY_KP_Tab:
18 case XKB_KEY_ISO_Left_Tab: 22 case XKB_KEY_ISO_Left_Tab:
19 return DomKey::TAB; 23 return DomKey::TAB;
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 return DomKey::SHIFT_LEVEL5; 348 return DomKey::SHIFT_LEVEL5;
345 case XKB_KEY_ISO_Next_Group: 349 case XKB_KEY_ISO_Next_Group:
346 return DomKey::GROUP_NEXT; 350 return DomKey::GROUP_NEXT;
347 case XKB_KEY_ISO_Prev_Group: 351 case XKB_KEY_ISO_Prev_Group:
348 return DomKey::GROUP_PREVIOUS; 352 return DomKey::GROUP_PREVIOUS;
349 case XKB_KEY_ISO_First_Group: 353 case XKB_KEY_ISO_First_Group:
350 return DomKey::GROUP_FIRST; 354 return DomKey::GROUP_FIRST;
351 case XKB_KEY_ISO_Last_Group: 355 case XKB_KEY_ISO_Last_Group:
352 return DomKey::GROUP_LAST; 356 return DomKey::GROUP_LAST;
353 case XKB_KEY_dead_grave: 357 case XKB_KEY_dead_grave:
358 return DomKey::Dead(0x0300); // combining grave accent
354 case XKB_KEY_dead_acute: 359 case XKB_KEY_dead_acute:
360 return DomKey::Dead(0x0301); // combining acute accent
355 case XKB_KEY_dead_circumflex: 361 case XKB_KEY_dead_circumflex:
362 return DomKey::Dead(0x0302); // combining circumflex accent
356 case XKB_KEY_dead_tilde: 363 case XKB_KEY_dead_tilde:
364 return DomKey::Dead(0x0303); // combining tilde
357 case XKB_KEY_dead_macron: 365 case XKB_KEY_dead_macron:
366 return DomKey::Dead(0x0304); // combining macron
358 case XKB_KEY_dead_breve: 367 case XKB_KEY_dead_breve:
368 return DomKey::Dead(0x0306); // combining breve
359 case XKB_KEY_dead_abovedot: 369 case XKB_KEY_dead_abovedot:
370 return DomKey::Dead(0x0307); // combining dot above
360 case XKB_KEY_dead_diaeresis: 371 case XKB_KEY_dead_diaeresis:
372 return DomKey::Dead(0x0308); // combining diaeresis
361 case XKB_KEY_dead_abovering: 373 case XKB_KEY_dead_abovering:
374 return DomKey::Dead(0x030A); // combining ring above
362 case XKB_KEY_dead_doubleacute: 375 case XKB_KEY_dead_doubleacute:
376 return DomKey::Dead(0x030B); // combining double acute accent
363 case XKB_KEY_dead_caron: 377 case XKB_KEY_dead_caron:
378 return DomKey::Dead(0x030C); // combining caron
364 case XKB_KEY_dead_cedilla: 379 case XKB_KEY_dead_cedilla:
380 return DomKey::Dead(0x0327); // combining cedilla
365 case XKB_KEY_dead_ogonek: 381 case XKB_KEY_dead_ogonek:
382 return DomKey::Dead(0x0328); // combining ogonek
366 case XKB_KEY_dead_iota: 383 case XKB_KEY_dead_iota:
384 return DomKey::Dead(0x0345); // combining greek ypogegrammeni
385 case XKB_KEY_dead_voiced_sound:
386 return DomKey::Dead(0x3099); // combining voiced sound mark
387 case XKB_KEY_dead_semivoiced_sound:
388 return DomKey::Dead(0x309A); // combining semi-voiced sound mark
367 case XKB_KEY_dead_belowdot: 389 case XKB_KEY_dead_belowdot:
390 return DomKey::Dead(0x0323); // combining dot below
368 case XKB_KEY_dead_hook: 391 case XKB_KEY_dead_hook:
392 return DomKey::Dead(0x0309); // combining hook above
369 case XKB_KEY_dead_horn: 393 case XKB_KEY_dead_horn:
394 return DomKey::Dead(0x031B); // combining horn
370 case XKB_KEY_dead_stroke: 395 case XKB_KEY_dead_stroke:
396 return DomKey::Dead(0x0338); // combining long solidus overlay
371 case XKB_KEY_dead_abovecomma: 397 case XKB_KEY_dead_abovecomma:
398 return DomKey::Dead(0x0313); // combining comma above
372 case XKB_KEY_dead_abovereversedcomma: 399 case XKB_KEY_dead_abovereversedcomma:
400 return DomKey::Dead(0x0314); // combining reversed comma above
373 case XKB_KEY_dead_doublegrave: 401 case XKB_KEY_dead_doublegrave:
402 return DomKey::Dead(0x030F); // combining double grave accent
374 case XKB_KEY_dead_belowring: 403 case XKB_KEY_dead_belowring:
404 return DomKey::Dead(0x0325); // combining ring below
375 case XKB_KEY_dead_belowmacron: 405 case XKB_KEY_dead_belowmacron:
406 return DomKey::Dead(0x0331); // combining macron below
376 case XKB_KEY_dead_belowcircumflex: 407 case XKB_KEY_dead_belowcircumflex:
408 return DomKey::Dead(0x032D); // combining circumflex accent below
377 case XKB_KEY_dead_belowtilde: 409 case XKB_KEY_dead_belowtilde:
410 return DomKey::Dead(0x0330); // combining tilde below
378 case XKB_KEY_dead_belowbreve: 411 case XKB_KEY_dead_belowbreve:
412 return DomKey::Dead(0x032E); // combining breve below
379 case XKB_KEY_dead_belowdiaeresis: 413 case XKB_KEY_dead_belowdiaeresis:
414 return DomKey::Dead(0x0324); // combining diaeresis below
380 case XKB_KEY_dead_invertedbreve: 415 case XKB_KEY_dead_invertedbreve:
416 return DomKey::Dead(0x0311); // combining inverted breve
381 case XKB_KEY_dead_belowcomma: 417 case XKB_KEY_dead_belowcomma:
418 return DomKey::Dead(0x0326); // combining comma below
382 case XKB_KEY_dead_currency: 419 case XKB_KEY_dead_currency:
383 return DomKey::DEAD; 420 return DomKey::Dead(0x00A4); // currency sign
421 case XKB_KEY_dead_greek:
422 return DomKey::Dead(0x037E); // greek question mark
384 default: 423 default:
385 return DomKey::NONE; 424 return DomKey::NONE;
386 } 425 }
387 } 426 }
388 427
389 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) { 428 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) {
390 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym); 429 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym);
391 if (dom_key == DomKey::NONE) 430 if (dom_key != DomKey::NONE)
392 dom_key = CharacterToDomKey(character); 431 return dom_key;
393 return dom_key; 432 return character;
Wez 2015/08/13 22:31:48 This means that if we see a Unicode combining-char
394 } 433 }
395 434
396 } // namespace ui 435 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698