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

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: cleanup 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 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 return DomKey::SHIFT_LEVEL5; 350 return DomKey::SHIFT_LEVEL5;
347 case XKB_KEY_ISO_Next_Group: 351 case XKB_KEY_ISO_Next_Group:
348 return DomKey::GROUP_NEXT; 352 return DomKey::GROUP_NEXT;
349 case XKB_KEY_ISO_Prev_Group: 353 case XKB_KEY_ISO_Prev_Group:
350 return DomKey::GROUP_PREVIOUS; 354 return DomKey::GROUP_PREVIOUS;
351 case XKB_KEY_ISO_First_Group: 355 case XKB_KEY_ISO_First_Group:
352 return DomKey::GROUP_FIRST; 356 return DomKey::GROUP_FIRST;
353 case XKB_KEY_ISO_Last_Group: 357 case XKB_KEY_ISO_Last_Group:
354 return DomKey::GROUP_LAST; 358 return DomKey::GROUP_LAST;
355 case XKB_KEY_dead_grave: 359 case XKB_KEY_dead_grave:
360 return DomKey::Dead(0x0300); // combining grave accent
356 case XKB_KEY_dead_acute: 361 case XKB_KEY_dead_acute:
362 return DomKey::Dead(0x0301); // combining acute accent
357 case XKB_KEY_dead_circumflex: 363 case XKB_KEY_dead_circumflex:
364 return DomKey::Dead(0x0302); // combining circumflex accent
358 case XKB_KEY_dead_tilde: 365 case XKB_KEY_dead_tilde:
366 return DomKey::Dead(0x0303); // combining tilde
359 case XKB_KEY_dead_macron: 367 case XKB_KEY_dead_macron:
368 return DomKey::Dead(0x0304); // combining macron
360 case XKB_KEY_dead_breve: 369 case XKB_KEY_dead_breve:
370 return DomKey::Dead(0x0306); // combining breve
361 case XKB_KEY_dead_abovedot: 371 case XKB_KEY_dead_abovedot:
372 return DomKey::Dead(0x0307); // combining dot above
362 case XKB_KEY_dead_diaeresis: 373 case XKB_KEY_dead_diaeresis:
374 return DomKey::Dead(0x0308); // combining diaeresis
363 case XKB_KEY_dead_abovering: 375 case XKB_KEY_dead_abovering:
376 return DomKey::Dead(0x030A); // combining ring above
364 case XKB_KEY_dead_doubleacute: 377 case XKB_KEY_dead_doubleacute:
378 return DomKey::Dead(0x030B); // combining double acute accent
365 case XKB_KEY_dead_caron: 379 case XKB_KEY_dead_caron:
380 return DomKey::Dead(0x030C); // combining caron
366 case XKB_KEY_dead_cedilla: 381 case XKB_KEY_dead_cedilla:
382 return DomKey::Dead(0x0327); // combining cedilla
367 case XKB_KEY_dead_ogonek: 383 case XKB_KEY_dead_ogonek:
384 return DomKey::Dead(0x0328); // combining ogonek
368 case XKB_KEY_dead_iota: 385 case XKB_KEY_dead_iota:
386 return DomKey::Dead(0x0345); // combining greek ypogegrammeni
387 case XKB_KEY_dead_voiced_sound:
388 return DomKey::Dead(0x3099); // combining voiced sound mark
389 case XKB_KEY_dead_semivoiced_sound:
390 return DomKey::Dead(0x309A); // combining semi-voiced sound mark
369 case XKB_KEY_dead_belowdot: 391 case XKB_KEY_dead_belowdot:
392 return DomKey::Dead(0x0323); // combining dot below
370 case XKB_KEY_dead_hook: 393 case XKB_KEY_dead_hook:
394 return DomKey::Dead(0x0309); // combining hook above
371 case XKB_KEY_dead_horn: 395 case XKB_KEY_dead_horn:
396 return DomKey::Dead(0x031B); // combining horn
372 case XKB_KEY_dead_stroke: 397 case XKB_KEY_dead_stroke:
398 return DomKey::Dead(0x0338); // combining long solidus overlay
373 case XKB_KEY_dead_abovecomma: 399 case XKB_KEY_dead_abovecomma:
400 return DomKey::Dead(0x0313); // combining comma above
374 case XKB_KEY_dead_abovereversedcomma: 401 case XKB_KEY_dead_abovereversedcomma:
402 return DomKey::Dead(0x0314); // combining reversed comma above
375 case XKB_KEY_dead_doublegrave: 403 case XKB_KEY_dead_doublegrave:
404 return DomKey::Dead(0x030F); // combining double grave accent
376 case XKB_KEY_dead_belowring: 405 case XKB_KEY_dead_belowring:
406 return DomKey::Dead(0x0325); // combining ring below
377 case XKB_KEY_dead_belowmacron: 407 case XKB_KEY_dead_belowmacron:
408 return DomKey::Dead(0x0331); // combining macron below
378 case XKB_KEY_dead_belowcircumflex: 409 case XKB_KEY_dead_belowcircumflex:
410 return DomKey::Dead(0x032D); // combining circumflex accent below
379 case XKB_KEY_dead_belowtilde: 411 case XKB_KEY_dead_belowtilde:
412 return DomKey::Dead(0x0330); // combining tilde below
380 case XKB_KEY_dead_belowbreve: 413 case XKB_KEY_dead_belowbreve:
414 return DomKey::Dead(0x032E); // combining breve below
381 case XKB_KEY_dead_belowdiaeresis: 415 case XKB_KEY_dead_belowdiaeresis:
416 return DomKey::Dead(0x0324); // combining diaeresis below
382 case XKB_KEY_dead_invertedbreve: 417 case XKB_KEY_dead_invertedbreve:
418 return DomKey::Dead(0x0311); // combining inverted breve
383 case XKB_KEY_dead_belowcomma: 419 case XKB_KEY_dead_belowcomma:
420 return DomKey::Dead(0x0326); // combining comma below
384 case XKB_KEY_dead_currency: 421 case XKB_KEY_dead_currency:
385 return DomKey::DEAD; 422 return DomKey::Dead(0x00A4); // currency sign
423 case XKB_KEY_dead_greek:
424 return DomKey::Dead(0x037E); // greek question mark
386 default: 425 default:
387 return DomKey::NONE; 426 return DomKey::NONE;
388 } 427 }
389 } 428 }
390 429
391 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) { 430 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) {
392 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym); 431 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym);
393 if (dom_key == DomKey::NONE) 432 if (dom_key != DomKey::NONE)
394 dom_key = CharacterToDomKey(character); 433 return dom_key;
395 return dom_key; 434 return DomKey::FromCharacter(character);
396 } 435 }
397 436
398 } // namespace ui 437 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698