1*385f2b93SAndroid Build Coastguard Worker // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2*385f2b93SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*385f2b93SAndroid Build Coastguard Worker // found in the LICENSE file. 4*385f2b93SAndroid Build Coastguard Worker 5*385f2b93SAndroid Build Coastguard Worker #ifndef UI_EVENTS_EVENT_CONSTANTS_H_ 6*385f2b93SAndroid Build Coastguard Worker #define UI_EVENTS_EVENT_CONSTANTS_H_ 7*385f2b93SAndroid Build Coastguard Worker 8*385f2b93SAndroid Build Coastguard Worker #include "build/build_config.h" 9*385f2b93SAndroid Build Coastguard Worker 10*385f2b93SAndroid Build Coastguard Worker namespace ui { 11*385f2b93SAndroid Build Coastguard Worker 12*385f2b93SAndroid Build Coastguard Worker // Event flags currently supported. It is OK to add values to the middle of 13*385f2b93SAndroid Build Coastguard Worker // this list and/or reorder it, but make sure you also touch the various other 14*385f2b93SAndroid Build Coastguard Worker // enums/constants that want to stay in sync with this. For example, 15*385f2b93SAndroid Build Coastguard Worker // KeyEventFlags and MouseEventFlags should not overlap EventFlags. 16*385f2b93SAndroid Build Coastguard Worker enum EventFlags { 17*385f2b93SAndroid Build Coastguard Worker EF_NONE = 0, // Used to denote no flags explicitly 18*385f2b93SAndroid Build Coastguard Worker 19*385f2b93SAndroid Build Coastguard Worker // Universally applicable status bits. 20*385f2b93SAndroid Build Coastguard Worker EF_IS_SYNTHESIZED = 1 << 0, 21*385f2b93SAndroid Build Coastguard Worker 22*385f2b93SAndroid Build Coastguard Worker // Modifier key state. 23*385f2b93SAndroid Build Coastguard Worker EF_SHIFT_DOWN = 1 << 1, 24*385f2b93SAndroid Build Coastguard Worker EF_CONTROL_DOWN = 1 << 2, 25*385f2b93SAndroid Build Coastguard Worker EF_ALT_DOWN = 1 << 3, 26*385f2b93SAndroid Build Coastguard Worker EF_COMMAND_DOWN = 1 << 4, // GUI Key (e.g. Command on OS X 27*385f2b93SAndroid Build Coastguard Worker // keyboards, Search on Chromebook 28*385f2b93SAndroid Build Coastguard Worker // keyboards, Windows on MS-oriented 29*385f2b93SAndroid Build Coastguard Worker // keyboards) 30*385f2b93SAndroid Build Coastguard Worker EF_FUNCTION_DOWN = 1 << 5, // Function key. 31*385f2b93SAndroid Build Coastguard Worker EF_ALTGR_DOWN = 1 << 6, 32*385f2b93SAndroid Build Coastguard Worker EF_MOD3_DOWN = 1 << 7, 33*385f2b93SAndroid Build Coastguard Worker 34*385f2b93SAndroid Build Coastguard Worker // Other keyboard states. 35*385f2b93SAndroid Build Coastguard Worker EF_NUM_LOCK_ON = 1 << 8, 36*385f2b93SAndroid Build Coastguard Worker EF_CAPS_LOCK_ON = 1 << 9, 37*385f2b93SAndroid Build Coastguard Worker EF_SCROLL_LOCK_ON = 1 << 10, 38*385f2b93SAndroid Build Coastguard Worker 39*385f2b93SAndroid Build Coastguard Worker // Mouse buttons. 40*385f2b93SAndroid Build Coastguard Worker EF_LEFT_MOUSE_BUTTON = 1 << 11, 41*385f2b93SAndroid Build Coastguard Worker EF_MIDDLE_MOUSE_BUTTON = 1 << 12, 42*385f2b93SAndroid Build Coastguard Worker EF_RIGHT_MOUSE_BUTTON = 1 << 13, 43*385f2b93SAndroid Build Coastguard Worker EF_BACK_MOUSE_BUTTON = 1 << 14, 44*385f2b93SAndroid Build Coastguard Worker EF_FORWARD_MOUSE_BUTTON = 1 << 15, 45*385f2b93SAndroid Build Coastguard Worker EF_MOUSE_BUTTON = EF_LEFT_MOUSE_BUTTON | EF_MIDDLE_MOUSE_BUTTON | 46*385f2b93SAndroid Build Coastguard Worker EF_RIGHT_MOUSE_BUTTON | EF_BACK_MOUSE_BUTTON | 47*385f2b93SAndroid Build Coastguard Worker EF_FORWARD_MOUSE_BUTTON, 48*385f2b93SAndroid Build Coastguard Worker 49*385f2b93SAndroid Build Coastguard Worker // An artificial value used to bridge platform differences. 50*385f2b93SAndroid Build Coastguard Worker // Many commands on Mac as Cmd+Key are the counterparts of 51*385f2b93SAndroid Build Coastguard Worker // Ctrl+Key on other platforms. 52*385f2b93SAndroid Build Coastguard Worker #if defined(OS_APPLE) 53*385f2b93SAndroid Build Coastguard Worker EF_PLATFORM_ACCELERATOR = EF_COMMAND_DOWN, 54*385f2b93SAndroid Build Coastguard Worker #else 55*385f2b93SAndroid Build Coastguard Worker EF_PLATFORM_ACCELERATOR = EF_CONTROL_DOWN, 56*385f2b93SAndroid Build Coastguard Worker #endif 57*385f2b93SAndroid Build Coastguard Worker }; 58*385f2b93SAndroid Build Coastguard Worker 59*385f2b93SAndroid Build Coastguard Worker // Flags specific to key events. 60*385f2b93SAndroid Build Coastguard Worker // WARNING: If you add or remove values make sure traits for serializing these 61*385f2b93SAndroid Build Coastguard Worker // values are updated. 62*385f2b93SAndroid Build Coastguard Worker enum KeyEventFlags { 63*385f2b93SAndroid Build Coastguard Worker EF_IME_FABRICATED_KEY = 1 << 16, // Key event fabricated by the underlying 64*385f2b93SAndroid Build Coastguard Worker // IME without a user action. 65*385f2b93SAndroid Build Coastguard Worker // (Linux X11 only) 66*385f2b93SAndroid Build Coastguard Worker EF_IS_REPEAT = 1 << 17, 67*385f2b93SAndroid Build Coastguard Worker EF_FINAL = 1 << 18, // Do not remap; the event was created with 68*385f2b93SAndroid Build Coastguard Worker // the desired final values. 69*385f2b93SAndroid Build Coastguard Worker EF_IS_EXTENDED_KEY = 1 << 19, // Windows extended key (see WM_KEYDOWN doc) 70*385f2b93SAndroid Build Coastguard Worker EF_IS_STYLUS_BUTTON = 1 << 20, // Event was generated by a stylus button 71*385f2b93SAndroid Build Coastguard Worker EF_MAX_KEY_EVENT_FLAGS_VALUE = (1 << 21) - 1, 72*385f2b93SAndroid Build Coastguard Worker }; 73*385f2b93SAndroid Build Coastguard Worker 74*385f2b93SAndroid Build Coastguard Worker // Flags specific to mouse events. 75*385f2b93SAndroid Build Coastguard Worker enum MouseEventFlags { 76*385f2b93SAndroid Build Coastguard Worker EF_IS_DOUBLE_CLICK = 1 << 16, 77*385f2b93SAndroid Build Coastguard Worker EF_IS_TRIPLE_CLICK = 1 << 17, 78*385f2b93SAndroid Build Coastguard Worker EF_IS_NON_CLIENT = 1 << 18, 79*385f2b93SAndroid Build Coastguard Worker EF_FROM_TOUCH = 1 << 19, // Indicates this mouse event is generated 80*385f2b93SAndroid Build Coastguard Worker // from an unconsumed touch/gesture event. 81*385f2b93SAndroid Build Coastguard Worker EF_TOUCH_ACCESSIBILITY = 1 << 20, // Indicates this event was generated from 82*385f2b93SAndroid Build Coastguard Worker // touch accessibility mode. 83*385f2b93SAndroid Build Coastguard Worker EF_CURSOR_HIDE = 1 << 21, // Indicates this mouse event is generated 84*385f2b93SAndroid Build Coastguard Worker // because the cursor was just hidden. This 85*385f2b93SAndroid Build Coastguard Worker // can be used to update hover state. 86*385f2b93SAndroid Build Coastguard Worker EF_PRECISION_SCROLLING_DELTA = // Indicates this mouse event is from high 87*385f2b93SAndroid Build Coastguard Worker 1 << 22, // precision touchpad and will come with a 88*385f2b93SAndroid Build Coastguard Worker // high precision delta. 89*385f2b93SAndroid Build Coastguard Worker EF_SCROLL_BY_PAGE = 1 << 23, // Indicates this mouse event is generated 90*385f2b93SAndroid Build Coastguard Worker // when users is requesting to scroll by 91*385f2b93SAndroid Build Coastguard Worker // pages. 92*385f2b93SAndroid Build Coastguard Worker EF_UNADJUSTED_MOUSE = 1 << 24, // Indicates this mouse event is unadjusted 93*385f2b93SAndroid Build Coastguard Worker // mouse events that has unadjusted movement 94*385f2b93SAndroid Build Coastguard Worker // delta, i.e. is from WM_INPUT on Windows. 95*385f2b93SAndroid Build Coastguard Worker }; 96*385f2b93SAndroid Build Coastguard Worker 97*385f2b93SAndroid Build Coastguard Worker // Result of dispatching an event. 98*385f2b93SAndroid Build Coastguard Worker enum EventResult { 99*385f2b93SAndroid Build Coastguard Worker ER_UNHANDLED = 0, // The event hasn't been handled. The event can be 100*385f2b93SAndroid Build Coastguard Worker // propagated to other handlers. 101*385f2b93SAndroid Build Coastguard Worker ER_HANDLED = 1 << 0, // The event has already been handled, but it can 102*385f2b93SAndroid Build Coastguard Worker // still be propagated to other handlers. 103*385f2b93SAndroid Build Coastguard Worker ER_CONSUMED = 1 << 1, // The event has been handled, and it should not be 104*385f2b93SAndroid Build Coastguard Worker // propagated to other handlers. 105*385f2b93SAndroid Build Coastguard Worker ER_DISABLE_SYNC_HANDLING = 106*385f2b93SAndroid Build Coastguard Worker 1 << 2, // The event shouldn't be handled synchronously. This 107*385f2b93SAndroid Build Coastguard Worker // happens if the event is being handled 108*385f2b93SAndroid Build Coastguard Worker // asynchronously, or if the event is invalid and 109*385f2b93SAndroid Build Coastguard Worker // shouldn't be handled at all. 110*385f2b93SAndroid Build Coastguard Worker }; 111*385f2b93SAndroid Build Coastguard Worker 112*385f2b93SAndroid Build Coastguard Worker // Phase of the event dispatch. 113*385f2b93SAndroid Build Coastguard Worker enum EventPhase { 114*385f2b93SAndroid Build Coastguard Worker EP_PREDISPATCH, 115*385f2b93SAndroid Build Coastguard Worker EP_PRETARGET, 116*385f2b93SAndroid Build Coastguard Worker EP_TARGET, 117*385f2b93SAndroid Build Coastguard Worker EP_POSTTARGET, 118*385f2b93SAndroid Build Coastguard Worker EP_POSTDISPATCH 119*385f2b93SAndroid Build Coastguard Worker }; 120*385f2b93SAndroid Build Coastguard Worker 121*385f2b93SAndroid Build Coastguard Worker // Phase information used for a ScrollEvent. ScrollEventPhase is for scroll 122*385f2b93SAndroid Build Coastguard Worker // stream from user gesture, EventMomentumPhase is for inertia scroll stream 123*385f2b93SAndroid Build Coastguard Worker // after user gesture. 124*385f2b93SAndroid Build Coastguard Worker enum class ScrollEventPhase { 125*385f2b93SAndroid Build Coastguard Worker // Event has no phase information. eg. the Event is not in a scroll stream. 126*385f2b93SAndroid Build Coastguard Worker kNone, 127*385f2b93SAndroid Build Coastguard Worker 128*385f2b93SAndroid Build Coastguard Worker // Event is the beginning of a scroll event stream. 129*385f2b93SAndroid Build Coastguard Worker kBegan, 130*385f2b93SAndroid Build Coastguard Worker 131*385f2b93SAndroid Build Coastguard Worker // Event is a scroll event with phase information. 132*385f2b93SAndroid Build Coastguard Worker kUpdate, 133*385f2b93SAndroid Build Coastguard Worker 134*385f2b93SAndroid Build Coastguard Worker // Event is the end of the current scroll event stream. 135*385f2b93SAndroid Build Coastguard Worker kEnd, 136*385f2b93SAndroid Build Coastguard Worker }; 137*385f2b93SAndroid Build Coastguard Worker 138*385f2b93SAndroid Build Coastguard Worker // Momentum phase information used for a ScrollEvent. 139*385f2b93SAndroid Build Coastguard Worker enum class EventMomentumPhase { 140*385f2b93SAndroid Build Coastguard Worker // Event is a non-momentum update to an event stream already begun. 141*385f2b93SAndroid Build Coastguard Worker NONE, 142*385f2b93SAndroid Build Coastguard Worker 143*385f2b93SAndroid Build Coastguard Worker // Event is the beginning of an event stream that may result in momentum. 144*385f2b93SAndroid Build Coastguard Worker // BEGAN vs MAY_BEGIN: 145*385f2b93SAndroid Build Coastguard Worker // - BEGAN means we already know the inertia scroll stream must happen after 146*385f2b93SAndroid Build Coastguard Worker // BEGAN event. On Windows touchpad, we sent this when receive the first 147*385f2b93SAndroid Build Coastguard Worker // inertia scroll event or Direct Manipulation state change to INERTIA. 148*385f2b93SAndroid Build Coastguard Worker // - MAY_BEGIN means the inertia scroll stream may happen after MAY_BEGIN 149*385f2b93SAndroid Build Coastguard Worker // event. On Mac, we send this when receive releaseTouches, but we do not 150*385f2b93SAndroid Build Coastguard Worker // know the inertia scroll stream will happen or not at that time. 151*385f2b93SAndroid Build Coastguard Worker BEGAN, 152*385f2b93SAndroid Build Coastguard Worker 153*385f2b93SAndroid Build Coastguard Worker // Event maybe the beginning of an event stream that may result in momentum. 154*385f2b93SAndroid Build Coastguard Worker // This state used on Mac. 155*385f2b93SAndroid Build Coastguard Worker MAY_BEGIN, 156*385f2b93SAndroid Build Coastguard Worker 157*385f2b93SAndroid Build Coastguard Worker // Event is an update while in a momentum phase. A "begin" event for the 158*385f2b93SAndroid Build Coastguard Worker // momentum phase portion of an event stream uses this also, but the scroll 159*385f2b93SAndroid Build Coastguard Worker // offsets will be zero. 160*385f2b93SAndroid Build Coastguard Worker INERTIAL_UPDATE, 161*385f2b93SAndroid Build Coastguard Worker 162*385f2b93SAndroid Build Coastguard Worker // Event marks the end of the current event stream. Note that this is also set 163*385f2b93SAndroid Build Coastguard Worker // for events that are not a "stream", but indicate both the start and end of 164*385f2b93SAndroid Build Coastguard Worker // the event (e.g. a mouse wheel tick). 165*385f2b93SAndroid Build Coastguard Worker END, 166*385f2b93SAndroid Build Coastguard Worker 167*385f2b93SAndroid Build Coastguard Worker // EventMomentumPhase can only be BLOCKED when ScrollEventPhase is kEnd. Event 168*385f2b93SAndroid Build Coastguard Worker // marks the end of the current event stream, when there will be no inertia 169*385f2b93SAndroid Build Coastguard Worker // scrolling after the user gesture. ScrollEventPhase must simultaneously be 170*385f2b93SAndroid Build Coastguard Worker // kEnd because that is when it is determined if an event stream that results 171*385f2b93SAndroid Build Coastguard Worker // in momentum will begin or not. This phase is only used on Windows. 172*385f2b93SAndroid Build Coastguard Worker BLOCKED, 173*385f2b93SAndroid Build Coastguard Worker }; 174*385f2b93SAndroid Build Coastguard Worker 175*385f2b93SAndroid Build Coastguard Worker // Device ID for Touch and Key Events. 176*385f2b93SAndroid Build Coastguard Worker enum EventDeviceId { 177*385f2b93SAndroid Build Coastguard Worker ED_UNKNOWN_DEVICE = -1 178*385f2b93SAndroid Build Coastguard Worker }; 179*385f2b93SAndroid Build Coastguard Worker 180*385f2b93SAndroid Build Coastguard Worker // Pointing device type. 181*385f2b93SAndroid Build Coastguard Worker enum class EventPointerType : int { 182*385f2b93SAndroid Build Coastguard Worker kUnknown, 183*385f2b93SAndroid Build Coastguard Worker kMouse, 184*385f2b93SAndroid Build Coastguard Worker kPen, 185*385f2b93SAndroid Build Coastguard Worker kTouch, 186*385f2b93SAndroid Build Coastguard Worker kEraser, 187*385f2b93SAndroid Build Coastguard Worker kMaxValue = kEraser, 188*385f2b93SAndroid Build Coastguard Worker }; 189*385f2b93SAndroid Build Coastguard Worker 190*385f2b93SAndroid Build Coastguard Worker // Device type for gesture events. 191*385f2b93SAndroid Build Coastguard Worker enum class GestureDeviceType : int { 192*385f2b93SAndroid Build Coastguard Worker DEVICE_UNKNOWN = 0, 193*385f2b93SAndroid Build Coastguard Worker DEVICE_TOUCHPAD, 194*385f2b93SAndroid Build Coastguard Worker DEVICE_TOUCHSCREEN, 195*385f2b93SAndroid Build Coastguard Worker }; 196*385f2b93SAndroid Build Coastguard Worker 197*385f2b93SAndroid Build Coastguard Worker } // namespace ui 198*385f2b93SAndroid Build Coastguard Worker 199*385f2b93SAndroid Build Coastguard Worker #endif // UI_EVENTS_EVENT_CONSTANTS_H_