exevents.h revision 35c4bbdf
1/************************************************************ 2 3Copyright 1996 by Thomas E. Dickey <dickey@clark.net> 4 5 All Rights Reserved 6 7Permission to use, copy, modify, and distribute this software and its 8documentation for any purpose and without fee is hereby granted, 9provided that the above copyright notice appear in all copies and that 10both that copyright notice and this permission notice appear in 11supporting documentation, and that the name of the above listed 12copyright holder(s) not be used in advertising or publicity pertaining 13to distribution of the software without specific, written prior 14permission. 15 16THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD 17TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE 19LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 21ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 22OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 24********************************************************/ 25 26/******************************************************************** 27 * Interface of 'exevents.c' 28 */ 29 30#ifndef EXEVENTS_H 31#define EXEVENTS_H 32 33#include <X11/extensions/XIproto.h> 34#include "inputstr.h" 35 36/*************************************************************** 37 * Interface available to drivers * 38 ***************************************************************/ 39 40/** 41 * Scroll flags for ::SetScrollValuator. 42 */ 43enum ScrollFlags { 44 SCROLL_FLAG_NONE = 0, 45 /** 46 * Do not emulate legacy button events for valuator events on this axis. 47 */ 48 SCROLL_FLAG_DONT_EMULATE = (1 << 1), 49 /** 50 * This axis is the preferred axis for valuator emulation for this axis' 51 * scroll type. 52 */ 53 SCROLL_FLAG_PREFERRED = (1 << 2) 54}; 55 56extern _X_EXPORT int InitProximityClassDeviceStruct(DeviceIntPtr /* dev */ ); 57 58extern _X_EXPORT Bool InitValuatorAxisStruct(DeviceIntPtr /* dev */ , 59 int /* axnum */ , 60 Atom /* label */ , 61 int /* minval */ , 62 int /* maxval */ , 63 int /* resolution */ , 64 int /* min_res */ , 65 int /* max_res */ , 66 int /* mode */ ); 67 68extern _X_EXPORT Bool SetScrollValuator(DeviceIntPtr /* dev */ , 69 int /* axnum */ , 70 enum ScrollType /* type */ , 71 double /* increment */ , 72 int /* flags */ ); 73 74/* Input device properties */ 75extern _X_EXPORT void XIDeleteAllDeviceProperties(DeviceIntPtr /* device */ 76 ); 77 78extern _X_EXPORT int XIDeleteDeviceProperty(DeviceIntPtr /* device */ , 79 Atom /* property */ , 80 Bool /* fromClient */ 81 ); 82 83extern _X_EXPORT int XIChangeDeviceProperty(DeviceIntPtr /* dev */ , 84 Atom /* property */ , 85 Atom /* type */ , 86 int /* format */ , 87 int /* mode */ , 88 unsigned long /* len */ , 89 const void * /* value */ , 90 Bool /* sendevent */ 91 ); 92 93extern _X_EXPORT int XIGetDeviceProperty(DeviceIntPtr /* dev */ , 94 Atom /* property */ , 95 XIPropertyValuePtr * /* value */ 96 ); 97 98extern _X_EXPORT int XISetDevicePropertyDeletable(DeviceIntPtr /* dev */ , 99 Atom /* property */ , 100 Bool /* deletable */ 101 ); 102 103extern _X_EXPORT long XIRegisterPropertyHandler(DeviceIntPtr dev, 104 int (*SetProperty) (DeviceIntPtr 105 dev, 106 Atom 107 property, 108 XIPropertyValuePtr 109 prop, 110 BOOL 111 checkonly), 112 int (*GetProperty) (DeviceIntPtr 113 dev, 114 Atom 115 property), 116 int (*DeleteProperty) 117 (DeviceIntPtr dev, 118 Atom property) 119 ); 120 121extern _X_EXPORT void XIUnregisterPropertyHandler(DeviceIntPtr dev, long id); 122 123extern _X_EXPORT Atom XIGetKnownProperty(const char *name); 124 125extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev); 126 127extern _X_EXPORT int XIPropToInt(XIPropertyValuePtr val, 128 int *nelem_return, int **buf_return); 129 130extern _X_EXPORT int XIPropToFloat(XIPropertyValuePtr val, 131 int *nelem_return, float **buf_return); 132 133/**************************************************************************** 134 * End of driver interface * 135 ****************************************************************************/ 136 137/** 138 * Attached to the devPrivates of each client. Specifies the version number as 139 * supported by the client. 140 */ 141typedef struct _XIClientRec { 142 int major_version; 143 int minor_version; 144} XIClientRec, *XIClientPtr; 145 146typedef struct _GrabParameters { 147 int grabtype; /* CORE, etc. */ 148 unsigned int ownerEvents; 149 unsigned int this_device_mode; 150 unsigned int other_devices_mode; 151 Window grabWindow; 152 Window confineTo; 153 Cursor cursor; 154 unsigned int modifiers; 155} GrabParameters; 156 157extern int 158 UpdateDeviceState(DeviceIntPtr /* device */ , 159 DeviceEvent * /* xE */ ); 160 161extern void 162 ProcessOtherEvent(InternalEvent * /* ev */ , 163 DeviceIntPtr /* other */ ); 164 165extern int 166 CheckGrabValues(ClientPtr /* client */ , 167 GrabParameters * /* param */ ); 168 169extern int 170 GrabButton(ClientPtr /* client */ , 171 DeviceIntPtr /* dev */ , 172 DeviceIntPtr /* modifier_device */ , 173 int /* button */ , 174 GrabParameters * /* param */ , 175 enum InputLevel /* grabtype */ , 176 GrabMask * /* eventMask */ ); 177 178extern int 179 GrabKey(ClientPtr /* client */ , 180 DeviceIntPtr /* dev */ , 181 DeviceIntPtr /* modifier_device */ , 182 int /* key */ , 183 GrabParameters * /* param */ , 184 enum InputLevel /* grabtype */ , 185 GrabMask * /* eventMask */ ); 186 187extern int 188 GrabWindow(ClientPtr /* client */ , 189 DeviceIntPtr /* dev */ , 190 int /* type */ , 191 GrabParameters * /* param */ , 192 GrabMask * /* eventMask */ ); 193 194extern int 195 GrabTouch(ClientPtr /* client */ , 196 DeviceIntPtr /* dev */ , 197 DeviceIntPtr /* mod_dev */ , 198 GrabParameters * /* param */ , 199 GrabMask * /* eventMask */ ); 200 201extern int 202 SelectForWindow(DeviceIntPtr /* dev */ , 203 WindowPtr /* pWin */ , 204 ClientPtr /* client */ , 205 Mask /* mask */ , 206 Mask /* exclusivemasks */ ); 207 208extern int 209 AddExtensionClient(WindowPtr /* pWin */ , 210 ClientPtr /* client */ , 211 Mask /* mask */ , 212 int /* mskidx */ ); 213 214extern void 215 RecalculateDeviceDeliverableEvents(WindowPtr /* pWin */ ); 216 217extern int 218 InputClientGone(WindowPtr /* pWin */ , 219 XID /* id */ ); 220 221extern void 222 WindowGone(WindowPtr /* win */ ); 223 224extern int 225 SendEvent(ClientPtr /* client */ , 226 DeviceIntPtr /* d */ , 227 Window /* dest */ , 228 Bool /* propagate */ , 229 xEvent * /* ev */ , 230 Mask /* mask */ , 231 int /* count */ ); 232 233extern int 234 SetButtonMapping(ClientPtr /* client */ , 235 DeviceIntPtr /* dev */ , 236 int /* nElts */ , 237 BYTE * /* map */ ); 238 239extern int 240 ChangeKeyMapping(ClientPtr /* client */ , 241 DeviceIntPtr /* dev */ , 242 unsigned /* len */ , 243 int /* type */ , 244 KeyCode /* firstKeyCode */ , 245 CARD8 /* keyCodes */ , 246 CARD8 /* keySymsPerKeyCode */ , 247 KeySym * /* map */ ); 248 249extern void 250 DeleteWindowFromAnyExtEvents(WindowPtr /* pWin */ , 251 Bool /* freeResources */ ); 252 253extern int 254 MaybeSendDeviceMotionNotifyHint(deviceKeyButtonPointer * /* pEvents */ , 255 Mask /* mask */ ); 256 257extern void 258 CheckDeviceGrabAndHintWindow(WindowPtr /* pWin */ , 259 int /* type */ , 260 deviceKeyButtonPointer * /* xE */ , 261 GrabPtr /* grab */ , 262 ClientPtr /* client */ , 263 Mask /* deliveryMask */ ); 264 265extern void 266 MaybeStopDeviceHint(DeviceIntPtr /* dev */ , 267 ClientPtr /* client */ ); 268 269extern int 270 DeviceEventSuppressForWindow(WindowPtr /* pWin */ , 271 ClientPtr /* client */ , 272 Mask /* mask */ , 273 int /* maskndx */ ); 274 275extern void 276 SendEventToAllWindows(DeviceIntPtr /* dev */ , 277 Mask /* mask */ , 278 xEvent * /* ev */ , 279 int /* count */ ); 280 281extern void 282 TouchRejected(DeviceIntPtr /* sourcedev */ , 283 TouchPointInfoPtr /* ti */ , 284 XID /* resource */ , 285 TouchOwnershipEvent * /* ev */ ); 286 287extern _X_HIDDEN void XI2EventSwap(xGenericEvent * /* from */ , 288 xGenericEvent * /* to */ ); 289 290/* For an event such as MappingNotify which affects client interpretation 291 * of input events sent by device dev, should we notify the client, or 292 * would it merely be irrelevant and confusing? */ 293extern int 294 XIShouldNotify(ClientPtr client, DeviceIntPtr dev); 295 296extern void 297 XISendDeviceChangedEvent(DeviceIntPtr device, DeviceChangedEvent *dce); 298 299extern int 300 301XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client, 302 unsigned int len, unsigned char *mask); 303 304extern int 305 XICheckInvalidMaskBits(ClientPtr client, unsigned char *mask, int len); 306 307#endif /* EXEVENTS_H */ 308