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 |