OLD | NEW |
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 Loading... |
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 // combining grave accent |
| 361 return DomKey::DeadKeyFromCombiningCharacter(0x0300); |
356 case XKB_KEY_dead_acute: | 362 case XKB_KEY_dead_acute: |
| 363 // combining acute accent |
| 364 return DomKey::DeadKeyFromCombiningCharacter(0x0301); |
357 case XKB_KEY_dead_circumflex: | 365 case XKB_KEY_dead_circumflex: |
| 366 // combining circumflex accent |
| 367 return DomKey::DeadKeyFromCombiningCharacter(0x0302); |
358 case XKB_KEY_dead_tilde: | 368 case XKB_KEY_dead_tilde: |
| 369 // combining tilde |
| 370 return DomKey::DeadKeyFromCombiningCharacter(0x0303); |
359 case XKB_KEY_dead_macron: | 371 case XKB_KEY_dead_macron: |
| 372 // combining macron |
| 373 return DomKey::DeadKeyFromCombiningCharacter(0x0304); |
360 case XKB_KEY_dead_breve: | 374 case XKB_KEY_dead_breve: |
| 375 // combining breve |
| 376 return DomKey::DeadKeyFromCombiningCharacter(0x0306); |
361 case XKB_KEY_dead_abovedot: | 377 case XKB_KEY_dead_abovedot: |
| 378 // combining dot above |
| 379 return DomKey::DeadKeyFromCombiningCharacter(0x0307); |
362 case XKB_KEY_dead_diaeresis: | 380 case XKB_KEY_dead_diaeresis: |
| 381 // combining diaeresis |
| 382 return DomKey::DeadKeyFromCombiningCharacter(0x0308); |
363 case XKB_KEY_dead_abovering: | 383 case XKB_KEY_dead_abovering: |
| 384 // combining ring above |
| 385 return DomKey::DeadKeyFromCombiningCharacter(0x030A); |
364 case XKB_KEY_dead_doubleacute: | 386 case XKB_KEY_dead_doubleacute: |
| 387 // combining double acute accent |
| 388 return DomKey::DeadKeyFromCombiningCharacter(0x030B); |
365 case XKB_KEY_dead_caron: | 389 case XKB_KEY_dead_caron: |
| 390 // combining caron |
| 391 return DomKey::DeadKeyFromCombiningCharacter(0x030C); |
366 case XKB_KEY_dead_cedilla: | 392 case XKB_KEY_dead_cedilla: |
| 393 // combining cedilla |
| 394 return DomKey::DeadKeyFromCombiningCharacter(0x0327); |
367 case XKB_KEY_dead_ogonek: | 395 case XKB_KEY_dead_ogonek: |
| 396 // combining ogonek |
| 397 return DomKey::DeadKeyFromCombiningCharacter(0x0328); |
368 case XKB_KEY_dead_iota: | 398 case XKB_KEY_dead_iota: |
| 399 // combining greek ypogegrammeni |
| 400 return DomKey::DeadKeyFromCombiningCharacter(0x0345); |
| 401 case XKB_KEY_dead_voiced_sound: |
| 402 // combining voiced sound mark |
| 403 return DomKey::DeadKeyFromCombiningCharacter(0x3099); |
| 404 case XKB_KEY_dead_semivoiced_sound: |
| 405 // combining semi-voiced sound mark |
| 406 return DomKey::DeadKeyFromCombiningCharacter(0x309A); |
369 case XKB_KEY_dead_belowdot: | 407 case XKB_KEY_dead_belowdot: |
| 408 // combining dot below |
| 409 return DomKey::DeadKeyFromCombiningCharacter(0x0323); |
370 case XKB_KEY_dead_hook: | 410 case XKB_KEY_dead_hook: |
| 411 // combining hook above |
| 412 return DomKey::DeadKeyFromCombiningCharacter(0x0309); |
371 case XKB_KEY_dead_horn: | 413 case XKB_KEY_dead_horn: |
| 414 // combining horn |
| 415 return DomKey::DeadKeyFromCombiningCharacter(0x031B); |
372 case XKB_KEY_dead_stroke: | 416 case XKB_KEY_dead_stroke: |
| 417 // combining long solidus overlay |
| 418 return DomKey::DeadKeyFromCombiningCharacter(0x0338); |
373 case XKB_KEY_dead_abovecomma: | 419 case XKB_KEY_dead_abovecomma: |
| 420 // combining comma above |
| 421 return DomKey::DeadKeyFromCombiningCharacter(0x0313); |
374 case XKB_KEY_dead_abovereversedcomma: | 422 case XKB_KEY_dead_abovereversedcomma: |
| 423 // combining reversed comma above |
| 424 return DomKey::DeadKeyFromCombiningCharacter(0x0314); |
375 case XKB_KEY_dead_doublegrave: | 425 case XKB_KEY_dead_doublegrave: |
| 426 // combining double grave accent |
| 427 return DomKey::DeadKeyFromCombiningCharacter(0x030F); |
376 case XKB_KEY_dead_belowring: | 428 case XKB_KEY_dead_belowring: |
| 429 // combining ring below |
| 430 return DomKey::DeadKeyFromCombiningCharacter(0x0325); |
377 case XKB_KEY_dead_belowmacron: | 431 case XKB_KEY_dead_belowmacron: |
| 432 // combining macron below |
| 433 return DomKey::DeadKeyFromCombiningCharacter(0x0331); |
378 case XKB_KEY_dead_belowcircumflex: | 434 case XKB_KEY_dead_belowcircumflex: |
| 435 // combining circumflex accent below |
| 436 return DomKey::DeadKeyFromCombiningCharacter(0x032D); |
379 case XKB_KEY_dead_belowtilde: | 437 case XKB_KEY_dead_belowtilde: |
| 438 // combining tilde below |
| 439 return DomKey::DeadKeyFromCombiningCharacter(0x0330); |
380 case XKB_KEY_dead_belowbreve: | 440 case XKB_KEY_dead_belowbreve: |
| 441 // combining breve below |
| 442 return DomKey::DeadKeyFromCombiningCharacter(0x032E); |
381 case XKB_KEY_dead_belowdiaeresis: | 443 case XKB_KEY_dead_belowdiaeresis: |
| 444 // combining diaeresis below |
| 445 return DomKey::DeadKeyFromCombiningCharacter(0x0324); |
382 case XKB_KEY_dead_invertedbreve: | 446 case XKB_KEY_dead_invertedbreve: |
| 447 // combining inverted breve |
| 448 return DomKey::DeadKeyFromCombiningCharacter(0x0311); |
383 case XKB_KEY_dead_belowcomma: | 449 case XKB_KEY_dead_belowcomma: |
| 450 // combining comma below |
| 451 return DomKey::DeadKeyFromCombiningCharacter(0x0326); |
384 case XKB_KEY_dead_currency: | 452 case XKB_KEY_dead_currency: |
385 return DomKey::DEAD; | 453 // currency sign |
| 454 return DomKey::DeadKeyFromCombiningCharacter(0x00A4); |
| 455 case XKB_KEY_dead_greek: |
| 456 // greek question mark |
| 457 return DomKey::DeadKeyFromCombiningCharacter(0x037E); |
386 default: | 458 default: |
387 return DomKey::NONE; | 459 return DomKey::NONE; |
388 } | 460 } |
389 } | 461 } |
390 | 462 |
391 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) { | 463 DomKey XKeySymToDomKey(xkb_keysym_t keysym, base::char16 character) { |
392 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym); | 464 DomKey dom_key = NonPrintableXKeySymToDomKey(keysym); |
393 if (dom_key == DomKey::NONE) | 465 if (dom_key != DomKey::NONE) |
394 dom_key = CharacterToDomKey(character); | 466 return dom_key; |
395 return dom_key; | 467 return DomKey::FromCharacter(character); |
396 } | 468 } |
397 | 469 |
398 } // namespace ui | 470 } // namespace ui |
OLD | NEW |