// Copyright (c) 2012 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_EVENTS_EVENT_CONSTANTS_H_ #define UI_EVENTS_EVENT_CONSTANTS_H_ namespace ui { // Event types. (prefixed because of a conflict with windows headers) enum EventType { ET_UNKNOWN = 0, ET_MOUSE_PRESSED, ET_MOUSE_DRAGGED, ET_MOUSE_RELEASED, ET_MOUSE_MOVED, ET_MOUSE_ENTERED, ET_MOUSE_EXITED, ET_KEY_PRESSED, ET_KEY_RELEASED, ET_MOUSEWHEEL, ET_MOUSE_CAPTURE_CHANGED, // Event has no location. ET_TOUCH_RELEASED, ET_TOUCH_PRESSED, ET_TOUCH_MOVED, ET_TOUCH_CANCELLED, ET_DROP_TARGET_EVENT, // GestureEvent types ET_GESTURE_SCROLL_BEGIN, ET_GESTURE_TYPE_START = ET_GESTURE_SCROLL_BEGIN, ET_GESTURE_SCROLL_END, ET_GESTURE_SCROLL_UPDATE, ET_GESTURE_TAP, ET_GESTURE_TAP_DOWN, ET_GESTURE_TAP_CANCEL, ET_GESTURE_TAP_UNCONFIRMED, // User tapped, but the tap delay hasn't expired. ET_GESTURE_DOUBLE_TAP, ET_GESTURE_BEGIN, // The first event sent when each finger is pressed. ET_GESTURE_END, // Sent for each released finger. ET_GESTURE_TWO_FINGER_TAP, ET_GESTURE_PINCH_BEGIN, ET_GESTURE_PINCH_END, ET_GESTURE_PINCH_UPDATE, ET_GESTURE_LONG_PRESS, ET_GESTURE_LONG_TAP, // A SWIPE gesture can happen at the end of a touch sequence involving one or // more fingers if the finger velocity was high enough when the first finger // was released. ET_GESTURE_SWIPE, ET_GESTURE_SHOW_PRESS, // Sent by Win8+ metro when the user swipes from the bottom or top. ET_GESTURE_WIN8_EDGE_SWIPE, // Scroll support. // TODO[davemoore] we need to unify these events w/ touch and gestures. ET_SCROLL, ET_SCROLL_FLING_START, ET_SCROLL_FLING_CANCEL, ET_GESTURE_TYPE_END = ET_SCROLL_FLING_CANCEL, // Sent by the system to indicate any modal type operations, such as drag and // drop or menus, should stop. ET_CANCEL_MODE, // Sent by the CrOS gesture library for interesting patterns that we want // to track with the UMA system. ET_UMA_DATA, // Must always be last. User namespace starts above this value. // See ui::RegisterCustomEventType(). ET_LAST }; // Event flags currently supported. It is OK to add values to the middle of // this list and/or reorder it, but make sure you also touch the various other // enums/constants that want to stay in sync with this. enum EventFlags { EF_NONE = 0, // Used to denote no flags explicitly // Universally applicable status bits. EF_IS_SYNTHESIZED = 1 << 0, // Modifier key state. EF_SHIFT_DOWN = 1 << 1, EF_CONTROL_DOWN = 1 << 2, EF_ALT_DOWN = 1 << 3, EF_COMMAND_DOWN = 1 << 4, // GUI Key (e.g. Command on OS X // keyboards, Search on Chromebook // keyboards, Windows on MS-oriented // keyboards) EF_ALTGR_DOWN = 1 << 5, EF_MOD3_DOWN = 1 << 6, // Other keyboard state. EF_NUM_LOCK_ON = 1 << 7, EF_CAPS_LOCK_ON = 1 << 8, EF_SCROLL_LOCK_ON = 1 << 9, // Mouse buttons. EF_LEFT_MOUSE_BUTTON = 1 << 10, EF_MIDDLE_MOUSE_BUTTON = 1 << 11, EF_RIGHT_MOUSE_BUTTON = 1 << 12, EF_BACK_MOUSE_BUTTON = 1 << 13, EF_FORWARD_MOUSE_BUTTON = 1 << 14, }; // Flags specific to key events enum KeyEventFlags { EF_IME_FABRICATED_KEY = 1 << 15, // Key event fabricated by the underlying // IME without a user action. // (Linux X11 only) EF_IS_REPEAT = 1 << 16, EF_FINAL = 1 << 17, // Do not remap; the event was created with // the desired final values. EF_IS_EXTENDED_KEY = 1 << 18, // Windows extended key (see WM_KEYDOWN doc) }; // Flags specific to mouse events enum MouseEventFlags { EF_IS_DOUBLE_CLICK = 1 << 15, EF_IS_TRIPLE_CLICK = 1 << 16, EF_IS_NON_CLIENT = 1 << 17, EF_FROM_TOUCH = 1 << 18, // Indicates this mouse event is generated // from an unconsumed touch/gesture event. EF_TOUCH_ACCESSIBILITY = 1 << 19, // Indicates this event was generated from // touch accessibility mode. }; // Result of dispatching an event. enum EventResult { ER_UNHANDLED = 0, // The event hasn't been handled. The event can be // propagated to other handlers. ER_HANDLED = 1 << 0, // The event has already been handled, but it can // still be propagated to other handlers. ER_CONSUMED = 1 << 1, // The event has been handled, and it should not be // propagated to other handlers. ER_DISABLE_SYNC_HANDLING = 1 << 2, // The event shouldn't be handled synchronously. This // happens if the event is being handled // asynchronously, or if the event is invalid and // shouldn't be handled at all. }; // Phase of the event dispatch. enum EventPhase { EP_PREDISPATCH, EP_PRETARGET, EP_TARGET, EP_POSTTARGET, EP_POSTDISPATCH }; // Device ID for Touch and Key Events. enum EventDeviceId { ED_UNKNOWN_DEVICE = -1 }; // Pointing device type. enum class EventPointerType : int { POINTER_TYPE_UNKNOWN = 0, POINTER_TYPE_MOUSE, POINTER_TYPE_PEN, POINTER_TYPE_TOUCH, }; } // namespace ui #endif // UI_EVENTS_EVENT_CONSTANTS_H_