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 #include "ui/events/event.h" |
| 6 #include "ui/events/event_utils.h" |
| 7 #include "ui/events/keycodes/dom/dom_code.h" |
| 8 #include "ui/events/ozone/evdev/cursor_delegate_evdev.h" |
| 9 #include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h" |
| 10 #include "ui/events/ozone/evdev/event_modifiers_evdev.h" |
| 11 #include "ui/events/ozone/evdev/input_injector_evdev.h" |
| 12 #include "ui/events/ozone/evdev/keyboard_evdev.h" |
| 13 #include "ui/events/ozone/evdev/keyboard_util_evdev.h" |
| 14 |
| 15 namespace ui { |
| 16 |
| 17 namespace { |
| 18 |
| 19 const int kDeviceIdForInjection = -1; |
| 20 |
| 21 } // namespace |
| 22 |
| 23 InputInjectorEvdev::InputInjectorEvdev( |
| 24 scoped_ptr<DeviceEventDispatcherEvdev> dispatcher, |
| 25 CursorDelegateEvdev* cursor) |
| 26 : cursor_(cursor), dispatcher_(dispatcher.Pass()) { |
| 27 } |
| 28 |
| 29 InputInjectorEvdev::~InputInjectorEvdev() { |
| 30 } |
| 31 |
| 32 void InputInjectorEvdev::InjectMouseButton(EventFlags button, bool down) { |
| 33 unsigned int code; |
| 34 switch (button) { |
| 35 case EF_LEFT_MOUSE_BUTTON: |
| 36 code = BTN_LEFT; |
| 37 break; |
| 38 case EF_RIGHT_MOUSE_BUTTON: |
| 39 code = BTN_RIGHT; |
| 40 break; |
| 41 case EF_MIDDLE_MOUSE_BUTTON: |
| 42 code = BTN_MIDDLE; |
| 43 default: |
| 44 LOG(WARNING) << "Invalid flag: " << button << " for the button parameter"; |
| 45 return; |
| 46 } |
| 47 |
| 48 dispatcher_->DispatchMouseButtonEvent(MouseButtonEventParams( |
| 49 kDeviceIdForInjection, cursor_->GetLocation(), code, down, |
| 50 false /* allow_remap */, EventTimeForNow())); |
| 51 } |
| 52 |
| 53 void InputInjectorEvdev::InjectMouseWheel(int delta_x, int delta_y) { |
| 54 dispatcher_->DispatchMouseWheelEvent(MouseWheelEventParams( |
| 55 kDeviceIdForInjection, cursor_->GetLocation(), |
| 56 gfx::Vector2d(delta_x, delta_y), EventTimeForNow())); |
| 57 } |
| 58 |
| 59 void InputInjectorEvdev::MoveCursorTo(const gfx::PointF& location) { |
| 60 if (!cursor_) |
| 61 return; |
| 62 |
| 63 cursor_->MoveCursorTo(location); |
| 64 |
| 65 dispatcher_->DispatchMouseMoveEvent(MouseMoveEventParams( |
| 66 kDeviceIdForInjection, cursor_->GetLocation(), EventTimeForNow())); |
| 67 } |
| 68 |
| 69 void InputInjectorEvdev::InjectKeyEvent(DomCode physical_key, |
| 70 bool down, |
| 71 bool suppress_auto_repeat) { |
| 72 if (physical_key == DomCode::NONE) |
| 73 return; |
| 74 |
| 75 int native_keycode = KeycodeConverter::DomCodeToNativeKeycode(physical_key); |
| 76 int evdev_code = NativeCodeToEvdevCode(native_keycode); |
| 77 |
| 78 dispatcher_->DispatchKeyEvent( |
| 79 KeyEventParams(kDeviceIdForInjection, evdev_code, down, |
| 80 suppress_auto_repeat, EventTimeForNow())); |
| 81 } |
| 82 |
| 83 } // namespace ui |
| 84 |
OLD | NEW |