event_constants.h revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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_STATIONARY,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TOUCH_CANCELLED,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_DROP_TARGET_EVENT,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TRANSLATED_KEY_PRESS,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_TRANSLATED_KEY_RELEASE,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // GestureEvent types
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_SCROLL_BEGIN,
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_TYPE_START = ET_GESTURE_SCROLL_BEGIN,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_SCROLL_END,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_SCROLL_UPDATE,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TAP,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TAP_DOWN,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TAP_CANCEL,
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_TAP_UNCONFIRMED, // User tapped, but the tap delay hasn't expired.
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ET_GESTURE_DOUBLE_TAP,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_BEGIN,  // Sent before any other gesture types.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_END,    // Sent after any other gestures.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_TWO_FINGER_TAP,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_PINCH_BEGIN,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_PINCH_END,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_PINCH_UPDATE,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_LONG_PRESS,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_LONG_TAP,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A SWIPE gesture can happen at the end of a TAP_UP gesture if the
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // finger(s) were moving quickly before they are released.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ET_GESTURE_MULTIFINGER_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,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_COMMAND_DOWN        = 1 << 7,  // Only useful on OSX
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_EXTENDED            = 1 << 8,  // Windows extended key (see WM_KEYDOWN doc)
907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EF_IS_SYNTHESIZED      = 1 << 9,
91a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  EF_ALTGR_DOWN          = 1 << 10,
92c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  EF_MOD3_DOWN           = 1 << 11,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
950529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Flags specific to key events
960529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochenum KeyEventFlags {
970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  EF_NUMPAD_KEY         = 1 << 16,  // Key originates from number pad (Xkb only)
980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Flags specific to mouse events
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum MouseEventFlags {
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_IS_DOUBLE_CLICK    = 1 << 16,
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_IS_TRIPLE_CLICK    = 1 << 17,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EF_IS_NON_CLIENT      = 1 << 18,
1057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  EF_FROM_TOUCH         = 1 << 19,  // Indicates this mouse event is generated
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    // from an unconsumed touch/gesture event.
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Result of dispatching an event.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EventResult {
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ER_UNHANDLED = 0,       // The event hasn't been handled. The event can be
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // propagated to other handlers.
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ER_HANDLED   = 1 << 0,  // The event has already been handled, but it can
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // still be propagated to other handlers.
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ER_CONSUMED  = 1 << 1,  // The event has been handled, and it should not be
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // propagated to other handlers.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Phase of the event dispatch.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EventPhase {
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_PREDISPATCH,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_PRETARGET,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_TARGET,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_POSTTARGET,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EP_POSTDISPATCH
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
130d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // UI_EVENTS_EVENT_CONSTANTS_H_
131