309 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			309 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
| /************************************************************
 | |
| 
 | |
| Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
 | |
| 
 | |
|                         All Rights Reserved
 | |
| 
 | |
| Permission to use, copy, modify, and distribute this software and its
 | |
| documentation for any purpose and without fee is hereby granted,
 | |
| provided that the above copyright notice appear in all copies and that
 | |
| both that copyright notice and this permission notice appear in
 | |
| supporting documentation, and that the name of the above listed
 | |
| copyright holder(s) not be used in advertising or publicity pertaining
 | |
| to distribution of the software without specific, written prior
 | |
| permission.
 | |
| 
 | |
| THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
 | |
| TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 | |
| AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
 | |
| LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | |
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | |
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 | |
| OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | |
| 
 | |
| ********************************************************/
 | |
| 
 | |
| /********************************************************************
 | |
|  * Interface of 'exevents.c'
 | |
|  */
 | |
| 
 | |
| #ifndef EXEVENTS_H
 | |
| #define EXEVENTS_H
 | |
| 
 | |
| #include <X11/extensions/XIproto.h>
 | |
| #include "inputstr.h"
 | |
| 
 | |
| /***************************************************************
 | |
|  *              Interface available to drivers                 *
 | |
|  ***************************************************************/
 | |
| 
 | |
| /**
 | |
|  * Scroll flags for ::SetScrollValuator.
 | |
|  */
 | |
| enum ScrollFlags {
 | |
|     SCROLL_FLAG_NONE = 0,
 | |
|     /**
 | |
|      * Do not emulate legacy button events for valuator events on this axis.
 | |
|      */
 | |
|     SCROLL_FLAG_DONT_EMULATE = (1 << 1),
 | |
|     /**
 | |
|      * This axis is the preferred axis for valuator emulation for this axis'
 | |
|      * scroll type.
 | |
|      */
 | |
|     SCROLL_FLAG_PREFERRED = (1 << 2)
 | |
| };
 | |
| 
 | |
| extern _X_EXPORT int InitProximityClassDeviceStruct(DeviceIntPtr /* dev */ );
 | |
| 
 | |
| extern _X_EXPORT Bool InitValuatorAxisStruct(DeviceIntPtr /* dev */ ,
 | |
|                                              int /* axnum */ ,
 | |
|                                              Atom /* label */ ,
 | |
|                                              int /* minval */ ,
 | |
|                                              int /* maxval */ ,
 | |
|                                              int /* resolution */ ,
 | |
|                                              int /* min_res */ ,
 | |
|                                              int /* max_res */ ,
 | |
|                                              int /* mode */ );
 | |
| 
 | |
| extern _X_EXPORT Bool SetScrollValuator(DeviceIntPtr /* dev */ ,
 | |
|                                         int /* axnum */ ,
 | |
|                                         enum ScrollType /* type */ ,
 | |
|                                         double /* increment */ ,
 | |
|                                         int /* flags */ );
 | |
| 
 | |
| /* Input device properties */
 | |
| extern _X_EXPORT void XIDeleteAllDeviceProperties(DeviceIntPtr  /* device */
 | |
|     );
 | |
| 
 | |
| extern _X_EXPORT int XIDeleteDeviceProperty(DeviceIntPtr /* device */ ,
 | |
|                                             Atom /* property */ ,
 | |
|                                             Bool        /* fromClient */
 | |
|     );
 | |
| 
 | |
| extern _X_EXPORT int XIChangeDeviceProperty(DeviceIntPtr /* dev */ ,
 | |
|                                             Atom /* property */ ,
 | |
|                                             Atom /* type */ ,
 | |
|                                             int /* format */ ,
 | |
|                                             int /* mode */ ,
 | |
|                                             unsigned long /* len */ ,
 | |
|                                             const void * /* value */ ,
 | |
|                                             Bool        /* sendevent */
 | |
|     );
 | |
| 
 | |
| extern _X_EXPORT int XIGetDeviceProperty(DeviceIntPtr /* dev */ ,
 | |
|                                          Atom /* property */ ,
 | |
|                                          XIPropertyValuePtr *   /* value */
 | |
|     );
 | |
| 
 | |
| extern _X_EXPORT int XISetDevicePropertyDeletable(DeviceIntPtr /* dev */ ,
 | |
|                                                   Atom /* property */ ,
 | |
|                                                   Bool  /* deletable */
 | |
|     );
 | |
| 
 | |
| extern _X_EXPORT long XIRegisterPropertyHandler(DeviceIntPtr dev,
 | |
|                                                 int (*SetProperty) (DeviceIntPtr
 | |
|                                                                     dev,
 | |
|                                                                     Atom
 | |
|                                                                     property,
 | |
|                                                                     XIPropertyValuePtr
 | |
|                                                                     prop,
 | |
|                                                                     BOOL
 | |
|                                                                     checkonly),
 | |
|                                                 int (*GetProperty) (DeviceIntPtr
 | |
|                                                                     dev,
 | |
|                                                                     Atom
 | |
|                                                                     property),
 | |
|                                                 int (*DeleteProperty)
 | |
|                                                 (DeviceIntPtr dev,
 | |
|                                                  Atom property)
 | |
|     );
 | |
| 
 | |
| extern _X_EXPORT void XIUnregisterPropertyHandler(DeviceIntPtr dev, long id);
 | |
| 
 | |
| extern _X_EXPORT Atom XIGetKnownProperty(const char *name);
 | |
| 
 | |
| extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev);
 | |
| 
 | |
| extern _X_EXPORT int XIPropToInt(XIPropertyValuePtr val,
 | |
|                                  int *nelem_return, int **buf_return);
 | |
| 
 | |
| extern _X_EXPORT int XIPropToFloat(XIPropertyValuePtr val,
 | |
|                                    int *nelem_return, float **buf_return);
 | |
| 
 | |
| /****************************************************************************
 | |
|  *                      End of driver interface                             *
 | |
|  ****************************************************************************/
 | |
| 
 | |
| /**
 | |
|  * Attached to the devPrivates of each client. Specifies the version number as
 | |
|  * supported by the client.
 | |
|  */
 | |
| typedef struct _XIClientRec {
 | |
|     int major_version;
 | |
|     int minor_version;
 | |
| } XIClientRec, *XIClientPtr;
 | |
| 
 | |
| typedef struct _GrabParameters {
 | |
|     int grabtype;               /* CORE, etc. */
 | |
|     unsigned int ownerEvents;
 | |
|     unsigned int this_device_mode;
 | |
|     unsigned int other_devices_mode;
 | |
|     Window grabWindow;
 | |
|     Window confineTo;
 | |
|     Cursor cursor;
 | |
|     unsigned int modifiers;
 | |
| } GrabParameters;
 | |
| 
 | |
| extern int
 | |
|  UpdateDeviceState(DeviceIntPtr /* device */ ,
 | |
|                    DeviceEvent * /*  xE    */ );
 | |
| 
 | |
| extern void
 | |
|  ProcessOtherEvent(InternalEvent * /* ev */ ,
 | |
|                    DeviceIntPtr /* other */ );
 | |
| 
 | |
| extern int
 | |
|  CheckGrabValues(ClientPtr /* client */ ,
 | |
|                  GrabParameters * /* param */ );
 | |
| 
 | |
| extern int
 | |
|  GrabButton(ClientPtr /* client */ ,
 | |
|             DeviceIntPtr /* dev */ ,
 | |
|             DeviceIntPtr /* modifier_device */ ,
 | |
|             int /* button */ ,
 | |
|             GrabParameters * /* param */ ,
 | |
|             enum InputLevel /* grabtype */ ,
 | |
|             GrabMask * /* eventMask */ );
 | |
| 
 | |
| extern int
 | |
|  GrabKey(ClientPtr /* client */ ,
 | |
|          DeviceIntPtr /* dev */ ,
 | |
|          DeviceIntPtr /* modifier_device */ ,
 | |
|          int /* key */ ,
 | |
|          GrabParameters * /* param */ ,
 | |
|          enum InputLevel /* grabtype */ ,
 | |
|          GrabMask * /* eventMask */ );
 | |
| 
 | |
| extern int
 | |
|  GrabWindow(ClientPtr /* client */ ,
 | |
|             DeviceIntPtr /* dev */ ,
 | |
|             int /* type */ ,
 | |
|             GrabParameters * /* param */ ,
 | |
|             GrabMask * /* eventMask */ );
 | |
| 
 | |
| extern int
 | |
|  GrabTouchOrGesture(ClientPtr /* client */ ,
 | |
|                     DeviceIntPtr /* dev */ ,
 | |
|                     DeviceIntPtr /* mod_dev */ ,
 | |
|                     int /* type */ ,
 | |
|                     GrabParameters * /* param */ ,
 | |
|                     GrabMask * /* eventMask */ );
 | |
| 
 | |
| extern int
 | |
|  SelectForWindow(DeviceIntPtr /* dev */ ,
 | |
|                  WindowPtr /* pWin */ ,
 | |
|                  ClientPtr /* client */ ,
 | |
|                  Mask /* mask */ ,
 | |
|                  Mask /* exclusivemasks */ );
 | |
| 
 | |
| extern int
 | |
|  AddExtensionClient(WindowPtr /* pWin */ ,
 | |
|                     ClientPtr /* client */ ,
 | |
|                     Mask /* mask */ ,
 | |
|                     int /* mskidx */ );
 | |
| 
 | |
| extern void
 | |
|  RecalculateDeviceDeliverableEvents(WindowPtr /* pWin */ );
 | |
| 
 | |
| extern int
 | |
|  InputClientGone(WindowPtr /* pWin */ ,
 | |
|                  XID /* id */ );
 | |
| 
 | |
| extern void
 | |
|  WindowGone(WindowPtr /* win */ );
 | |
| 
 | |
| extern int
 | |
|  SendEvent(ClientPtr /* client */ ,
 | |
|            DeviceIntPtr /* d */ ,
 | |
|            Window /* dest */ ,
 | |
|            Bool /* propagate */ ,
 | |
|            xEvent * /* ev */ ,
 | |
|            Mask /* mask */ ,
 | |
|            int /* count */ );
 | |
| 
 | |
| extern int
 | |
|  SetButtonMapping(ClientPtr /* client */ ,
 | |
|                   DeviceIntPtr /* dev */ ,
 | |
|                   int /* nElts */ ,
 | |
|                   BYTE * /* map */ );
 | |
| 
 | |
| extern int
 | |
|  ChangeKeyMapping(ClientPtr /* client */ ,
 | |
|                   DeviceIntPtr /* dev */ ,
 | |
|                   unsigned /* len */ ,
 | |
|                   int /* type */ ,
 | |
|                   KeyCode /* firstKeyCode */ ,
 | |
|                   CARD8 /* keyCodes */ ,
 | |
|                   CARD8 /* keySymsPerKeyCode */ ,
 | |
|                   KeySym * /* map */ );
 | |
| 
 | |
| extern void
 | |
|  DeleteWindowFromAnyExtEvents(WindowPtr /* pWin */ ,
 | |
|                               Bool /* freeResources */ );
 | |
| 
 | |
| extern int
 | |
|  MaybeSendDeviceMotionNotifyHint(deviceKeyButtonPointer * /* pEvents */ ,
 | |
|                                  Mask /* mask */ );
 | |
| 
 | |
| extern void
 | |
|  CheckDeviceGrabAndHintWindow(WindowPtr /* pWin */ ,
 | |
|                               int /* type */ ,
 | |
|                               deviceKeyButtonPointer * /* xE */ ,
 | |
|                               GrabPtr /* grab */ ,
 | |
|                               ClientPtr /* client */ ,
 | |
|                               Mask /* deliveryMask */ );
 | |
| 
 | |
| extern void
 | |
|  MaybeStopDeviceHint(DeviceIntPtr /* dev */ ,
 | |
|                      ClientPtr /* client */ );
 | |
| 
 | |
| extern int
 | |
|  DeviceEventSuppressForWindow(WindowPtr /* pWin */ ,
 | |
|                               ClientPtr /* client */ ,
 | |
|                               Mask /* mask */ ,
 | |
|                               int /* maskndx */ );
 | |
| 
 | |
| extern void
 | |
|  SendEventToAllWindows(DeviceIntPtr /* dev */ ,
 | |
|                        Mask /* mask */ ,
 | |
|                        xEvent * /* ev */ ,
 | |
|                        int /* count */ );
 | |
| 
 | |
| extern void
 | |
|  TouchRejected(DeviceIntPtr /* sourcedev */ ,
 | |
|                TouchPointInfoPtr /* ti */ ,
 | |
|                XID /* resource */ ,
 | |
|                TouchOwnershipEvent * /* ev */ );
 | |
| 
 | |
| extern _X_HIDDEN void XI2EventSwap(xGenericEvent * /* from */ ,
 | |
|                                    xGenericEvent * /* to */ );
 | |
| 
 | |
| /* For an event such as MappingNotify which affects client interpretation
 | |
|  * of input events sent by device dev, should we notify the client, or
 | |
|  * would it merely be irrelevant and confusing? */
 | |
| extern int
 | |
|  XIShouldNotify(ClientPtr client, DeviceIntPtr dev);
 | |
| 
 | |
| extern void
 | |
|  XISendDeviceChangedEvent(DeviceIntPtr device, DeviceChangedEvent *dce);
 | |
| 
 | |
| extern int
 | |
| 
 | |
| XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
 | |
|                unsigned int len, unsigned char *mask);
 | |
| 
 | |
| extern int
 | |
|  XICheckInvalidMaskBits(ClientPtr client, unsigned char *mask, int len);
 | |
| 
 | |
| #endif                          /* EXEVENTS_H */
 |