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 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 |
OLD | NEW |