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

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

Issue 237363005: Convert chromeos::EventRewriter to a ui::EventRewriter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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>
11 #include <X11/XF86keysym.h> 11 #include <X11/XF86keysym.h>
12 12
13 #include "base/basictypes.h" 13 #include "base/basictypes.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
16 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
17 #include "ui/events/event_constants.h"
17 #include "ui/events/keycodes/dom4/keycode_converter.h" 18 #include "ui/events/keycodes/dom4/keycode_converter.h"
18 19
19 namespace ui { 20 namespace ui {
20 21
21 // Get an ui::KeyboardCode from an X keyevent 22 // Get an ui::KeyboardCode from an X keyevent
22 KeyboardCode KeyboardCodeFromXKeyEvent(XEvent* xev) { 23 KeyboardCode KeyboardCodeFromXKeyEvent(XEvent* xev) {
23 // XLookupKeysym does not take into consideration the state of the lock/shift 24 // XLookupKeysym does not take into consideration the state of the lock/shift
24 // etc. keys. So it is necessary to use XLookupString instead. 25 // etc. keys. So it is necessary to use XLookupString instead.
25 KeySym keysym; 26 KeySym keysym;
26 XLookupString(&xev->xkey, NULL, 0, &keysym, NULL); 27 XLookupString(&xev->xkey, NULL, 0, &keysym, NULL);
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 return VKEY_KBD_BRIGHTNESS_DOWN; 420 return VKEY_KBD_BRIGHTNESS_DOWN;
420 case XF86XK_KbdBrightnessUp: 421 case XF86XK_KbdBrightnessUp:
421 return VKEY_KBD_BRIGHTNESS_UP; 422 return VKEY_KBD_BRIGHTNESS_UP;
422 423
423 // TODO(sad): some keycodes are still missing. 424 // TODO(sad): some keycodes are still missing.
424 } 425 }
425 DLOG(WARNING) << "Unknown keysym: " << base::StringPrintf("0x%x", keysym); 426 DLOG(WARNING) << "Unknown keysym: " << base::StringPrintf("0x%x", keysym);
426 return VKEY_UNKNOWN; 427 return VKEY_UNKNOWN;
427 } 428 }
428 429
430 int EventFlagsFromXKeysym(unsigned int keysym) {
431 static const unsigned int numpad_keysyms[] = {
sadrul 2014/04/14 21:51:32 Does this need to be static?
kpschoedel 2014/04/14 22:25:45 If it's not static, the compiler is expected to tr
432 XK_KP_Delete,
433 XK_KP_Tab,
434 XK_KP_Enter,
435 XK_KP_Begin,
436 XK_KP_Space,
437 XK_KP_Home,
438 XK_KP_End,
439 XK_KP_Page_Up, // aka XK_KP_Prior
440 XK_KP_Page_Down, // aka XK_KP_Next
441 XK_KP_Left,
442 XK_KP_Right,
443 XK_KP_Down,
444 XK_KP_Up,
445 XK_KP_0,
446 XK_KP_1,
447 XK_KP_2,
448 XK_KP_3,
449 XK_KP_4,
450 XK_KP_5,
451 XK_KP_6,
452 XK_KP_7,
453 XK_KP_8,
454 XK_KP_9,
455 XK_KP_Multiply,
456 XK_KP_Add,
457 XK_KP_Separator,
458 XK_KP_Subtract,
459 XK_KP_Decimal,
460 XK_KP_Divide,
461 XK_KP_Equal,
462 XK_KP_Insert,
463 XK_KP_F1,
464 XK_KP_F2,
465 XK_KP_F3,
466 XK_KP_F4,
467 };
468 for (size_t i = 0; i < arraysize(numpad_keysyms); ++i) {
469 if (numpad_keysyms[i] == keysym)
470 return EF_NUMPAD;
sadrul 2014/04/14 21:51:32 There's an IsKeypadKey macro in X11/Xutil.h. Can w
kpschoedel 2014/04/14 22:25:45 Yes, thanks for pointing that out.
471 }
472 return EF_NONE;
473 }
474
429 const char* CodeFromXEvent(XEvent* xev) { 475 const char* CodeFromXEvent(XEvent* xev) {
430 return KeycodeConverter::GetInstance()->NativeKeycodeToCode( 476 return KeycodeConverter::GetInstance()->NativeKeycodeToCode(
431 xev->xkey.keycode); 477 xev->xkey.keycode);
432 } 478 }
433 479
434 uint16 GetCharacterFromXEvent(XEvent* xev) { 480 uint16 GetCharacterFromXEvent(XEvent* xev) {
435 char buf[6]; 481 char buf[6];
436 int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL); 482 int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL);
437 DCHECK_LE(bytes_written, 6); 483 DCHECK_LE(bytes_written, 6);
438 484
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 case VKEY_KBD_BRIGHTNESS_UP: 850 case VKEY_KBD_BRIGHTNESS_UP:
805 return XF86XK_KbdBrightnessUp; 851 return XF86XK_KbdBrightnessUp;
806 852
807 default: 853 default:
808 LOG(WARNING) << "Unknown keycode:" << keycode; 854 LOG(WARNING) << "Unknown keycode:" << keycode;
809 return 0; 855 return 0;
810 } 856 }
811 } 857 }
812 858
813 } // namespace ui 859 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698