| Index: ui/wayland/events/wayland_event.h
 | 
| diff --git a/ui/wayland/events/wayland_event.h b/ui/wayland/events/wayland_event.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..0c203619745a4f7791952b166b8d79617db618f0
 | 
| --- /dev/null
 | 
| +++ b/ui/wayland/events/wayland_event.h
 | 
| @@ -0,0 +1,127 @@
 | 
| +// Copyright (c) 2011 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.
 | 
| +
 | 
| +#ifndef UI_WAYLAND_EVENTS_WAYLAND_EVENT_H_
 | 
| +#define UI_WAYLAND_EVENTS_WAYLAND_EVENT_H_
 | 
| +
 | 
| +#include <linux/input.h>
 | 
| +#include <stdint.h>
 | 
| +
 | 
| +// Wayland event information is being passed in as arguments to the callbacks.
 | 
| +// (See wayland_input_device.{h,cc} for information on the callbacks and how
 | 
| +// events are processed.)
 | 
| +// In order to provide a more generic look for events we wrap these arguments
 | 
| +// in specific event structs. Then define a WaylandEvent as a union of all
 | 
| +// types of events that Wayland will send.
 | 
| +//
 | 
| +// The following fields are common for most event types and their use is
 | 
| +// similar:
 | 
| +// - time:
 | 
| +//    The time of the event. This should be monotonically increasing.
 | 
| +// - state:
 | 
| +//    The value of the button event as given by evdev. This is 0 if button
 | 
| +//    isn't pressed.
 | 
| +// - modifiers:
 | 
| +//    Stores all the keyboard modifiers (Ctrl, Alt, Shift, ...) currently
 | 
| +//    active. The modifiers are values as defined by xkbcommon.
 | 
| +
 | 
| +namespace ui {
 | 
| +
 | 
| +// Types of events Wayland will send
 | 
| +enum WaylandEventType {
 | 
| +  WAYLAND_BUTTON,
 | 
| +  WAYLAND_KEY,
 | 
| +  WAYLAND_MOTION,
 | 
| +  WAYLAND_POINTER_FOCUS,
 | 
| +  WAYLAND_KEYBOARD_FOCUS,
 | 
| +  WAYLAND_GEOMETRY_CHANGE,
 | 
| +};
 | 
| +
 | 
| +// These are the mouse events expected. The event type Wayland sends is an
 | 
| +// evdev event. The following is the correct mapping from evdev to expected
 | 
| +// events type.
 | 
| +enum WaylandEventButtonType {
 | 
| +  LEFT_BUTTON     = BTN_LEFT,
 | 
| +  MIDDLE_BUTTON   = BTN_RIGHT,
 | 
| +  RIGHT_BUTTON    = BTN_MIDDLE,
 | 
| +  SCROLL_UP       = BTN_SIDE,
 | 
| +  SCROLL_DOWN     = BTN_EXTRA,
 | 
| +};
 | 
| +
 | 
| +struct WaylandEventButton {
 | 
| +  WaylandEventType type;
 | 
| +  uint32_t time;
 | 
| +  // WaylandEventButtonType defines some of the values button can take
 | 
| +  uint32_t button;
 | 
| +  uint32_t state;
 | 
| +  uint32_t modifiers;
 | 
| +  int32_t x;
 | 
| +  int32_t y;
 | 
| +};
 | 
| +
 | 
| +struct WaylandEventKey {
 | 
| +  WaylandEventType type;
 | 
| +  uint32_t time;
 | 
| +  // The raw key value that evdev returns.
 | 
| +  uint32_t key;
 | 
| +  // The key symbol returned by processing the raw key using the xkbcommon
 | 
| +  // library.
 | 
| +  uint32_t sym;
 | 
| +  uint32_t state;
 | 
| +  uint32_t modifiers;
 | 
| +};
 | 
| +
 | 
| +// Triggered when there is a motion event. The motion event is triggered
 | 
| +// only if there is a window under focus.
 | 
| +struct WaylandEventMotion {
 | 
| +  WaylandEventType type;
 | 
| +  uint32_t time;
 | 
| +  uint32_t modifiers;
 | 
| +  int32_t x;
 | 
| +  int32_t y;
 | 
| +};
 | 
| +
 | 
| +// Triggered when a window enters/exits pointer focus. The state tells us
 | 
| +// if the window lost focus (state == 0) or gained focus (state != 0).
 | 
| +struct WaylandEventPointerFocus {
 | 
| +  WaylandEventType type;
 | 
| +  uint32_t time;
 | 
| +  uint32_t state;
 | 
| +  int32_t x;
 | 
| +  int32_t y;
 | 
| +};
 | 
| +
 | 
| +// Triggered when a window enters/exits keyboard focus. The state tells us
 | 
| +// if the window lost focus (state == 0) or gained focus (state != 0).
 | 
| +struct WaylandEventKeyboardFocus {
 | 
| +  WaylandEventType type;
 | 
| +  uint32_t time;
 | 
| +  uint32_t state;
 | 
| +  uint32_t modifiers;
 | 
| +};
 | 
| +
 | 
| +// Event triggered when a window's geometry changes. The event contains the
 | 
| +// position and dimensions of the window.
 | 
| +struct WaylandEventGeometryChange {
 | 
| +  WaylandEventType type;
 | 
| +  uint32_t time;
 | 
| +  int32_t x;
 | 
| +  int32_t y;
 | 
| +  int32_t width;
 | 
| +  int32_t height;
 | 
| +};
 | 
| +
 | 
| +union WaylandEvent {
 | 
| +  WaylandEventType            type;
 | 
| +  WaylandEventButton          button;
 | 
| +  WaylandEventKey             key;
 | 
| +  WaylandEventMotion          motion;
 | 
| +  WaylandEventPointerFocus    pointer_focus;
 | 
| +  WaylandEventKeyboardFocus   keyboard_focus;
 | 
| +  WaylandEventGeometryChange  geometry_change;
 | 
| +};
 | 
| +
 | 
| +}  // namespace ui
 | 
| +
 | 
| +#endif  // UI_WAYLAND_EVENTS_WAYLAND_EVENT_H_
 | 
| 
 |