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

Side by Side Diff: ui/events/keycodes/keyboard_code_conversion_x.cc

Issue 270633012: Add native X11 testing to chromeos::EventRewriter unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check for supported keycode for final native test Created 6 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_x.h" 5 #include "ui/events/keycodes/keyboard_code_conversion_x.h"
6 6
7 #define XK_3270 // for XK_3270_BackTab 7 #define XK_3270 // for XK_3270_BackTab
8 #include <X11/keysym.h> 8 #include <X11/keysym.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #include <X11/Xutil.h> 10 #include <X11/Xutil.h>
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 char buf[6]; 435 char buf[6];
436 int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL); 436 int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL);
437 DCHECK_LE(bytes_written, 6); 437 DCHECK_LE(bytes_written, 6);
438 438
439 base::string16 result; 439 base::string16 result;
440 return (bytes_written > 0 && base::UTF8ToUTF16(buf, bytes_written, &result) && 440 return (bytes_written > 0 && base::UTF8ToUTF16(buf, bytes_written, &result) &&
441 result.length() == 1) ? result[0] : 0; 441 result.length() == 1) ? result[0] : 0;
442 } 442 }
443 443
444 unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) { 444 unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) {
445 // This function assumes that X11 is using evdev-based keycodes.
445 static const unsigned int kHardwareKeycodeMap[] = { 446 static const unsigned int kHardwareKeycodeMap[] = {
446 0, // 0x00: 447 // This table covers the core 105-key keyboard.
447 0, // 0x01: 448 0, // 0x00:
448 0, // 0x02: 449 0, // 0x01:
449 0, // 0x03: 450 0, // 0x02:
450 0, // 0x04: 451 0, // 0x03:
451 0, // 0x05: 452 0, // 0x04:
452 0, // 0x06: 453 0, // 0x05:
453 0, // 0x07: 454 0, // 0x06:
454 0, // 0x08: 455 0, // XKB evdev (XKB - 8) X KeySym
455 XK_Escape, // 0x09: XK_Escape 456 0, // === =============== ======
456 XK_1, // 0x0A: XK_1 457 XK_Escape, // 0x09: KEY_ESC Escape
457 XK_2, // 0x0B: XK_2 458 XK_1, // 0x0A: KEY_1 1
458 XK_3, // 0x0C: XK_3 459 XK_2, // 0x0B: KEY_2 2
459 XK_4, // 0x0D: XK_4 460 XK_3, // 0x0C: KEY_3 3
460 XK_5, // 0x0E: XK_5 461 XK_4, // 0x0D: KEY_4 4
461 XK_6, // 0x0F: XK_6 462 XK_5, // 0x0E: KEY_5 5
462 XK_7, // 0x10: XK_7 463 XK_6, // 0x0F: KEY_6 6
463 XK_8, // 0x11: XK_8 464 XK_7, // 0x10: KEY_7 7
464 XK_9, // 0x12: XK_9 465 XK_8, // 0x11: KEY_8 8
465 XK_0, // 0x13: XK_0 466 XK_9, // 0x12: KEY_9 9
466 XK_minus, // 0x14: XK_minus 467 XK_0, // 0x13: KEY_0 0
467 XK_equal, // 0x15: XK_equal 468 XK_minus, // 0x14: KEY_MINUS minus
468 XK_BackSpace, // 0x16: XK_BackSpace 469 XK_equal, // 0x15: KEY_EQUAL equal
469 XK_Tab, // 0x17: XK_Tab 470 XK_BackSpace, // 0x16: KEY_BACKSPACE BackSpace
470 XK_q, // 0x18: XK_q 471 XK_Tab, // 0x17: KEY_TAB Tab
471 XK_w, // 0x19: XK_w 472 XK_q, // 0x18: KEY_Q q
472 XK_e, // 0x1A: XK_e 473 XK_w, // 0x19: KEY_W w
473 XK_r, // 0x1B: XK_r 474 XK_e, // 0x1A: KEY_E e
474 XK_t, // 0x1C: XK_t 475 XK_r, // 0x1B: KEY_R r
475 XK_y, // 0x1D: XK_y 476 XK_t, // 0x1C: KEY_T t
476 XK_u, // 0x1E: XK_u 477 XK_y, // 0x1D: KEY_Y y
477 XK_i, // 0x1F: XK_i 478 XK_u, // 0x1E: KEY_U u
478 XK_o, // 0x20: XK_o 479 XK_i, // 0x1F: KEY_I i
479 XK_p, // 0x21: XK_p 480 XK_o, // 0x20: KEY_O o
480 XK_bracketleft, // 0x22: XK_bracketleft 481 XK_p, // 0x21: KEY_P p
481 XK_bracketright, // 0x23: XK_bracketright 482 XK_bracketleft, // 0x22: KEY_LEFTBRACE bracketleft
482 XK_Return, // 0x24: XK_Return 483 XK_bracketright, // 0x23: KEY_RIGHTBRACE bracketright
483 XK_Control_L, // 0x25: XK_Control_L 484 XK_Return, // 0x24: KEY_ENTER Return
484 XK_a, // 0x26: XK_a 485 XK_Control_L, // 0x25: KEY_LEFTCTRL Control_L
485 XK_s, // 0x27: XK_s 486 XK_a, // 0x26: KEY_A a
486 XK_d, // 0x28: XK_d 487 XK_s, // 0x27: KEY_S s
487 XK_f, // 0x29: XK_f 488 XK_d, // 0x28: KEY_D d
488 XK_g, // 0x2A: XK_g 489 XK_f, // 0x29: KEY_F f
489 XK_h, // 0x2B: XK_h 490 XK_g, // 0x2A: KEY_G g
490 XK_j, // 0x2C: XK_j 491 XK_h, // 0x2B: KEY_H h
491 XK_k, // 0x2D: XK_k 492 XK_j, // 0x2C: KEY_J j
492 XK_l, // 0x2E: XK_l 493 XK_k, // 0x2D: KEY_K k
493 XK_semicolon, // 0x2F: XK_semicolon 494 XK_l, // 0x2E: KEY_L l
494 XK_apostrophe, // 0x30: XK_apostrophe 495 XK_semicolon, // 0x2F: KEY_SEMICOLON semicolon
495 XK_grave, // 0x31: XK_grave 496 XK_apostrophe, // 0x30: KEY_APOSTROPHE apostrophe
496 XK_Shift_L, // 0x32: XK_Shift_L 497 XK_grave, // 0x31: KEY_GRAVE grave
497 XK_backslash, // 0x33: XK_backslash 498 XK_Shift_L, // 0x32: KEY_LEFTSHIFT Shift_L
498 XK_z, // 0x34: XK_z 499 XK_backslash, // 0x33: KEY_BACKSLASH backslash
499 XK_x, // 0x35: XK_x 500 XK_z, // 0x34: KEY_Z z
500 XK_c, // 0x36: XK_c 501 XK_x, // 0x35: KEY_X x
501 XK_v, // 0x37: XK_v 502 XK_c, // 0x36: KEY_C c
502 XK_b, // 0x38: XK_b 503 XK_v, // 0x37: KEY_V v
503 XK_n, // 0x39: XK_n 504 XK_b, // 0x38: KEY_B b
504 XK_m, // 0x3A: XK_m 505 XK_n, // 0x39: KEY_N n
505 XK_comma, // 0x3B: XK_comma 506 XK_m, // 0x3A: KEY_M m
506 XK_period, // 0x3C: XK_period 507 XK_comma, // 0x3B: KEY_COMMA comma
507 XK_slash, // 0x3D: XK_slash 508 XK_period, // 0x3C: KEY_DOT period
508 XK_Shift_R, // 0x3E: XK_Shift_R 509 XK_slash, // 0x3D: KEY_SLASH slash
509 0, // 0x3F: XK_KP_Multiply 510 XK_Shift_R, // 0x3E: KEY_RIGHTSHIFT Shift_R
510 XK_Alt_L, // 0x40: XK_Alt_L 511 0, // 0x3F: KEY_KPASTERISK KP_Multiply
511 XK_space, // 0x41: XK_space 512 XK_Alt_L, // 0x40: KEY_LEFTALT Alt_L
512 XK_Caps_Lock, // 0x42: XK_Caps_Lock 513 XK_space, // 0x41: KEY_SPACE space
513 XK_F1, // 0x43: XK_F1 514 XK_Caps_Lock, // 0x42: KEY_CAPSLOCK Caps_Lock
514 XK_F2, // 0x44: XK_F2 515 XK_F1, // 0x43: KEY_F1 F1
515 XK_F3, // 0x45: XK_F3 516 XK_F2, // 0x44: KEY_F2 F2
516 XK_F4, // 0x46: XK_F4 517 XK_F3, // 0x45: KEY_F3 F3
517 XK_F5, // 0x47: XK_F5 518 XK_F4, // 0x46: KEY_F4 F4
518 XK_F6, // 0x48: XK_F6 519 XK_F5, // 0x47: KEY_F5 F5
519 XK_F7, // 0x49: XK_F7 520 XK_F6, // 0x48: KEY_F6 F6
520 XK_F8, // 0x4A: XK_F8 521 XK_F7, // 0x49: KEY_F7 F7
521 XK_F9, // 0x4B: XK_F9 522 XK_F8, // 0x4A: KEY_F8 F8
522 XK_F10, // 0x4C: XK_F10 523 XK_F9, // 0x4B: KEY_F9 F9
523 XK_Num_Lock, // 0x4D: XK_Num_Lock 524 XK_F10, // 0x4C: KEY_F10 F10
524 XK_Scroll_Lock, // 0x4E: XK_Scroll_Lock 525 XK_Num_Lock, // 0x4D: KEY_NUMLOCK Num_Lock
526 XK_Scroll_Lock, // 0x4E: KEY_SCROLLLOCK Scroll_Lock
527 XK_KP_7, // 0x4F: KEY_KP7 KP_7
528 XK_KP_8, // 0x50: KEY_KP8 KP_8
529 XK_KP_9, // 0x51: KEY_KP9 KP_9
530 XK_KP_Subtract, // 0x52: KEY_KPMINUS KP_Subtract
531 XK_KP_4, // 0x53: KEY_KP4 KP_4
532 XK_KP_5, // 0x54: KEY_KP5 KP_5
533 XK_KP_6, // 0x55: KEY_KP6 KP_6
534 XK_KP_Add, // 0x56: KEY_KPPLUS KP_Add
535 XK_KP_1, // 0x57: KEY_KP1 KP_1
536 XK_KP_2, // 0x58: KEY_KP2 KP_2
537 XK_KP_3, // 0x59: KEY_KP3 KP_3
538 XK_KP_0, // 0x5A: KEY_KP0 KP_0
539 XK_KP_Decimal, // 0x5B: KEY_KPDOT KP_Decimal
540 0, // 0x5C:
541 XK_Zenkaku_Hankaku, // 0x5D: KEY_ZENKAKUHANKAKU Zenkaku_Hankaku
542 XK_backslash, // 0x5E: KEY_102ND backslash
543 XK_F11, // 0x5F: KEY_F11 F11
544 XK_F12, // 0x60: KEY_F12 F12
545 XK_Romaji, // 0x61: KEY_RO Romaji
546 XK_Katakana, // 0x62: KEY_KATAKANA Katakana
547 XK_Hiragana, // 0x63: KEY_HIRAGANA Hiragana
548 XK_Henkan, // 0x64: KEY_HENKAN Henkan
549 XK_Hiragana_Katakana, // 0x65: KEY_KATAKANAHIRAGANA Hiragana_Katakana
550 XK_Muhenkan, // 0x66: KEY_MUHENKAN Muhenkan
551 XK_KP_Separator, // 0x67: KEY_KPJPCOMMA KP_Separator
552 XK_KP_Enter, // 0x68: KEY_KPENTER KP_Enter
553 XK_Control_R, // 0x69: KEY_RIGHTCTRL Control_R
554 XK_KP_Divide, // 0x6A: KEY_KPSLASH KP_Divide
555 XK_Print, // 0x6B: KEY_SYSRQ Print
556 XK_Alt_R, // 0x6C: KEY_RIGHTALT Alt_R
557 XK_Linefeed, // 0x6D: KEY_LINEFEED Linefeed
558 XK_Home, // 0x6E: KEY_HOME Home
559 XK_Up, // 0x6F: KEY_UP Up
560 XK_Page_Up, // 0x70: KEY_PAGEUP Page_Up
561 XK_Left, // 0x71: KEY_LEFT Left
562 XK_Right, // 0x72: KEY_RIGHT Right
563 XK_End, // 0x73: KEY_END End
564 XK_Down, // 0x74: KEY_DOWN Down
565 XK_Page_Down, // 0x75: KEY_PAGEDOWN Page_Down
566 XK_Insert, // 0x76: KEY_INSERT Insert
567 XK_Delete, // 0x77: KEY_DELETE Delete
568 0, // 0x78: KEY_MACRO
569 XF86XK_AudioMute, // 0x79: KEY_MUTE XF86AudioMute
570 XF86XK_AudioLowerVolume, // 0x7A: KEY_VOLUMEDOWN XF86AudioLowerVolume
571 XF86XK_AudioRaiseVolume, // 0x7B: KEY_VOLUMEUP XF86AudioRaiseVolume
572 XF86XK_PowerOff, // 0x7C: KEY_POWER XF86PowerOff
573 XK_KP_Equal, // 0x7D: KEY_KPEQUAL KP_Equal
574 XK_plusminus, // 0x7E: KEY_KPPLUSMINUS plusminus
575 XK_Pause, // 0x7F: KEY_PAUSE Pause
576 XF86XK_LaunchA, // 0x80: KEY_SCALE XF86LaunchA
577 XK_KP_Decimal, // 0x81: KEY_KPCOMMA KP_Decimal
578 XK_Hangul, // 0x82: KEY_HANGUEL Hangul
579 XK_Hangul_Hanja, // 0x83: KEY_HANJA Hangul_Hanja
580 XK_yen, // 0x84: KEY_YEN yen
581 XK_Super_L, // 0x85: KEY_LEFTMETA Super_L
582 XK_Super_R, // 0x86: KEY_RIGHTMETA Super_R
583 XK_Menu, // 0x87: KEY_COMPOSE Menu
525 }; 584 };
526 585
527 if (hardware_code >= arraysize(kHardwareKeycodeMap)) { 586 if (hardware_code >= arraysize(kHardwareKeycodeMap)) {
528 // Checks for arrow keys. 587 // Additional keycodes used by the Chrome OS top row special function keys.
529 switch (hardware_code) { 588 switch (hardware_code) {
530 case 0x6f: 589 case 0xA6: // KEY_BACK
531 return XK_Up; 590 return XF86XK_Back;
532 case 0x71: 591 case 0xA7: // KEY_FORWARD
533 return XK_Left; 592 return XF86XK_Forward;
534 case 0x72: 593 case 0xB5: // KEY_REFRESH
535 return XK_Right; 594 return XF86XK_Reload;
536 case 0x74: 595 case 0xD4: // KEY_DASHBOARD
537 return XK_Down; 596 return XF86XK_LaunchB;
597 case 0xE8: // KEY_BRIGHTNESSDOWN
598 return XF86XK_MonBrightnessDown;
599 case 0xE9: // KEY_BRIGHTNESSUP
600 return XF86XK_MonBrightnessUp;
538 } 601 }
539 return 0; 602 return 0;
540 } 603 }
541 return kHardwareKeycodeMap[hardware_code]; 604 return kHardwareKeycodeMap[hardware_code];
542 } 605 }
543 606
544 // TODO(jcampan): this method might be incomplete. 607 // TODO(jcampan): this method might be incomplete.
545 int XKeysymForWindowsKeyCode(KeyboardCode keycode, bool shift) { 608 int XKeysymForWindowsKeyCode(KeyboardCode keycode, bool shift) {
546 switch (keycode) { 609 switch (keycode) {
547 case VKEY_NUMPAD0: 610 case VKEY_NUMPAD0:
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 case VKEY_KBD_BRIGHTNESS_UP: 867 case VKEY_KBD_BRIGHTNESS_UP:
805 return XF86XK_KbdBrightnessUp; 868 return XF86XK_KbdBrightnessUp;
806 869
807 default: 870 default:
808 LOG(WARNING) << "Unknown keycode:" << keycode; 871 LOG(WARNING) << "Unknown keycode:" << keycode;
809 return 0; 872 return 0;
810 } 873 }
811 } 874 }
812 875
813 } // namespace ui 876 } // namespace ui
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/events/event_rewriter_unittest.cc ('k') | ui/events/test/events_test_utils_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698