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

Side by Side Diff: ui/events/x/events_x_utils.cc

Issue 24482004: events: Make platform specific events code into ui/events/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « ui/events/x/events_x_utils.h ('k') | ui/gfx/x/x11_atom_cache.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/events/x/events_x_utils.h"
6
7 #include <X11/keysym.h>
8 #include <X11/X.h>
9 #include <X11/Xlib.h>
10
11 #include "base/logging.h"
12 #include "ui/events/keycodes/keyboard_code_conversion_x.h"
13
14 namespace {
15
16 // Converts ui::EventType to XKeyEvent state.
17 unsigned int XKeyEventState(int flags) {
18 return
19 ((flags & ui::EF_SHIFT_DOWN) ? ShiftMask : 0) |
20 ((flags & ui::EF_CONTROL_DOWN) ? ControlMask : 0) |
21 ((flags & ui::EF_ALT_DOWN) ? Mod1Mask : 0) |
22 ((flags & ui::EF_CAPS_LOCK_DOWN) ? LockMask : 0);
23 }
24
25 // Converts EventType to XKeyEvent type.
26 int XKeyEventType(ui::EventType type) {
27 switch (type) {
28 case ui::ET_KEY_PRESSED:
29 return KeyPress;
30 case ui::ET_KEY_RELEASED:
31 return KeyRelease;
32 default:
33 return 0;
34 }
35 }
36
37 // Converts KeyboardCode to XKeyEvent keycode.
38 unsigned int XKeyEventKeyCode(ui::KeyboardCode key_code,
39 int flags,
40 XDisplay* display) {
41 const int keysym = XKeysymForWindowsKeyCode(key_code,
42 flags & ui::EF_SHIFT_DOWN);
43 // Tests assume the keycode for XK_less is equal to the one of XK_comma,
44 // but XKeysymToKeycode returns 94 for XK_less while it returns 59 for
45 // XK_comma. Here we convert the value for XK_less to the value for XK_comma.
46 return (keysym == XK_less) ? 59 : XKeysymToKeycode(display, keysym);
47 }
48
49 } // namespace ui
50
51 namespace ui {
52
53 void InitXKeyEventForTesting(EventType type,
54 KeyboardCode key_code,
55 int flags,
56 XEvent* event) {
57 CHECK(event);
58 XDisplay* display = gfx::GetXDisplay();
59 XKeyEvent key_event;
60 key_event.type = XKeyEventType(type);
61 CHECK_NE(0, key_event.type);
62 key_event.serial = 0;
63 key_event.send_event = 0;
64 key_event.display = display;
65 key_event.time = 0;
66 key_event.window = 0;
67 key_event.root = 0;
68 key_event.subwindow = 0;
69 key_event.x = 0;
70 key_event.y = 0;
71 key_event.x_root = 0;
72 key_event.y_root = 0;
73 key_event.state = XKeyEventState(flags);
74 key_event.keycode = XKeyEventKeyCode(key_code, flags, display);
75 key_event.same_screen = 1;
76 event->type = key_event.type;
77 event->xkey = key_event;
78 }
79
80 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/x/events_x_utils.h ('k') | ui/gfx/x/x11_atom_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698