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

Side by Side Diff: ui/events/keycodes/keyboard_code_conversion_xkb.cc

Issue 1103263004: Set ui::KeyEvent::key_ (DOM Level 3 key) under X11. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address review comments (wez@) Created 5 years, 7 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/ozone/layout/xkb/xkb_keyboard_code_conversion.h" 5 #include "ui/events/keycodes/keyboard_code_conversion_xkb.h"
6 6
7 #include "ui/events/keycodes/dom3/dom_key.h" 7 #include "ui/events/keycodes/dom3/dom_key.h"
8 #include "ui/events/keycodes/keyboard_code_conversion.h"
8 9
9 namespace ui { 10 namespace ui {
10 11
11 DomKey NonPrintableXkbKeySymToDomKey(xkb_keysym_t keysym) { 12 DomKey NonPrintableXKeySymToDomKey(xkb_keysym_t keysym) {
12 switch (keysym) { 13 switch (keysym) {
13 case XKB_KEY_BackSpace: 14 case XKB_KEY_BackSpace:
14 return DomKey::BACKSPACE; 15 return DomKey::BACKSPACE;
15 case XKB_KEY_Tab: 16 case XKB_KEY_Tab:
16 case XKB_KEY_KP_Tab: 17 case XKB_KEY_KP_Tab:
17 case XKB_KEY_ISO_Left_Tab: 18 case XKB_KEY_ISO_Left_Tab:
18 return DomKey::TAB; 19 return DomKey::TAB;
19 case XKB_KEY_Clear: 20 case XKB_KEY_Clear:
20 case XKB_KEY_KP_Begin: 21 case XKB_KEY_KP_Begin:
21 case XKB_KEY_XF86Clear: 22 case XKB_KEY_XF86Clear:
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 case XKB_KEY_dead_belowdiaeresis: 377 case XKB_KEY_dead_belowdiaeresis:
377 case XKB_KEY_dead_invertedbreve: 378 case XKB_KEY_dead_invertedbreve:
378 case XKB_KEY_dead_belowcomma: 379 case XKB_KEY_dead_belowcomma:
379 case XKB_KEY_dead_currency: 380 case XKB_KEY_dead_currency:
380 return DomKey::DEAD; 381 return DomKey::DEAD;
381 default: 382 default:
382 return DomKey::NONE; 383 return DomKey::NONE;
383 } 384 }
384 } 385 }
385 386
386 base::char16 DeadXkbKeySymToCombiningCharacter(xkb_keysym_t keysym) { 387 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) {
387 switch (keysym) { 388 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym);
388 case XKB_KEY_dead_grave: 389 if (dom_key == DomKey::NONE)
389 return 0x0768; // combining grave accent 390 dom_key = CharacterToDomKey(character);
390 case XKB_KEY_dead_acute: 391 return dom_key;
391 return 0x0769; // combining acute accent
392 case XKB_KEY_dead_circumflex:
393 return 0x0770; // combining circumflex accent
394 case XKB_KEY_dead_tilde:
395 return 0x0771; // combining tilde
396 case XKB_KEY_dead_macron:
397 return 0x0772; // combining macron
398 case XKB_KEY_dead_breve:
399 return 0x0774; // combining breve
400 case XKB_KEY_dead_abovedot:
401 return 0x0775; // combining dot above
402 case XKB_KEY_dead_diaeresis:
403 return 0x0776; // combining diaeresis
404 case XKB_KEY_dead_abovering:
405 return 0x0778; // combining ring above
406 case XKB_KEY_dead_doubleacute:
407 return 0x0779; // combining double acute accent
408 case XKB_KEY_dead_caron:
409 return 0x0780; // combining caron
410 case XKB_KEY_dead_cedilla:
411 return 0x0807; // combining cedilla
412 case XKB_KEY_dead_ogonek:
413 return 0x0808; // combining ogonek
414 case XKB_KEY_dead_iota:
415 return 0x0837; // combining greek ypogegrammeni
416 case XKB_KEY_dead_belowdot:
417 return 0x0803; // combining dot below
418 case XKB_KEY_dead_hook:
419 return 0x0777; // combining hook above
420 case XKB_KEY_dead_horn:
421 return 0x0795; // combining horn
422 case XKB_KEY_dead_stroke:
423 return 0x0824; // combining long solidus overlay
424 case XKB_KEY_dead_abovecomma:
425 return 0x0787; // combining comma above
426 case XKB_KEY_dead_abovereversedcomma:
427 return 0x0788; // combining reversed comma above
428 case XKB_KEY_dead_doublegrave:
429 return 0x0783; // combining double grave accent
430 case XKB_KEY_dead_belowring:
431 return 0x0805; // combining ring below
432 case XKB_KEY_dead_belowmacron:
433 return 0x0817; // combining macron below
434 case XKB_KEY_dead_belowcircumflex:
435 return 0x0813; // combining circumflex accent below
436 case XKB_KEY_dead_belowtilde:
437 return 0x0816; // combining tilde below
438 case XKB_KEY_dead_belowbreve:
439 return 0x0814; // combining breve below
440 case XKB_KEY_dead_belowdiaeresis:
441 return 0x0804; // combining diaeresis below
442 case XKB_KEY_dead_invertedbreve:
443 return 0x0785; // combining inverted breve
444 case XKB_KEY_dead_belowcomma:
445 return 0x0806; // combining comma below
446 case XKB_KEY_dead_currency:
447 return 0x0164; // currency sign
448 default:
449 return 0;
450 }
451 } 392 }
452 393
453 } // namespace ui 394 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698