| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef UI_EVENTS_OZONE_EVDEV_LIBGESTURES_GLUE_GESTURE_INTERPRETER_LIBEVDEV_CROS
_H_ | |
| 6 #define UI_EVENTS_OZONE_EVDEV_LIBGESTURES_GLUE_GESTURE_INTERPRETER_LIBEVDEV_CROS
_H_ | |
| 7 | |
| 8 #include <gestures/gestures.h> | |
| 9 #include <libevdev/libevdev.h> | |
| 10 | |
| 11 #include "base/callback.h" | |
| 12 #include "base/memory/scoped_ptr.h" | |
| 13 #include "ui/events/ozone/evdev/cursor_delegate_evdev.h" | |
| 14 #include "ui/events/ozone/evdev/event_device_util.h" | |
| 15 #include "ui/events/ozone/evdev/event_dispatch_callback.h" | |
| 16 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h" | |
| 17 #include "ui/events/ozone/evdev/libgestures_glue/event_reader_libevdev_cros.h" | |
| 18 | |
| 19 namespace ui { | |
| 20 | |
| 21 class EventDeviceInfo; | |
| 22 class EventModifiersEvdev; | |
| 23 class CursorDelegateEvdev; | |
| 24 class KeyboardEvdev; | |
| 25 class GestureDeviceProperties; | |
| 26 class GesturePropertyProvider; | |
| 27 | |
| 28 // Convert libevdev-cros events to ui::Events using libgestures. | |
| 29 // | |
| 30 // This builds a GestureInterpreter for an input device (touchpad or | |
| 31 // mouse). | |
| 32 // | |
| 33 // Raw input events must be preprocessed into a form suitable for | |
| 34 // libgestures. The kernel protocol only emits changes to the device state, | |
| 35 // so changes must be accumulated until a sync event. The full device state | |
| 36 // at sync is then processed by libgestures. | |
| 37 // | |
| 38 // Once we have the state at sync, we convert it to a HardwareState object | |
| 39 // and forward it to libgestures. If any gestures are produced, they are | |
| 40 // converted to ui::Events and dispatched. | |
| 41 class EVENTS_OZONE_EVDEV_EXPORT GestureInterpreterLibevdevCros | |
| 42 : public EventReaderLibevdevCros::Delegate { | |
| 43 public: | |
| 44 GestureInterpreterLibevdevCros(int id, | |
| 45 EventModifiersEvdev* modifiers, | |
| 46 CursorDelegateEvdev* cursor, | |
| 47 KeyboardEvdev* keyboard, | |
| 48 GesturePropertyProvider* property_provider, | |
| 49 const EventDispatchCallback& callback); | |
| 50 virtual ~GestureInterpreterLibevdevCros(); | |
| 51 | |
| 52 // Overriden from ui::EventReaderLibevdevCros::Delegate | |
| 53 virtual void OnLibEvdevCrosOpen(Evdev* evdev, | |
| 54 EventStateRec* evstate) override; | |
| 55 virtual void OnLibEvdevCrosEvent(Evdev* evdev, | |
| 56 EventStateRec* evstate, | |
| 57 const timeval& time) override; | |
| 58 | |
| 59 // Handler for gesture events generated from libgestures. | |
| 60 void OnGestureReady(const Gesture* gesture); | |
| 61 | |
| 62 // Accessors. | |
| 63 int id() { return id_; } | |
| 64 GesturePropertyProvider* property_provider() { return property_provider_; } | |
| 65 Evdev* evdev() { return evdev_; } | |
| 66 | |
| 67 private: | |
| 68 void OnGestureMove(const Gesture* gesture, const GestureMove* move); | |
| 69 void OnGestureScroll(const Gesture* gesture, const GestureScroll* move); | |
| 70 void OnGestureButtonsChange(const Gesture* gesture, | |
| 71 const GestureButtonsChange* move); | |
| 72 void OnGestureContactInitiated(const Gesture* gesture); | |
| 73 void OnGestureFling(const Gesture* gesture, const GestureFling* fling); | |
| 74 void OnGestureSwipe(const Gesture* gesture, const GestureSwipe* swipe); | |
| 75 void OnGestureSwipeLift(const Gesture* gesture, | |
| 76 const GestureSwipeLift* swipelift); | |
| 77 void OnGesturePinch(const Gesture* gesture, const GesturePinch* pinch); | |
| 78 void OnGestureMetrics(const Gesture* gesture, const GestureMetrics* metrics); | |
| 79 | |
| 80 void Dispatch(scoped_ptr<Event> event); | |
| 81 void DispatchMouseButton(unsigned int modifier, bool down); | |
| 82 void DispatchChangedKeys(Evdev* evdev, const timeval& time); | |
| 83 | |
| 84 // The unique device id. | |
| 85 int id_; | |
| 86 | |
| 87 // Shared modifier state. | |
| 88 EventModifiersEvdev* modifiers_; | |
| 89 | |
| 90 // Shared cursor state. | |
| 91 CursorDelegateEvdev* cursor_; | |
| 92 | |
| 93 // Shared keyboard state. | |
| 94 KeyboardEvdev* keyboard_; | |
| 95 | |
| 96 // Shared gesture property provider. | |
| 97 GesturePropertyProvider* property_provider_; | |
| 98 | |
| 99 // Callback for dispatching events. | |
| 100 EventDispatchCallback dispatch_callback_; | |
| 101 | |
| 102 // Gestures interpretation state. | |
| 103 gestures::GestureInterpreter* interpreter_; | |
| 104 | |
| 105 // Last key state from libevdev. | |
| 106 unsigned long prev_key_state_[EVDEV_BITS_TO_LONGS(KEY_CNT)]; | |
| 107 | |
| 108 // Device pointer. | |
| 109 Evdev* evdev_; | |
| 110 | |
| 111 // Gesture lib device properties. | |
| 112 scoped_ptr<GestureDeviceProperties> device_properties_; | |
| 113 | |
| 114 DISALLOW_COPY_AND_ASSIGN(GestureInterpreterLibevdevCros); | |
| 115 }; | |
| 116 | |
| 117 } // namspace ui | |
| 118 | |
| 119 #endif // UI_EVENTS_OZONE_EVDEV_LIBGESTURES_GLUE_GESTURE_INTERPRETER_LIBEVDEV_C
ROS_H_ | |
| OLD | NEW |