XI2.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  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. #ifndef _XI2_H_
  25. #define _XI2_H_
  26. #define XInput_2_0 7
  27. /* DO NOT ADD TO THIS LIST. These are libXi-specific defines.
  28. See commit libXi-1.4.2-21-ge8531dd */
  29. #define XI_2_Major 2
  30. #define XI_2_Minor 4
  31. /* Property event flags */
  32. #define XIPropertyDeleted 0
  33. #define XIPropertyCreated 1
  34. #define XIPropertyModified 2
  35. /* Property modes */
  36. #define XIPropModeReplace 0
  37. #define XIPropModePrepend 1
  38. #define XIPropModeAppend 2
  39. /* Special property type used for XIGetProperty */
  40. #define XIAnyPropertyType 0L
  41. /* Enter/Leave and Focus In/Out modes */
  42. #define XINotifyNormal 0
  43. #define XINotifyGrab 1
  44. #define XINotifyUngrab 2
  45. #define XINotifyWhileGrabbed 3
  46. #define XINotifyPassiveGrab 4
  47. #define XINotifyPassiveUngrab 5
  48. /* Enter/Leave and focus In/out detail */
  49. #define XINotifyAncestor 0
  50. #define XINotifyVirtual 1
  51. #define XINotifyInferior 2
  52. #define XINotifyNonlinear 3
  53. #define XINotifyNonlinearVirtual 4
  54. #define XINotifyPointer 5
  55. #define XINotifyPointerRoot 6
  56. #define XINotifyDetailNone 7
  57. /* Grab modes */
  58. #define XIGrabModeSync 0
  59. #define XIGrabModeAsync 1
  60. #define XIGrabModeTouch 2
  61. /* Grab reply status codes */
  62. #define XIGrabSuccess 0
  63. #define XIAlreadyGrabbed 1
  64. #define XIGrabInvalidTime 2
  65. #define XIGrabNotViewable 3
  66. #define XIGrabFrozen 4
  67. /* Grab owner events values */
  68. #define XIOwnerEvents True
  69. #define XINoOwnerEvents False
  70. /* Passive grab types */
  71. #define XIGrabtypeButton 0
  72. #define XIGrabtypeKeycode 1
  73. #define XIGrabtypeEnter 2
  74. #define XIGrabtypeFocusIn 3
  75. #define XIGrabtypeTouchBegin 4
  76. #define XIGrabtypeGesturePinchBegin 5
  77. #define XIGrabtypeGestureSwipeBegin 6
  78. /* Passive grab modifier */
  79. #define XIAnyModifier (1U << 31)
  80. #define XIAnyButton 0
  81. #define XIAnyKeycode 0
  82. /* XIAllowEvents event-modes */
  83. #define XIAsyncDevice 0
  84. #define XISyncDevice 1
  85. #define XIReplayDevice 2
  86. #define XIAsyncPairedDevice 3
  87. #define XIAsyncPair 4
  88. #define XISyncPair 5
  89. #define XIAcceptTouch 6
  90. #define XIRejectTouch 7
  91. /* DeviceChangedEvent change reasons */
  92. #define XISlaveSwitch 1
  93. #define XIDeviceChange 2
  94. /* Hierarchy flags */
  95. #define XIMasterAdded (1 << 0)
  96. #define XIMasterRemoved (1 << 1)
  97. #define XISlaveAdded (1 << 2)
  98. #define XISlaveRemoved (1 << 3)
  99. #define XISlaveAttached (1 << 4)
  100. #define XISlaveDetached (1 << 5)
  101. #define XIDeviceEnabled (1 << 6)
  102. #define XIDeviceDisabled (1 << 7)
  103. /* ChangeHierarchy constants */
  104. #define XIAddMaster 1
  105. #define XIRemoveMaster 2
  106. #define XIAttachSlave 3
  107. #define XIDetachSlave 4
  108. #define XIAttachToMaster 1
  109. #define XIFloating 2
  110. /* Valuator modes */
  111. #define XIModeRelative 0
  112. #define XIModeAbsolute 1
  113. /* Device types */
  114. #define XIMasterPointer 1
  115. #define XIMasterKeyboard 2
  116. #define XISlavePointer 3
  117. #define XISlaveKeyboard 4
  118. #define XIFloatingSlave 5
  119. /* Device classes: classes that are not identical to Xi 1.x classes must be
  120. * numbered starting from 8. */
  121. #define XIKeyClass 0
  122. #define XIButtonClass 1
  123. #define XIValuatorClass 2
  124. #define XIScrollClass 3
  125. #define XITouchClass 8
  126. #define XIGestureClass 9
  127. /* Scroll class types */
  128. #define XIScrollTypeVertical 1
  129. #define XIScrollTypeHorizontal 2
  130. /* Scroll class flags */
  131. #define XIScrollFlagNoEmulation (1 << 0)
  132. #define XIScrollFlagPreferred (1 << 1)
  133. /* Device event flags (common) */
  134. /* Device event flags (key events only) */
  135. #define XIKeyRepeat (1 << 16)
  136. /* Device event flags (pointer events only) */
  137. #define XIPointerEmulated (1 << 16)
  138. /* Device event flags (touch events only) */
  139. #define XITouchPendingEnd (1 << 16)
  140. #define XITouchEmulatingPointer (1 << 17)
  141. /* Barrier event flags */
  142. #define XIBarrierPointerReleased (1 << 0)
  143. #define XIBarrierDeviceIsGrabbed (1 << 1)
  144. /* Gesture pinch event flags */
  145. #define XIGesturePinchEventCancelled (1 << 0)
  146. /* Gesture swipe event flags */
  147. #define XIGestureSwipeEventCancelled (1 << 0)
  148. /* Touch modes */
  149. #define XIDirectTouch 1
  150. #define XIDependentTouch 2
  151. /* XI2 event mask macros */
  152. #define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] |= (1 << ((event) & 7)))
  153. #define XIClearMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] &= ~(1 << ((event) & 7)))
  154. #define XIMaskIsSet(ptr, event) (((unsigned char*)(ptr))[(event)>>3] & (1 << ((event) & 7)))
  155. #define XIMaskLen(event) (((event) >> 3) + 1)
  156. /* Fake device ID's for event selection */
  157. #define XIAllDevices 0
  158. #define XIAllMasterDevices 1
  159. /* Event types */
  160. #define XI_DeviceChanged 1
  161. #define XI_KeyPress 2
  162. #define XI_KeyRelease 3
  163. #define XI_ButtonPress 4
  164. #define XI_ButtonRelease 5
  165. #define XI_Motion 6
  166. #define XI_Enter 7
  167. #define XI_Leave 8
  168. #define XI_FocusIn 9
  169. #define XI_FocusOut 10
  170. #define XI_HierarchyChanged 11
  171. #define XI_PropertyEvent 12
  172. #define XI_RawKeyPress 13
  173. #define XI_RawKeyRelease 14
  174. #define XI_RawButtonPress 15
  175. #define XI_RawButtonRelease 16
  176. #define XI_RawMotion 17
  177. #define XI_TouchBegin 18 /* XI 2.2 */
  178. #define XI_TouchUpdate 19
  179. #define XI_TouchEnd 20
  180. #define XI_TouchOwnership 21
  181. #define XI_RawTouchBegin 22
  182. #define XI_RawTouchUpdate 23
  183. #define XI_RawTouchEnd 24
  184. #define XI_BarrierHit 25 /* XI 2.3 */
  185. #define XI_BarrierLeave 26
  186. #define XI_GesturePinchBegin 27 /* XI 2.4 */
  187. #define XI_GesturePinchUpdate 28
  188. #define XI_GesturePinchEnd 29
  189. #define XI_GestureSwipeBegin 30
  190. #define XI_GestureSwipeUpdate 31
  191. #define XI_GestureSwipeEnd 32
  192. #define XI_LASTEVENT XI_GestureSwipeEnd
  193. /* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value
  194. * as XI_LASTEVENT if the server is supposed to handle masks etc. for this
  195. * type of event. */
  196. /* Event masks.
  197. * Note: the protocol spec defines a mask to be of (1 << type). Clients are
  198. * free to create masks by bitshifting instead of using these defines.
  199. */
  200. #define XI_DeviceChangedMask (1 << XI_DeviceChanged)
  201. #define XI_KeyPressMask (1 << XI_KeyPress)
  202. #define XI_KeyReleaseMask (1 << XI_KeyRelease)
  203. #define XI_ButtonPressMask (1 << XI_ButtonPress)
  204. #define XI_ButtonReleaseMask (1 << XI_ButtonRelease)
  205. #define XI_MotionMask (1 << XI_Motion)
  206. #define XI_EnterMask (1 << XI_Enter)
  207. #define XI_LeaveMask (1 << XI_Leave)
  208. #define XI_FocusInMask (1 << XI_FocusIn)
  209. #define XI_FocusOutMask (1 << XI_FocusOut)
  210. #define XI_HierarchyChangedMask (1 << XI_HierarchyChanged)
  211. #define XI_PropertyEventMask (1 << XI_PropertyEvent)
  212. #define XI_RawKeyPressMask (1 << XI_RawKeyPress)
  213. #define XI_RawKeyReleaseMask (1 << XI_RawKeyRelease)
  214. #define XI_RawButtonPressMask (1 << XI_RawButtonPress)
  215. #define XI_RawButtonReleaseMask (1 << XI_RawButtonRelease)
  216. #define XI_RawMotionMask (1 << XI_RawMotion)
  217. #define XI_TouchBeginMask (1 << XI_TouchBegin)
  218. #define XI_TouchEndMask (1 << XI_TouchEnd)
  219. #define XI_TouchOwnershipChangedMask (1 << XI_TouchOwnership)
  220. #define XI_TouchUpdateMask (1 << XI_TouchUpdate)
  221. #define XI_RawTouchBeginMask (1 << XI_RawTouchBegin)
  222. #define XI_RawTouchEndMask (1 << XI_RawTouchEnd)
  223. #define XI_RawTouchUpdateMask (1 << XI_RawTouchUpdate)
  224. #define XI_BarrierHitMask (1 << XI_BarrierHit)
  225. #define XI_BarrierLeaveMask (1 << XI_BarrierLeave)
  226. #endif /* _XI2_H_ */