7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/*
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Copyright © 2009 Red Hat, Inc.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Permission is hereby granted, free of charge, to any person obtaining a
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * copy of this software and associated documentation files (the "Software"),
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * to deal in the Software without restriction, including without limitation
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * and/or sell copies of the Software, and to permit persons to whom the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Software is furnished to do so, subject to the following conditions:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * The above copyright notice and this permission notice (including the next
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * paragraph) shall be included in all copies or substantial portions of the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Software.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * DEALINGS IN THE SOFTWARE.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef _XI2_H_
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define _XI2_H_
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Indices into the versions[] array (XExtInt.c). Used as a index to
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * retrieve the minimum version of XI from _XiCheckExtInit.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * For indices 0 to 6 see XI.h */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef Dont_Check /* defined in XI.h */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define Dont_Check 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XInput_2_0 7
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_2_Major 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_2_Minor 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Property event flags */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIPropertyDeleted 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIPropertyCreated 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIPropertyModified 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Enter/Leave and Focus In/Out modes */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyNormal 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyGrab 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyUngrab 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyWhileGrabbed 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyPassiveGrab 4
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyPassiveUngrab 5
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Enter/Leave and focus In/out detail */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyAncestor 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyVirtual 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyInferior 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyNonlinear 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyNonlinearVirtual 4
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyPointer 5
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyPointerRoot 6
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XINotifyDetailNone 7
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Passive grab types */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIGrabtypeButton 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIGrabtypeKeycode 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIGrabtypeEnter 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIGrabtypeFocusIn 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Passive grab modifier */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAnyModifier (1U << 31)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAnyButton 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAnyKeycode 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* XIAllowEvents event-modes */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAsyncDevice 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISyncDevice 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIReplayDevice 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAsyncPairedDevice 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAsyncPair 4
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISyncPair 5
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* DeviceChangedEvent change reasons */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlaveSwitch 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIDeviceChange 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Hierarchy flags */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIMasterAdded (1 << 0)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIMasterRemoved (1 << 1)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlaveAdded (1 << 2)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlaveRemoved (1 << 3)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlaveAttached (1 << 4)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlaveDetached (1 << 5)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIDeviceEnabled (1 << 6)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIDeviceDisabled (1 << 7)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* ChangeHierarchy constants */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAddMaster 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIRemoveMaster 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAttachSlave 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIDetachSlave 4
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAttachToMaster 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIFloating 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Valuator modes */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIModeRelative 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIModeAbsolute 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Device types */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIMasterPointer 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIMasterKeyboard 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlavePointer 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISlaveKeyboard 4
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIFloatingSlave 5
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Device classes */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIKeyClass 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIButtonClass 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIValuatorClass 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Device event flags (common) */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Device event flags (key events only) */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIKeyRepeat (1 << 16)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Device event flags (pointer events only) */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* XI2 event mask macros */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] |= (1 << ((event) & 7)))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIClearMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] &= ~(1 << ((event) & 7)))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIMaskIsSet(ptr, event) (((unsigned char*)(ptr))[(event)>>3] & (1 << ((event) & 7)))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIMaskLen(event) (((event + 7) >> 3))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Fake device ID's for event selection */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAllDevices 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XIAllMasterDevices 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Event types */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_DeviceChanged 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_KeyPress 2
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_KeyRelease 3
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_ButtonPress 4
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_ButtonRelease 5
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_Motion 6
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_Enter 7
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_Leave 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_FocusIn 9
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_FocusOut 10
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_HierarchyChanged 11
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_PropertyEvent 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawKeyPress 13
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawKeyRelease 14
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawButtonPress 15
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawButtonRelease 16
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawMotion 17
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_LASTEVENT XI_RawMotion
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* NOTE: XI2LASTEVENT in xserver/include/inputstr.h must be the same value
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * as XI_LASTEVENT if the server is supposed to handle masks etc. for this
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * type of event. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Event masks.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Note: the protocol spec defines a mask to be of (1 << type). Clients are
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * free to create masks by bitshifting instead of using these defines.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_DeviceChangedMask (1 << XI_DeviceChanged)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_KeyPressMask (1 << XI_KeyPress)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_KeyReleaseMask (1 << XI_KeyRelease)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_ButtonPressMask (1 << XI_ButtonPress)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_ButtonReleaseMask (1 << XI_ButtonRelease)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_MotionMask (1 << XI_Motion)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_EnterMask (1 << XI_Enter)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_LeaveMask (1 << XI_Leave)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_FocusInMask (1 << XI_FocusIn)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_FocusOutMask (1 << XI_FocusOut)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_HierarchyChangedMask (1 << XI_HierarchyChanged)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_PropertyEventMask (1 << XI_PropertyEvent)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawKeyPressMask (1 << XI_RawKeyPress)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawKeyReleaseMask (1 << XI_RawKeyRelease)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawButtonPressMask (1 << XI_RawButtonPress)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawButtonReleaseMask (1 << XI_RawButtonRelease)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI_RawMotionMask (1 << XI_RawMotion)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif /* _XI2_H_ */