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.
5 #include "ui/events/event.h"
6 #include "ui/events/event_utils.h"
7 #include "ui/events/keycodes/dom3/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"
19 const int kDeviceIdForInjection
= -1;
23 InputInjectorEvdev::InputInjectorEvdev(
24 scoped_ptr
<DeviceEventDispatcherEvdev
> dispatcher
,
25 CursorDelegateEvdev
* cursor
)
26 : cursor_(cursor
), dispatcher_(dispatcher
.Pass()) {
29 InputInjectorEvdev::~InputInjectorEvdev() {
32 void InputInjectorEvdev::InjectMouseButton(EventFlags button
, bool down
) {
35 case EF_LEFT_MOUSE_BUTTON
:
38 case EF_RIGHT_MOUSE_BUTTON
:
41 case EF_MIDDLE_MOUSE_BUTTON
:
44 LOG(WARNING
) << "Invalid flag: " << button
<< " for the button parameter";
48 dispatcher_
->DispatchMouseButtonEvent(MouseButtonEventParams(
49 kDeviceIdForInjection
, cursor_
->GetLocation(), code
, down
,
50 false /* allow_remap */, EventTimeForNow()));
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()));
59 void InputInjectorEvdev::MoveCursorTo(const gfx::PointF
& location
) {
63 cursor_
->MoveCursorTo(location
);
65 dispatcher_
->DispatchMouseMoveEvent(MouseMoveEventParams(
66 kDeviceIdForInjection
, cursor_
->GetLocation(), EventTimeForNow()));
69 void InputInjectorEvdev::InjectKeyPress(DomCode physical_key
, bool down
) {
70 if (physical_key
== DomCode::NONE
) {
74 int native_keycode
= KeycodeConverter::DomCodeToNativeKeycode(physical_key
);
75 int evdev_code
= NativeCodeToEvdevCode(native_keycode
);
77 dispatcher_
->DispatchKeyEvent(KeyEventParams(
78 kDeviceIdForInjection
, evdev_code
, down
, EventTimeForNow()));