15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#ifndef UI_EVENTS_EVENT_CONSTANTS_H_
6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#define UI_EVENTS_EVENT_CONSTANTS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Event types. (prefixed because of a conflict with windows headers)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EventType {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_UNKNOWN = 0,
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_PRESSED,
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_DRAGGED,
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_RELEASED,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_MOVED,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_ENTERED,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_EXITED,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_KEY_PRESSED,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_KEY_RELEASED,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSEWHEEL,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_MOUSE_CAPTURE_CHANGED,  // Event has no location.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TOUCH_RELEASED,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TOUCH_PRESSED,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TOUCH_MOVED,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TOUCH_CANCELLED,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_DROP_TARGET_EVENT,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TRANSLATED_KEY_PRESS,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TRANSLATED_KEY_RELEASE,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // GestureEvent types
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_SCROLL_BEGIN,
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_TYPE_START = ET_GESTURE_SCROLL_BEGIN,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_SCROLL_END,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_SCROLL_UPDATE,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TAP,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TAP_DOWN,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TAP_CANCEL,
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_TAP_UNCONFIRMED, // User tapped, but the tap delay hasn't expired.
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_DOUBLE_TAP,
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ET_GESTURE_BEGIN,  // The first event sent when each finger is pressed.
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ET_GESTURE_END,    // Sent for each released finger.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TWO_FINGER_TAP,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_PINCH_BEGIN,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_PINCH_END,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_PINCH_UPDATE,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_LONG_PRESS,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_LONG_TAP,
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // A SWIPE gesture can happen at the end of a touch sequence involving one or
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // more fingers if the finger velocity was high enough when the first finger
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // was released.
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ET_GESTURE_SWIPE,
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ET_GESTURE_SHOW_PRESS,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Sent by Win8+ metro when the user swipes from the bottom or top.
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  ET_GESTURE_WIN8_EDGE_SWIPE,
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Scroll support.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO[davemoore] we need to unify these events w/ touch and gestures.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_SCROLL,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_SCROLL_FLING_START,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_SCROLL_FLING_CANCEL,
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_TYPE_END = ET_SCROLL_FLING_CANCEL,
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Sent by the system to indicate any modal type operations, such as drag and
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // drop or menus, should stop.
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ET_CANCEL_MODE,
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Sent by the CrOS gesture library for interesting patterns that we want
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // to track with the UMA system.
71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ET_UMA_DATA,
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Must always be last. User namespace starts above this value.
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // See ui::RegisterCustomEventType().
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ET_LAST
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Event flags currently supported
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EventFlags {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_NONE                = 0,       // Used to denote no flags explicitly
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_CAPS_LOCK_DOWN      = 1 << 0,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_SHIFT_DOWN          = 1 << 1,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_CONTROL_DOWN        = 1 << 2,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_ALT_DOWN            = 1 << 3,
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_LEFT_MOUSE_BUTTON   = 1 << 4,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_MIDDLE_MOUSE_BUTTON = 1 << 5,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_RIGHT_MOUSE_BUTTON  = 1 << 6,
88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EF_COMMAND_DOWN        = 1 << 7,  // GUI Key (e.g. Command on OS X keyboards,
89010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                                    // Search on Chromebook keyboards,
90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                                    // Windows on MS-oriented keyboards)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_EXTENDED            = 1 << 8,  // Windows extended key (see WM_KEYDOWN doc)
927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EF_IS_SYNTHESIZED      = 1 << 9,
93a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  EF_ALTGR_DOWN          = 1 << 10,
94c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  EF_MOD3_DOWN           = 1 << 11,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Flags specific to key events
980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochenum KeyEventFlags {
990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EF_NUMPAD_KEY         = 1 << 16,  // Key originates from number pad (Xkb only)
1005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EF_IME_FABRICATED_KEY = 1 << 17,  // Key event fabricated by the underlying
1015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                    // IME without a user action.
1025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                                    // (Linux X11 only)
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EF_IS_REPEAT          = 1 << 18,
10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EF_FUNCTION_KEY       = 1 << 19,  // Key originates from function key row
1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EF_FINAL              = 1 << 20,  // Do not remap; the event was created with
1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                    // the desired final values.
1070529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
1080529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Flags specific to mouse events
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum MouseEventFlags {
111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EF_IS_DOUBLE_CLICK     = 1 << 16,
112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EF_IS_TRIPLE_CLICK     = 1 << 17,
113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EF_IS_NON_CLIENT       = 1 << 18,
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EF_FROM_TOUCH          = 1 << 19,  // Indicates this mouse event is generated
115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                     // from an unconsumed touch/gesture event.
116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EF_TOUCH_ACCESSIBILITY = 1 << 20,  // Indicates this event was generated from
117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                     // touch accessibility mode.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Result of dispatching an event.
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EventResult {
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ER_UNHANDLED = 0,       // The event hasn't been handled. The event can be
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // propagated to other handlers.
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ER_HANDLED   = 1 << 0,  // The event has already been handled, but it can
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // still be propagated to other handlers.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ER_CONSUMED  = 1 << 1,  // The event has been handled, and it should not be
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // propagated to other handlers.
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Phase of the event dispatch.
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EventPhase {
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_PREDISPATCH,
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_PRETARGET,
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_TARGET,
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_POSTTARGET,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_POSTDISPATCH
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Device ID for Touch and Key Events.
140116680a4aac90f2aa7413d9095a592090648e557Ben Murdochenum EventDeviceId {
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ED_UNKNOWN_DEVICE = -1
142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
146d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // UI_EVENTS_EVENT_CONSTANTS_H_
147