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