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/ozone/evdev/event_converter_evdev_impl.h" | 5 #include "ui/events/ozone/evdev/event_converter_evdev_impl.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <linux/input.h> | 8 #include <linux/input.h> |
9 | 9 |
10 #include "ui/events/event.h" | 10 #include "ui/events/event.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 } // namespace | 24 } // namespace |
25 | 25 |
26 EventConverterEvdevImpl::EventConverterEvdevImpl( | 26 EventConverterEvdevImpl::EventConverterEvdevImpl( |
27 int fd, | 27 int fd, |
28 base::FilePath path, | 28 base::FilePath path, |
29 int id, | 29 int id, |
30 InputDeviceType type, | 30 InputDeviceType type, |
31 const EventDeviceInfo& devinfo, | 31 const EventDeviceInfo& devinfo, |
32 CursorDelegateEvdev* cursor, | 32 CursorDelegateEvdev* cursor, |
33 DeviceEventDispatcherEvdev* dispatcher) | 33 DeviceEventDispatcherEvdev* dispatcher) |
34 : EventConverterEvdev(fd, | 34 : EventConverterEvdev(fd, path, id, type), |
35 path, | |
36 id, | |
37 type, | |
38 devinfo.name(), | |
39 devinfo.vendor_id(), | |
40 devinfo.product_id()), | |
41 has_keyboard_(devinfo.HasKeyboard()), | 35 has_keyboard_(devinfo.HasKeyboard()), |
42 has_touchpad_(devinfo.HasTouchpad()), | 36 has_touchpad_(devinfo.HasTouchpad()), |
43 has_caps_lock_led_(devinfo.HasLedEvent(LED_CAPSL)), | 37 has_caps_lock_led_(devinfo.HasLedEvent(LED_CAPSL)), |
44 x_offset_(0), | 38 x_offset_(0), |
45 y_offset_(0), | 39 y_offset_(0), |
46 cursor_(cursor), | 40 cursor_(cursor), |
47 dispatcher_(dispatcher) { | 41 dispatcher_(dispatcher) { |
48 } | 42 } |
49 | 43 |
50 EventConverterEvdevImpl::~EventConverterEvdevImpl() { | 44 EventConverterEvdevImpl::~EventConverterEvdevImpl() { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 if (down == key_state_.test(key)) | 171 if (down == key_state_.test(key)) |
178 return; | 172 return; |
179 | 173 |
180 // Apply key filter (releases for previously pressed keys are excepted). | 174 // Apply key filter (releases for previously pressed keys are excepted). |
181 if (down && blocked_keys_.test(key)) | 175 if (down && blocked_keys_.test(key)) |
182 return; | 176 return; |
183 | 177 |
184 // State transition: !(down) -> (down) | 178 // State transition: !(down) -> (down) |
185 key_state_.set(key, down); | 179 key_state_.set(key, down); |
186 | 180 |
187 dispatcher_->DispatchKeyEvent( | 181 dispatcher_->DispatchKeyEvent(KeyEventParams(id_, key, down, timestamp)); |
188 KeyEventParams(input_device_.id, key, down, timestamp)); | |
189 } | 182 } |
190 | 183 |
191 void EventConverterEvdevImpl::ReleaseKeys() { | 184 void EventConverterEvdevImpl::ReleaseKeys() { |
192 base::TimeDelta timestamp = ui::EventTimeForNow(); | 185 base::TimeDelta timestamp = ui::EventTimeForNow(); |
193 for (int key = 0; key < KEY_CNT; ++key) | 186 for (int key = 0; key < KEY_CNT; ++key) |
194 OnKeyChange(key, false /* down */, timestamp); | 187 OnKeyChange(key, false /* down */, timestamp); |
195 } | 188 } |
196 | 189 |
197 void EventConverterEvdevImpl::ReleaseMouseButtons() { | 190 void EventConverterEvdevImpl::ReleaseMouseButtons() { |
198 base::TimeDelta timestamp = ui::EventTimeForNow(); | 191 base::TimeDelta timestamp = ui::EventTimeForNow(); |
(...skipping 24 matching lines...) Expand all Loading... |
223 code = BTN_BACK; | 216 code = BTN_BACK; |
224 else if (code == BTN_EXTRA) | 217 else if (code == BTN_EXTRA) |
225 code = BTN_FORWARD; | 218 code = BTN_FORWARD; |
226 | 219 |
227 int button_offset = code - BTN_MOUSE; | 220 int button_offset = code - BTN_MOUSE; |
228 if (mouse_button_state_.test(button_offset) == down) | 221 if (mouse_button_state_.test(button_offset) == down) |
229 return; | 222 return; |
230 | 223 |
231 mouse_button_state_.set(button_offset, down); | 224 mouse_button_state_.set(button_offset, down); |
232 | 225 |
233 dispatcher_->DispatchMouseButtonEvent(MouseButtonEventParams( | 226 dispatcher_->DispatchMouseButtonEvent( |
234 input_device_.id, cursor_->GetLocation(), code, down, | 227 MouseButtonEventParams(id_, cursor_->GetLocation(), code, down, |
235 /* allow_remap */ true, timestamp)); | 228 /* allow_remap */ true, timestamp)); |
236 } | 229 } |
237 | 230 |
238 void EventConverterEvdevImpl::FlushEvents(const input_event& input) { | 231 void EventConverterEvdevImpl::FlushEvents(const input_event& input) { |
239 if (!cursor_ || (x_offset_ == 0 && y_offset_ == 0)) | 232 if (!cursor_ || (x_offset_ == 0 && y_offset_ == 0)) |
240 return; | 233 return; |
241 | 234 |
242 cursor_->MoveCursor(gfx::Vector2dF(x_offset_, y_offset_)); | 235 cursor_->MoveCursor(gfx::Vector2dF(x_offset_, y_offset_)); |
243 | 236 |
244 dispatcher_->DispatchMouseMoveEvent( | 237 dispatcher_->DispatchMouseMoveEvent(MouseMoveEventParams( |
245 MouseMoveEventParams(input_device_.id, cursor_->GetLocation(), | 238 id_, cursor_->GetLocation(), TimeDeltaFromInputEvent(input))); |
246 TimeDeltaFromInputEvent(input))); | |
247 | 239 |
248 x_offset_ = 0; | 240 x_offset_ = 0; |
249 y_offset_ = 0; | 241 y_offset_ = 0; |
250 } | 242 } |
251 | 243 |
252 } // namespace ui | 244 } // namespace ui |
OLD | NEW |