xref: /aosp_15_r20/external/libpalmrejection/ui/events/event_constants.h (revision 385f2b9352baca56113422de7d5392250974f582)
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_