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

Side by Side Diff: ui/events/ozone/evdev/key_event_converter_ozone.cc

Issue 28513004: Move evdev events support into EventFactoryDelegateEvdev (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: s/_evdev//, add event_factory_delegate_ozone.cc, move GetRequestedDelegate() 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
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/ozone/evdev/key_event_converter_ozone.h"
6
7 #include <linux/input.h>
8
9 #include "ui/events/event.h"
10 #include "ui/events/keycodes/keyboard_codes.h"
11
12 namespace {
13
14 ui::KeyboardCode KeyboardCodeFromButton(unsigned int code) {
15 static const ui::KeyboardCode kLinuxBaseKeyMap[] = {
16 ui::VKEY_UNKNOWN, // KEY_RESERVED
17 ui::VKEY_ESCAPE, // KEY_ESC
18 ui::VKEY_1, // KEY_1
19 ui::VKEY_2, // KEY_2
20 ui::VKEY_3, // KEY_3
21 ui::VKEY_4, // KEY_4
22 ui::VKEY_5, // KEY_5
23 ui::VKEY_6, // KEY_6
24 ui::VKEY_7, // KEY_7
25 ui::VKEY_8, // KEY_8
26 ui::VKEY_9, // KEY_9
27 ui::VKEY_0, // KEY_0
28 ui::VKEY_OEM_MINUS, // KEY_MINUS
29 ui::VKEY_OEM_PLUS, // KEY_EQUAL
30 ui::VKEY_BACK, // KEY_BACKSPACE
31 ui::VKEY_TAB, // KEY_TAB
32 ui::VKEY_Q, // KEY_Q
33 ui::VKEY_W, // KEY_W
34 ui::VKEY_E, // KEY_E
35 ui::VKEY_R, // KEY_R
36 ui::VKEY_T, // KEY_T
37 ui::VKEY_Y, // KEY_Y
38 ui::VKEY_U, // KEY_U
39 ui::VKEY_I, // KEY_I
40 ui::VKEY_O, // KEY_O
41 ui::VKEY_P, // KEY_P
42 ui::VKEY_OEM_4, // KEY_LEFTBRACE
43 ui::VKEY_OEM_6, // KEY_RIGHTBRACE
44 ui::VKEY_RETURN, // KEY_ENTER
45 ui::VKEY_CONTROL, // KEY_LEFTCTRL
46 ui::VKEY_A, // KEY_A
47 ui::VKEY_S, // KEY_S
48 ui::VKEY_D, // KEY_D
49 ui::VKEY_F, // KEY_F
50 ui::VKEY_G, // KEY_G
51 ui::VKEY_H, // KEY_H
52 ui::VKEY_J, // KEY_J
53 ui::VKEY_K, // KEY_K
54 ui::VKEY_L, // KEY_L
55 ui::VKEY_OEM_1, // KEY_SEMICOLON
56 ui::VKEY_OEM_7, // KEY_APOSTROPHE
57 ui::VKEY_OEM_3, // KEY_GRAVE
58 ui::VKEY_SHIFT, // KEY_LEFTSHIFT
59 ui::VKEY_OEM_5, // KEY_BACKSLASH
60 ui::VKEY_Z, // KEY_Z
61 ui::VKEY_X, // KEY_X
62 ui::VKEY_C, // KEY_C
63 ui::VKEY_V, // KEY_V
64 ui::VKEY_B, // KEY_B
65 ui::VKEY_N, // KEY_N
66 ui::VKEY_M, // KEY_M
67 ui::VKEY_OEM_COMMA, // KEY_COMMA
68 ui::VKEY_OEM_PERIOD, // KEY_DOT
69 ui::VKEY_OEM_2, // KEY_SLASH
70 ui::VKEY_SHIFT, // KEY_RIGHTSHIFT
71 ui::VKEY_MULTIPLY, // KEY_KPASTERISK
72 ui::VKEY_MENU, // KEY_LEFTALT
73 ui::VKEY_SPACE, // KEY_SPACE
74 ui::VKEY_CAPITAL, // KEY_CAPSLOCK
75 ui::VKEY_F1, // KEY_F1
76 ui::VKEY_F2, // KEY_F2
77 ui::VKEY_F3, // KEY_F3
78 ui::VKEY_F4, // KEY_F4
79 ui::VKEY_F5, // KEY_F5
80 ui::VKEY_F6, // KEY_F6
81 ui::VKEY_F7, // KEY_F7
82 ui::VKEY_F8, // KEY_F8
83 ui::VKEY_F9, // KEY_F9
84 ui::VKEY_F10, // KEY_F10
85 ui::VKEY_NUMLOCK, // KEY_NUMLOCK
86 ui::VKEY_SCROLL, // KEY_SCROLLLOCK
87 ui::VKEY_NUMPAD7, // KEY_KP7
88 ui::VKEY_NUMPAD8, // KEY_KP8
89 ui::VKEY_NUMPAD9, // KEY_KP9
90 ui::VKEY_SUBTRACT, // KEY_KPMINUS
91 ui::VKEY_NUMPAD4, // KEY_KP4
92 ui::VKEY_NUMPAD5, // KEY_KP5
93 ui::VKEY_NUMPAD6, // KEY_KP6
94 ui::VKEY_ADD, // KEY_KPPLUS
95 ui::VKEY_NUMPAD1, // KEY_KP1
96 ui::VKEY_NUMPAD2, // KEY_KP2
97 ui::VKEY_NUMPAD3, // KEY_KP3
98 ui::VKEY_NUMPAD0, // KEY_KP0
99 ui::VKEY_DECIMAL, // KEY_KPDOT
100 ui::VKEY_UNKNOWN, // (unassigned)
101 ui::VKEY_DBE_DBCSCHAR, // KEY_ZENKAKUHANKAKU
102 ui::VKEY_OEM_102, // KEY_102ND
103 ui::VKEY_F11, // KEY_F11
104 ui::VKEY_F12, // KEY_F12
105 ui::VKEY_UNKNOWN, // KEY_RO
106 ui::VKEY_UNKNOWN, // KEY_KATAKANA
107 ui::VKEY_UNKNOWN, // KEY_HIRAGANA
108 ui::VKEY_CONVERT, // KEY_HENKAN
109 ui::VKEY_UNKNOWN, // KEY_KATAKANAHIRAGANA
110 ui::VKEY_NONCONVERT, // KEY_MUHENKAN
111 ui::VKEY_UNKNOWN, // KEY_KPJPCOMMA
112 ui::VKEY_RETURN, // KEY_KPENTER
113 ui::VKEY_CONTROL, // KEY_RIGHTCTRL
114 ui::VKEY_DIVIDE, // KEY_KPSLASH
115 ui::VKEY_PRINT, // KEY_SYSRQ
116 ui::VKEY_MENU, // KEY_RIGHTALT
117 ui::VKEY_RETURN, // KEY_LINEFEED
118 ui::VKEY_HOME, // KEY_HOME
119 ui::VKEY_UP, // KEY_UP
120 ui::VKEY_PRIOR, // KEY_PAGEUP
121 ui::VKEY_LEFT, // KEY_LEFT
122 ui::VKEY_RIGHT, // KEY_RIGHT
123 ui::VKEY_END, // KEY_END
124 ui::VKEY_DOWN, // KEY_DOWN
125 ui::VKEY_NEXT, // KEY_PAGEDOWN
126 ui::VKEY_INSERT, // KEY_INSERT
127 ui::VKEY_DELETE, // KEY_DELETE
128 ui::VKEY_UNKNOWN, // KEY_MACRO
129 ui::VKEY_VOLUME_MUTE, // KEY_MUTE
130 ui::VKEY_VOLUME_DOWN, // KEY_VOLUMEDOWN
131 ui::VKEY_VOLUME_UP, // KEY_VOLUMEUP
132 ui::VKEY_POWER, // KEY_POWER
133 ui::VKEY_OEM_PLUS, // KEY_KPEQUAL
134 ui::VKEY_UNKNOWN, // KEY_KPPLUSMINUS
135 ui::VKEY_PAUSE, // KEY_PAUSE
136 ui::VKEY_MEDIA_LAUNCH_APP1, // KEY_SCALE
137 ui::VKEY_DECIMAL, // KEY_KPCOMMA
138 ui::VKEY_HANGUL, // KEY_HANGEUL
139 ui::VKEY_HANJA, // KEY_HANJA
140 ui::VKEY_UNKNOWN, // KEY_YEN
141 ui::VKEY_LWIN, // KEY_LEFTMETA
142 ui::VKEY_RWIN, // KEY_RIGHTMETA
143 ui::VKEY_APPS, // KEY_COMPOSE
144 };
145
146 if (code < arraysize(kLinuxBaseKeyMap))
147 return kLinuxBaseKeyMap[code];
148
149 LOG(ERROR) << "Unknown key code: " << code;
150 return ui::VKEY_UNKNOWN;
151 }
152
153 } // namespace
154
155 namespace ui {
156
157 // TODO(rjkroege): Stop leaking file descriptor.
158 KeyEventConverterOzone::KeyEventConverterOzone() {}
159 KeyEventConverterOzone::~KeyEventConverterOzone() {}
160
161 void KeyEventConverterOzone::OnFileCanReadWithoutBlocking(int fd) {
162 input_event inputs[4];
163 ssize_t read_size = read(fd, inputs, sizeof(inputs));
164 if (read_size <= 0)
165 return;
166
167 CHECK_EQ(read_size % sizeof(*inputs), 0u);
168 for (unsigned i = 0; i < read_size / sizeof(*inputs); ++i) {
169 const input_event& input = inputs[i];
170 if (input.type == EV_KEY) {
171 scoped_ptr<KeyEvent> key(
172 new KeyEvent(input.value == 0 ? ET_KEY_RELEASED : ET_KEY_PRESSED,
173 KeyboardCodeFromButton(input.code),
174 0,
175 true));
176 DispatchEvent(key.PassAs<ui::Event>());
177 } else if (input.type == EV_SYN) {
178 // TODO(sadrul): Handle this case appropriately.
179 }
180 }
181 }
182
183 void KeyEventConverterOzone::OnFileCanWriteWithoutBlocking(int fd) {
184 NOTREACHED();
185 }
186
187 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698