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/tablet_event_converter_evdev.h" | 5 #include "ui/events/ozone/evdev/tablet_event_converter_evdev.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <linux/input.h> | 8 #include <linux/input.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 | 10 |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/trace_event/trace_event.h" | 12 #include "base/trace_event/trace_event.h" |
13 #include "ui/events/event.h" | 13 #include "ui/events/event.h" |
14 #include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h" | 14 #include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h" |
15 | 15 |
16 namespace ui { | 16 namespace ui { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 // Convert tilt from [min, min + num_values) to [-90deg, +90deg) | 20 // Convert tilt from [min, min + num_values) to [-90deg, +90deg) |
21 float ScaleTilt(int value, int min_value, int num_values) { | 21 float ScaleTilt(int value, int min_value, int num_values) { |
22 return 180.f * (value - min_value) / num_values - 90.f; | 22 return 180.f * (value - min_value) / num_values - 90.f; |
23 } | 23 } |
24 | 24 |
| 25 EventPointerType GetToolType(int button_tool) { |
| 26 if (button_tool == BTN_TOOL_RUBBER) |
| 27 return EventPointerType::POINTER_TYPE_ERASER; |
| 28 return EventPointerType::POINTER_TYPE_PEN; |
| 29 } |
| 30 |
25 } // namespace | 31 } // namespace |
26 | 32 |
27 TabletEventConverterEvdev::TabletEventConverterEvdev( | 33 TabletEventConverterEvdev::TabletEventConverterEvdev( |
28 int fd, | 34 int fd, |
29 base::FilePath path, | 35 base::FilePath path, |
30 int id, | 36 int id, |
31 CursorDelegateEvdev* cursor, | 37 CursorDelegateEvdev* cursor, |
32 const EventDeviceInfo& info, | 38 const EventDeviceInfo& info, |
33 DeviceEventDispatcherEvdev* dispatcher) | 39 DeviceEventDispatcherEvdev* dispatcher) |
34 : EventConverterEvdev(fd, | 40 : EventConverterEvdev(fd, |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 if (abs_value_dirty_) { | 179 if (abs_value_dirty_) { |
174 UpdateCursor(); | 180 UpdateCursor(); |
175 abs_value_dirty_ = false; | 181 abs_value_dirty_ = false; |
176 } | 182 } |
177 | 183 |
178 bool down = input.value; | 184 bool down = input.value; |
179 | 185 |
180 dispatcher_->DispatchMouseButtonEvent(MouseButtonEventParams( | 186 dispatcher_->DispatchMouseButtonEvent(MouseButtonEventParams( |
181 input_device_.id, EF_NONE, cursor_->GetLocation(), button, down, | 187 input_device_.id, EF_NONE, cursor_->GetLocation(), button, down, |
182 false /* allow_remap */, | 188 false /* allow_remap */, |
183 PointerDetails(EventPointerType::POINTER_TYPE_PEN, | 189 PointerDetails(GetToolType(stylus_), |
184 /* radius_x */ 0.0f, /* radius_y */ 0.0f, pressure_, | 190 /* radius_x */ 0.0f, /* radius_y */ 0.0f, pressure_, |
185 tilt_x_, tilt_y_), | 191 tilt_x_, tilt_y_), |
186 TimeTicksFromInputEvent(input))); | 192 TimeTicksFromInputEvent(input))); |
187 } | 193 } |
188 | 194 |
189 void TabletEventConverterEvdev::FlushEvents(const input_event& input) { | 195 void TabletEventConverterEvdev::FlushEvents(const input_event& input) { |
190 if (!cursor_) | 196 if (!cursor_) |
191 return; | 197 return; |
192 | 198 |
193 // Prevent propagation of invalid data on stylus lift off | 199 // Prevent propagation of invalid data on stylus lift off |
194 if (stylus_ == 0) { | 200 if (stylus_ == 0) { |
195 abs_value_dirty_ = false; | 201 abs_value_dirty_ = false; |
196 return; | 202 return; |
197 } | 203 } |
198 | 204 |
199 if (!abs_value_dirty_) | 205 if (!abs_value_dirty_) |
200 return; | 206 return; |
201 | 207 |
202 UpdateCursor(); | 208 UpdateCursor(); |
203 | 209 |
204 dispatcher_->DispatchMouseMoveEvent(MouseMoveEventParams( | 210 dispatcher_->DispatchMouseMoveEvent(MouseMoveEventParams( |
205 input_device_.id, EF_NONE, cursor_->GetLocation(), | 211 input_device_.id, EF_NONE, cursor_->GetLocation(), |
206 PointerDetails(EventPointerType::POINTER_TYPE_PEN, | 212 PointerDetails(GetToolType(stylus_), |
207 /* radius_x */ 0.0f, /* radius_y */ 0.0f, pressure_, | 213 /* radius_x */ 0.0f, /* radius_y */ 0.0f, pressure_, |
208 tilt_x_, tilt_y_), | 214 tilt_x_, tilt_y_), |
209 TimeTicksFromInputEvent(input))); | 215 TimeTicksFromInputEvent(input))); |
210 | 216 |
211 abs_value_dirty_ = false; | 217 abs_value_dirty_ = false; |
212 } | 218 } |
213 | 219 |
214 } // namespace ui | 220 } // namespace ui |
OLD | NEW |