1/* 2 * Copyright © 2009 Red Hat, Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 * 23 */ 24 25#ifndef _XI2_H_ 26#define _XI2_H_ 27 28#define XInput_2_0 7 29/* DO NOT ADD TO THIS LIST. These are libXi-specific defines. 30 See commit libXi-1.4.2-21-ge8531dd */ 31 32#define XI_2_Major 2 33#define XI_2_Minor 4 34 35/* Property event flags */ 36#define XIPropertyDeleted 0 37#define XIPropertyCreated 1 38#define XIPropertyModified 2 39 40/* Property modes */ 41#define XIPropModeReplace 0 42#define XIPropModePrepend 1 43#define XIPropModeAppend 2 44 45/* Special property type used for XIGetProperty */ 46#define XIAnyPropertyType 0L 47 48/* Enter/Leave and Focus In/Out modes */ 49#define XINotifyNormal 0 50#define XINotifyGrab 1 51#define XINotifyUngrab 2 52#define XINotifyWhileGrabbed 3 53#define XINotifyPassiveGrab 4 54#define XINotifyPassiveUngrab 5 55 56/* Enter/Leave and focus In/out detail */ 57#define XINotifyAncestor 0 58#define XINotifyVirtual 1 59#define XINotifyInferior 2 60#define XINotifyNonlinear 3 61#define XINotifyNonlinearVirtual 4 62#define XINotifyPointer 5 63#define XINotifyPointerRoot 6 64#define XINotifyDetailNone 7 65 66/* Grab modes */ 67#define XIGrabModeSync 0 68#define XIGrabModeAsync 1 69#define XIGrabModeTouch 2 70 71/* Grab reply status codes */ 72#define XIGrabSuccess 0 73#define XIAlreadyGrabbed 1 74#define XIGrabInvalidTime 2 75#define XIGrabNotViewable 3 76#define XIGrabFrozen 4 77 78/* Grab owner events values */ 79#define XIOwnerEvents True 80#define XINoOwnerEvents False 81 82/* Passive grab types */ 83#define XIGrabtypeButton 0 84#define XIGrabtypeKeycode 1 85#define XIGrabtypeEnter 2 86#define XIGrabtypeFocusIn 3 87#define XIGrabtypeTouchBegin 4 88#define XIGrabtypeGesturePinchBegin 5 89#define XIGrabtypeGestureSwipeBegin 6 90 91/* Passive grab modifier */ 92#define XIAnyModifier (1U << 31) 93#define XIAnyButton 0 94#define XIAnyKeycode 0 95 96/* XIAllowEvents event-modes */ 97#define XIAsyncDevice 0 98#define XISyncDevice 1 99#define XIReplayDevice 2 100#define XIAsyncPairedDevice 3 101#define XIAsyncPair 4 102#define XISyncPair 5 103#define XIAcceptTouch 6 104#define XIRejectTouch 7 105 106/* DeviceChangedEvent change reasons */ 107#define XISlaveSwitch 1 108#define XIDeviceChange 2 109 110/* Hierarchy flags */ 111#define XIMasterAdded (1 << 0) 112#define XIMasterRemoved (1 << 1) 113#define XISlaveAdded (1 << 2) 114#define XISlaveRemoved (1 << 3) 115#define XISlaveAttached (1 << 4) 116#define XISlaveDetached (1 << 5) 117#define XIDeviceEnabled (1 << 6) 118#define XIDeviceDisabled (1 << 7) 119 120/* ChangeHierarchy constants */ 121#define XIAddMaster 1 122#define XIRemoveMaster 2 123#define XIAttachSlave 3 124#define XIDetachSlave 4 125 126#define XIAttachToMaster 1 127#define XIFloating 2 128 129/* Valuator modes */ 130#define XIModeRelative 0 131#define XIModeAbsolute 1 132 133/* Device types */ 134#define XIMasterPointer 1 135#define XIMasterKeyboard 2 136#define XISlavePointer 3 137#define XISlaveKeyboard 4 138#define XIFloatingSlave 5 139 140/* Device classes: classes that are not identical to Xi 1.x classes must be 141 * numbered starting from 8. */ 142#define XIKeyClass 0 143#define XIButtonClass 1 144#define XIValuatorClass 2 145#define XIScrollClass 3 146#define XITouchClass 8 147#define XIGestureClass 9 148 149/* Scroll class types */ 150#define XIScrollTypeVertical 1 151#define XIScrollTypeHorizontal 2 152 153/* Scroll class flags */ 154#define XIScrollFlagNoEmulation (1 << 0) 155#define XIScrollFlagPreferred (1 << 1) 156 157/* Device event flags (common) */ 158/* Device event flags (key events only) */ 159#define XIKeyRepeat (1 << 16) 160/* Device event flags (pointer events only) */ 161#define XIPointerEmulated (1 << 16) 162/* Device event flags (touch events only) */ 163#define XITouchPendingEnd (1 << 16) 164#define XITouchEmulatingPointer (1 << 17) 165 166/* Barrier event flags */ 167#define XIBarrierPointerReleased (1 << 0) 168#define XIBarrierDeviceIsGrabbed (1 << 1) 169 170/* Gesture pinch event flags */ 171#define XIGesturePinchEventCancelled (1 << 0) 172 173/* Gesture swipe event flags */ 174#define XIGestureSwipeEventCancelled (1 << 0) 175 176/* Touch modes */ 177#define XIDirectTouch 1 178#define XIDependentTouch 2 179 180/* XI2 event mask macros */ 181#define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] |= (1 << ((event) & 7))) 182#define XIClearMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] &= ~(1 << ((event) & 7))) 183#define XIMaskIsSet(ptr, event) (((unsigned char*)(ptr))[(event)>>3] & (1 << ((event) & 7))) 184#define XIMaskLen(event) (((event) >> 3) + 1) 185 186/* Fake device ID's for event selection */ 187#define XIAllDevices 0 188#define XIAllMasterDevices 1 189 190/* Event types */ 191#define XI_DeviceChanged 1 192#define XI_KeyPress 2 193#define XI_KeyRelease 3 194#define XI_ButtonPress 4 195#define XI_ButtonRelease 5 196#define XI_Motion 6 197#define XI_Enter 7 198#define XI_Leave 8 199#define XI_FocusIn 9 200#define XI_FocusOut 10 201#define XI_HierarchyChanged 11 202#define XI_PropertyEvent 12 203#define XI_RawKeyPress 13 204#define XI_RawKeyRelease 14 205#define XI_RawButtonPress 15 206#define XI_RawButtonRelease 16 207#define XI_RawMotion 17 208#define XI_TouchBegin 18 /* XI 2.2 */ 209#define XI_TouchUpdate 19 210#define XI_TouchEnd 20 211#define XI_TouchOwnership 21 212#define XI_RawTouchBegin 22 213#define XI_RawTouchUpdate 23 214#define XI_RawTouchEnd 24 215#define XI_BarrierHit 25 /* XI 2.3 */ 216#define XI_BarrierLeave 26 217#define XI_GesturePinchBegin 27 /* XI 2.4 */ 218#define XI_GesturePinchUpdate 28 219#define XI_GesturePinchEnd 29 220#define XI_GestureSwipeBegin 30 221#define XI_GestureSwipeUpdate 31 222#define XI_GestureSwipeEnd 32 223#define XI_LASTEVENT XI_GestureSwipeEnd 224/* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value 225 * as XI_LASTEVENT if the server is supposed to handle masks etc. for this 226 * type of event. */ 227 228/* Event masks. 229 * Note: the protocol spec defines a mask to be of (1 << type). Clients are 230 * free to create masks by bitshifting instead of using these defines. 231 */ 232#define XI_DeviceChangedMask (1 << XI_DeviceChanged) 233#define XI_KeyPressMask (1 << XI_KeyPress) 234#define XI_KeyReleaseMask (1 << XI_KeyRelease) 235#define XI_ButtonPressMask (1 << XI_ButtonPress) 236#define XI_ButtonReleaseMask (1 << XI_ButtonRelease) 237#define XI_MotionMask (1 << XI_Motion) 238#define XI_EnterMask (1 << XI_Enter) 239#define XI_LeaveMask (1 << XI_Leave) 240#define XI_FocusInMask (1 << XI_FocusIn) 241#define XI_FocusOutMask (1 << XI_FocusOut) 242#define XI_HierarchyChangedMask (1 << XI_HierarchyChanged) 243#define XI_PropertyEventMask (1 << XI_PropertyEvent) 244#define XI_RawKeyPressMask (1 << XI_RawKeyPress) 245#define XI_RawKeyReleaseMask (1 << XI_RawKeyRelease) 246#define XI_RawButtonPressMask (1 << XI_RawButtonPress) 247#define XI_RawButtonReleaseMask (1 << XI_RawButtonRelease) 248#define XI_RawMotionMask (1 << XI_RawMotion) 249#define XI_TouchBeginMask (1 << XI_TouchBegin) 250#define XI_TouchEndMask (1 << XI_TouchEnd) 251#define XI_TouchOwnershipChangedMask (1 << XI_TouchOwnership) 252#define XI_TouchUpdateMask (1 << XI_TouchUpdate) 253#define XI_RawTouchBeginMask (1 << XI_RawTouchBegin) 254#define XI_RawTouchEndMask (1 << XI_RawTouchEnd) 255#define XI_RawTouchUpdateMask (1 << XI_RawTouchUpdate) 256#define XI_BarrierHitMask (1 << XI_BarrierHit) 257#define XI_BarrierLeaveMask (1 << XI_BarrierLeave) 258 259#endif /* _XI2_H_ */ 260