| Index: ui/events/ozone/evdev/input_injector_evdev.cc
|
| diff --git a/ui/events/ozone/evdev/input_injector_evdev.cc b/ui/events/ozone/evdev/input_injector_evdev.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7c37fe921075723e89e068939de9f1d22f520f1f
|
| --- /dev/null
|
| +++ b/ui/events/ozone/evdev/input_injector_evdev.cc
|
| @@ -0,0 +1,84 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "ui/events/event.h"
|
| +#include "ui/events/event_utils.h"
|
| +#include "ui/events/keycodes/dom/dom_code.h"
|
| +#include "ui/events/ozone/evdev/cursor_delegate_evdev.h"
|
| +#include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h"
|
| +#include "ui/events/ozone/evdev/event_modifiers_evdev.h"
|
| +#include "ui/events/ozone/evdev/input_injector_evdev.h"
|
| +#include "ui/events/ozone/evdev/keyboard_evdev.h"
|
| +#include "ui/events/ozone/evdev/keyboard_util_evdev.h"
|
| +
|
| +namespace ui {
|
| +
|
| +namespace {
|
| +
|
| +const int kDeviceIdForInjection = -1;
|
| +
|
| +} // namespace
|
| +
|
| +InputInjectorEvdev::InputInjectorEvdev(
|
| + scoped_ptr<DeviceEventDispatcherEvdev> dispatcher,
|
| + CursorDelegateEvdev* cursor)
|
| + : cursor_(cursor), dispatcher_(dispatcher.Pass()) {
|
| +}
|
| +
|
| +InputInjectorEvdev::~InputInjectorEvdev() {
|
| +}
|
| +
|
| +void InputInjectorEvdev::InjectMouseButton(EventFlags button, bool down) {
|
| + unsigned int code;
|
| + switch (button) {
|
| + case EF_LEFT_MOUSE_BUTTON:
|
| + code = BTN_LEFT;
|
| + break;
|
| + case EF_RIGHT_MOUSE_BUTTON:
|
| + code = BTN_RIGHT;
|
| + break;
|
| + case EF_MIDDLE_MOUSE_BUTTON:
|
| + code = BTN_MIDDLE;
|
| + default:
|
| + LOG(WARNING) << "Invalid flag: " << button << " for the button parameter";
|
| + return;
|
| + }
|
| +
|
| + dispatcher_->DispatchMouseButtonEvent(MouseButtonEventParams(
|
| + kDeviceIdForInjection, cursor_->GetLocation(), code, down,
|
| + false /* allow_remap */, EventTimeForNow()));
|
| +}
|
| +
|
| +void InputInjectorEvdev::InjectMouseWheel(int delta_x, int delta_y) {
|
| + dispatcher_->DispatchMouseWheelEvent(MouseWheelEventParams(
|
| + kDeviceIdForInjection, cursor_->GetLocation(),
|
| + gfx::Vector2d(delta_x, delta_y), EventTimeForNow()));
|
| +}
|
| +
|
| +void InputInjectorEvdev::MoveCursorTo(const gfx::PointF& location) {
|
| + if (!cursor_)
|
| + return;
|
| +
|
| + cursor_->MoveCursorTo(location);
|
| +
|
| + dispatcher_->DispatchMouseMoveEvent(MouseMoveEventParams(
|
| + kDeviceIdForInjection, cursor_->GetLocation(), EventTimeForNow()));
|
| +}
|
| +
|
| +void InputInjectorEvdev::InjectKeyEvent(DomCode physical_key,
|
| + bool down,
|
| + bool suppress_auto_repeat) {
|
| + if (physical_key == DomCode::NONE)
|
| + return;
|
| +
|
| + int native_keycode = KeycodeConverter::DomCodeToNativeKeycode(physical_key);
|
| + int evdev_code = NativeCodeToEvdevCode(native_keycode);
|
| +
|
| + dispatcher_->DispatchKeyEvent(
|
| + KeyEventParams(kDeviceIdForInjection, evdev_code, down,
|
| + suppress_auto_repeat, EventTimeForNow()));
|
| +}
|
| +
|
| +} // namespace ui
|
| +
|
|
|