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/libgestures_glue/gesture_interpreter_libevdev_cr
os.h" | 5 #include "ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cr
os.h" |
6 | 6 |
7 #include <gestures/gestures.h> | 7 #include <gestures/gestures.h> |
8 #include <libevdev/libevdev.h> | 8 #include <libevdev/libevdev.h> |
9 #include <linux/input.h> | 9 #include <linux/input.h> |
10 | 10 |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 | 207 |
208 void GestureInterpreterLibevdevCros::OnLibEvdevCrosStopped( | 208 void GestureInterpreterLibevdevCros::OnLibEvdevCrosStopped( |
209 Evdev* evdev, | 209 Evdev* evdev, |
210 EventStateRec* state) { | 210 EventStateRec* state) { |
211 stime_t timestamp = StimeNow(); | 211 stime_t timestamp = StimeNow(); |
212 | 212 |
213 ReleaseKeys(timestamp); | 213 ReleaseKeys(timestamp); |
214 ReleaseMouseButtons(timestamp); | 214 ReleaseMouseButtons(timestamp); |
215 } | 215 } |
216 | 216 |
217 void GestureInterpreterLibevdevCros::SetAllowedKeys( | |
218 scoped_ptr<std::set<DomCode>> allowed_keys) { | |
219 if (!allowed_keys) { | |
220 allowed_keys_.reset(); | |
221 return; | |
222 } | |
223 | |
224 allowed_keys_.reset(new std::set<int>()); | |
225 for (const auto& it : *allowed_keys) { | |
226 int evdev_code = | |
227 NativeCodeToEvdevCode(KeycodeConverter::DomCodeToNativeKeycode(it)); | |
228 allowed_keys_->insert(evdev_code); | |
229 } | |
230 } | |
231 | |
232 void GestureInterpreterLibevdevCros::AllowAllKeys() { | |
233 allowed_keys_.reset(); | |
234 } | |
235 | |
236 void GestureInterpreterLibevdevCros::OnGestureReady(const Gesture* gesture) { | 217 void GestureInterpreterLibevdevCros::OnGestureReady(const Gesture* gesture) { |
237 switch (gesture->type) { | 218 switch (gesture->type) { |
238 case kGestureTypeMove: | 219 case kGestureTypeMove: |
239 OnGestureMove(gesture, &gesture->details.move); | 220 OnGestureMove(gesture, &gesture->details.move); |
240 break; | 221 break; |
241 case kGestureTypeScroll: | 222 case kGestureTypeScroll: |
242 OnGestureScroll(gesture, &gesture->details.scroll); | 223 OnGestureScroll(gesture, &gesture->details.scroll); |
243 break; | 224 break; |
244 case kGestureTypeButtonsChange: | 225 case kGestureTypeButtonsChange: |
245 OnGestureButtonsChange(gesture, &gesture->details.buttons); | 226 OnGestureButtonsChange(gesture, &gesture->details.buttons); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 bool value = EvdevBitIsSet(new_key_state, key); | 427 bool value = EvdevBitIsSet(new_key_state, key); |
447 | 428 |
448 // Mouse buttons are handled by DispatchMouseButton. | 429 // Mouse buttons are handled by DispatchMouseButton. |
449 if (key >= BTN_MOUSE && key < BTN_JOYSTICK) | 430 if (key >= BTN_MOUSE && key < BTN_JOYSTICK) |
450 continue; | 431 continue; |
451 | 432 |
452 // Ignore digi buttons (e.g. BTN_TOOL_FINGER). | 433 // Ignore digi buttons (e.g. BTN_TOOL_FINGER). |
453 if (key >= BTN_DIGI && key < BTN_WHEEL) | 434 if (key >= BTN_DIGI && key < BTN_WHEEL) |
454 continue; | 435 continue; |
455 | 436 |
456 if (allowed_keys_ && !allowed_keys_->count(key)) | |
457 continue; | |
458 | |
459 // Dispatch key press or release to keyboard. | 437 // Dispatch key press or release to keyboard. |
460 dispatcher_->DispatchKeyEvent( | 438 dispatcher_->DispatchKeyEvent( |
461 KeyEventParams(id_, key, value, StimeToTimedelta(timestamp))); | 439 KeyEventParams(id_, key, value, StimeToTimedelta(timestamp))); |
462 } | 440 } |
463 } | 441 } |
464 | 442 |
465 // Update internal key state. | 443 // Update internal key state. |
466 for (unsigned long i = 0; i < EVDEV_BITS_TO_LONGS(KEY_CNT); ++i) | 444 for (unsigned long i = 0; i < EVDEV_BITS_TO_LONGS(KEY_CNT); ++i) |
467 prev_key_state_[i] = new_key_state[i]; | 445 prev_key_state_[i] = new_key_state[i]; |
468 } | 446 } |
(...skipping 22 matching lines...) Expand all Loading... |
491 return true; | 469 return true; |
492 } | 470 } |
493 | 471 |
494 void GestureInterpreterLibevdevCros::ReleaseMouseButtons(stime_t timestamp) { | 472 void GestureInterpreterLibevdevCros::ReleaseMouseButtons(stime_t timestamp) { |
495 DispatchMouseButton(BTN_LEFT, false /* down */, timestamp); | 473 DispatchMouseButton(BTN_LEFT, false /* down */, timestamp); |
496 DispatchMouseButton(BTN_MIDDLE, false /* down */, timestamp); | 474 DispatchMouseButton(BTN_MIDDLE, false /* down */, timestamp); |
497 DispatchMouseButton(BTN_RIGHT, false /* down */, timestamp); | 475 DispatchMouseButton(BTN_RIGHT, false /* down */, timestamp); |
498 } | 476 } |
499 | 477 |
500 } // namespace ui | 478 } // namespace ui |
OLD | NEW |