Chromium Code Reviews| 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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 |
| OLD | NEW |