1 /* $XConsortium: XInput.h,v 1.22 94/04/17 20:11:13 rws Exp $ */
3 /************************************************************
5 Copyright (c) 1989 X Consortium
7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to deal
9 in the Software without restriction, including without limitation the rights
10 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
14 The above copyright notice and this permission notice shall be included in
15 all copies or substantial portions of the Software.
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 Except as contained in this notice, the name of the X Consortium shall not be
25 used in advertising or otherwise to promote the sale, use or other dealings
26 in this Software without prior written authorization from the X Consortium.
28 Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, California.
32 Permission to use, copy, modify, and distribute this software and its
33 documentation for any purpose and without fee is hereby granted,
34 provided that the above copyright notice appear in all copies and that
35 both that copyright notice and this permission notice appear in
36 supporting documentation, and that the name of Hewlett-Packard not be
37 used in advertising or publicity pertaining to distribution of the
38 software without specific, written prior permission.
40 HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
41 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
42 HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
43 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
44 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
45 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
48 ********************************************************/
50 /* Definitions used by the library and client */
63 #define _deviceKeyPress 0
64 #define _deviceKeyRelease 1
66 #define _deviceButtonPress 0
67 #define _deviceButtonRelease 1
69 #define _deviceMotionNotify 0
71 #define _deviceFocusIn 0
72 #define _deviceFocusOut 1
74 #define _proximityIn 0
75 #define _proximityOut 1
77 #define _deviceStateNotify 0
78 #define _deviceMappingNotify 1
79 #define _changeDeviceNotify 2
81 #define FindTypeAndClass(d,type,_class,classid,offset) \
82 { int _i; XInputClassInfo *_ip; \
83 type = 0; _class = 0; \
84 for (_i=0, _ip= ((XDevice *) d)->classes; \
85 _i< ((XDevice *) d)->num_classes; \
87 if (_ip->input_class == classid) \
88 {type = _ip->event_type_base + offset; \
89 _class = ((XDevice *) d)->device_id << 8 | type;}}
91 #define DeviceKeyPress(d,type,_class) \
92 FindTypeAndClass(d, type, _class, KeyClass, _deviceKeyPress)
94 #define DeviceKeyRelease(d,type,_class) \
95 FindTypeAndClass(d, type, _class, KeyClass, _deviceKeyRelease)
97 #define DeviceButtonPress(d,type,_class) \
98 FindTypeAndClass(d, type, _class, ButtonClass, _deviceButtonPress)
100 #define DeviceButtonRelease(d,type,_class) \
101 FindTypeAndClass(d, type, _class, ButtonClass, _deviceButtonRelease)
103 #define DeviceMotionNotify(d,type,_class) \
104 FindTypeAndClass(d, type, _class, ValuatorClass, _deviceMotionNotify)
106 #define DeviceFocusIn(d,type,_class) \
107 FindTypeAndClass(d, type, _class, FocusClass, _deviceFocusIn)
109 #define DeviceFocusOut(d,type,_class) \
110 FindTypeAndClass(d, type, _class, FocusClass, _deviceFocusOut)
112 #define ProximityIn(d,type,_class) \
113 FindTypeAndClass(d, type, _class, ProximityClass, _proximityIn)
115 #define ProximityOut(d,type,_class) \
116 FindTypeAndClass(d, type, _class, ProximityClass, _proximityOut)
118 #define DeviceStateNotify(d,type,_class) \
119 FindTypeAndClass(d, type, _class, OtherClass, _deviceStateNotify)
121 #define DeviceMappingNotify(d,type,_class) \
122 FindTypeAndClass(d, type, _class, OtherClass, _deviceMappingNotify)
124 #define ChangeDeviceNotify(d,type,_class) \
125 FindTypeAndClass(d, type, _class, OtherClass, _changeDeviceNotify)
127 #define DevicePointerMotionHint(d,type,_class) \
128 { _class = ((XDevice *) d)->device_id << 8 | _devicePointerMotionHint;}
130 #define DeviceButton1Motion(d,type,_class) \
131 { _class = ((XDevice *) d)->device_id << 8 | _deviceButton1Motion;}
133 #define DeviceButton2Motion(d,type,_class) \
134 { _class = ((XDevice *) d)->device_id << 8 | _deviceButton2Motion;}
136 #define DeviceButton3Motion(d,type,_class) \
137 { _class = ((XDevice *) d)->device_id << 8 | _deviceButton3Motion;}
139 #define DeviceButton4Motion(d,type, _class) \
140 { _class = ((XDevice *) d)->device_id << 8 | _deviceButton4Motion;}
142 #define DeviceButton5Motion(d,type,_class) \
143 { _class = ((XDevice *) d)->device_id << 8 | _deviceButton5Motion;}
145 #define DeviceButtonMotion(d,type, _class) \
146 { _class = ((XDevice *) d)->device_id << 8 | _deviceButtonMotion;}
148 #define DeviceOwnerGrabButton(d,type,_class) \
149 { _class = ((XDevice *) d)->device_id << 8 | _deviceOwnerGrabButton;}
151 #define DeviceButtonPressGrab(d,type,_class) \
152 { _class = ((XDevice *) d)->device_id << 8 | _deviceButtonGrab;}
154 #define NoExtensionEvent(d,type,_class) \
155 { _class = ((XDevice *) d)->device_id << 8 | _noExtensionEvent;}
157 #define BadDevice(dpy,error) _xibaddevice(dpy, &error)
159 #define BadClass(dpy,error) _xibadclass(dpy, &error)
161 #define BadEvent(dpy,error) _xibadevent(dpy, &error)
163 #define BadMode(dpy,error) _xibadmode(dpy, &error)
165 #define DeviceBusy(dpy,error) _xidevicebusy(dpy, &error)
167 /***************************************************************
169 * DeviceKey events. These events are sent by input devices that
170 * support input class Keys.
171 * The location of the X pointer is reported in the coordinate
172 * fields of the x,y and x_root,y_root fields.
178 int type; /* of event */
179 unsigned long serial; /* # of last request processed */
180 Bool send_event; /* true if from SendEvent request */
181 Display *display; /* Display the event was read from */
182 Window window; /* "event" window reported relative to */
184 Window root; /* root window event occured on */
185 Window subwindow; /* child window */
186 Time time; /* milliseconds */
187 int x, y; /* x, y coordinates in event window */
188 int x_root; /* coordinates relative to root */
189 int y_root; /* coordinates relative to root */
190 unsigned int state; /* key or button mask */
191 unsigned int keycode; /* detail */
192 Bool same_screen; /* same screen flag */
193 unsigned int device_state; /* device key or button mask */
194 unsigned char axes_count;
195 unsigned char first_axis;
199 typedef XDeviceKeyEvent XDeviceKeyPressedEvent;
200 typedef XDeviceKeyEvent XDeviceKeyReleasedEvent;
202 /*******************************************************************
204 * DeviceButton events. These events are sent by extension devices
205 * that support input class Buttons.
210 int type; /* of event */
211 unsigned long serial; /* # of last request processed by server */
212 Bool send_event; /* true if from a SendEvent request */
213 Display *display; /* Display the event was read from */
214 Window window; /* "event" window reported relative to */
216 Window root; /* root window that the event occured on */
217 Window subwindow; /* child window */
218 Time time; /* milliseconds */
219 int x, y; /* x, y coordinates in event window */
220 int x_root; /* coordinates relative to root */
221 int y_root; /* coordinates relative to root */
222 unsigned int state; /* key or button mask */
223 unsigned int button; /* detail */
224 Bool same_screen; /* same screen flag */
225 unsigned int device_state; /* device key or button mask */
226 unsigned char axes_count;
227 unsigned char first_axis;
229 } XDeviceButtonEvent;
231 typedef XDeviceButtonEvent XDeviceButtonPressedEvent;
232 typedef XDeviceButtonEvent XDeviceButtonReleasedEvent;
234 /*******************************************************************
236 * DeviceMotionNotify event. These events are sent by extension devices
237 * that support input class Valuators.
243 int type; /* of event */
244 unsigned long serial; /* # of last request processed by server */
245 Bool send_event; /* true if from a SendEvent request */
246 Display *display; /* Display the event was read from */
247 Window window; /* "event" window reported relative to */
249 Window root; /* root window that the event occured on */
250 Window subwindow; /* child window */
251 Time time; /* milliseconds */
252 int x, y; /* x, y coordinates in event window */
253 int x_root; /* coordinates relative to root */
254 int y_root; /* coordinates relative to root */
255 unsigned int state; /* key or button mask */
256 char is_hint; /* detail */
257 Bool same_screen; /* same screen flag */
258 unsigned int device_state; /* device key or button mask */
259 unsigned char axes_count;
260 unsigned char first_axis;
262 } XDeviceMotionEvent;
264 /*******************************************************************
266 * DeviceFocusChange events. These events are sent when the focus
267 * of an extension device that can be focused is changed.
273 int type; /* of event */
274 unsigned long serial; /* # of last request processed by server */
275 Bool send_event; /* true if from a SendEvent request */
276 Display *display; /* Display the event was read from */
277 Window window; /* "event" window reported relative to */
279 int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
282 * NotifyAncestor, NotifyVirtual, NotifyInferior,
283 * NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
284 * NotifyPointerRoot, NotifyDetailNone
287 } XDeviceFocusChangeEvent;
289 typedef XDeviceFocusChangeEvent XDeviceFocusInEvent;
290 typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent;
292 /*******************************************************************
294 * ProximityNotify events. These events are sent by those absolute
295 * positioning devices that are capable of generating proximity information.
301 int type; /* ProximityIn or ProximityOut */
302 unsigned long serial; /* # of last request processed by server */
303 Bool send_event; /* true if this came from a SendEvent request */
304 Display *display; /* Display the event was read from */
314 unsigned int device_state; /* device key or button mask */
315 unsigned char axes_count;
316 unsigned char first_axis;
318 } XProximityNotifyEvent;
319 typedef XProximityNotifyEvent XProximityInEvent;
320 typedef XProximityNotifyEvent XProximityOutEvent;
322 /*******************************************************************
324 * DeviceStateNotify events are generated on EnterWindow and FocusIn
325 * for those clients who have selected DeviceState.
331 #if defined(__cplusplus) || defined(c_plusplus)
332 unsigned char c_class;
336 unsigned char length;
341 unsigned long serial; /* # of last request processed by server */
342 Bool send_event; /* true if this came from a SendEvent request */
343 Display *display; /* Display the event was read from */
349 } XDeviceStateNotifyEvent;
352 #if defined(__cplusplus) || defined(c_plusplus)
353 unsigned char c_class;
357 unsigned char length;
358 unsigned char num_valuators;
364 #if defined(__cplusplus) || defined(c_plusplus)
365 unsigned char c_class;
369 unsigned char length;
375 #if defined(__cplusplus) || defined(c_plusplus)
376 unsigned char c_class;
380 unsigned char length;
385 /*******************************************************************
387 * DeviceMappingNotify event. This event is sent when the key mapping,
388 * modifier mapping, or button mapping of an extension device is changed.
394 unsigned long serial; /* # of last request processed by server */
395 Bool send_event; /* true if this came from a SendEvent request */
396 Display *display; /* Display the event was read from */
397 Window window; /* unused */
400 int request; /* one of MappingModifier, MappingKeyboard,
402 int first_keycode;/* first keycode */
403 int count; /* defines range of change w. first_keycode*/
404 } XDeviceMappingEvent;
406 /*******************************************************************
408 * ChangeDeviceNotify event. This event is sent when an
409 * XChangeKeyboard or XChangePointer request is made.
415 unsigned long serial; /* # of last request processed by server */
416 Bool send_event; /* true if this came from a SendEvent request */
417 Display *display; /* Display the event was read from */
418 Window window; /* unused */
421 int request; /* NewPointer or NewKeyboard */
422 } XChangeDeviceNotifyEvent;
424 /*******************************************************************
426 * Control structures for input devices that support input class
427 * Feedback. These are used by the XGetFeedbackControl and
428 * XChangeFeedbackControl functions.
433 #if defined(__cplusplus) || defined(c_plusplus)
443 #if defined(__cplusplus) || defined(c_plusplus)
455 int global_auto_repeat;
456 char auto_repeats[32];
460 #if defined(__cplusplus) || defined(c_plusplus)
473 #if defined(__cplusplus) || defined(c_plusplus)
483 } XIntegerFeedbackState;
486 #if defined(__cplusplus) || defined(c_plusplus)
494 int num_syms_supported;
495 KeySym *syms_supported;
496 } XStringFeedbackState;
499 #if defined(__cplusplus) || defined(c_plusplus)
509 } XBellFeedbackState;
512 #if defined(__cplusplus) || defined(c_plusplus)
524 #if defined(__cplusplus) || defined(c_plusplus)
534 #if defined(__cplusplus) || defined(c_plusplus)
544 } XPtrFeedbackControl;
547 #if defined(__cplusplus) || defined(c_plusplus)
561 int auto_repeat_mode;
562 } XKbdFeedbackControl;
565 #if defined(__cplusplus) || defined(c_plusplus)
573 KeySym *syms_to_display;
574 } XStringFeedbackControl;
577 #if defined(__cplusplus) || defined(c_plusplus)
585 } XIntegerFeedbackControl;
588 #if defined(__cplusplus) || defined(c_plusplus)
598 } XBellFeedbackControl;
601 #if defined(__cplusplus) || defined(c_plusplus)
610 } XLedFeedbackControl;
612 /*******************************************************************
614 * Device control structures.
629 } XDeviceResolutionControl;
636 int *min_resolutions;
637 int *max_resolutions;
638 } XDeviceResolutionState;
640 /*******************************************************************
642 * An array of XDeviceList structures is returned by the
643 * XListInputDevices function. Each entry contains information
644 * about one input device. Among that information is an array of
645 * pointers to structures that describe the characteristics of
650 typedef struct _XAnyClassinfo *XAnyClassPtr;
652 typedef struct _XAnyClassinfo {
653 #if defined(__cplusplus) || defined(c_plusplus)
661 typedef struct _XDeviceInfo *XDeviceInfoPtr;
663 typedef struct _XDeviceInfo
670 XAnyClassPtr inputclassinfo;
673 typedef struct _XKeyInfo *XKeyInfoPtr;
675 typedef struct _XKeyInfo
677 #if defined(__cplusplus) || defined(c_plusplus)
683 unsigned short min_keycode;
684 unsigned short max_keycode;
685 unsigned short num_keys;
688 typedef struct _XButtonInfo *XButtonInfoPtr;
690 typedef struct _XButtonInfo {
691 #if defined(__cplusplus) || defined(c_plusplus)
700 typedef struct _XAxisInfo *XAxisInfoPtr;
702 typedef struct _XAxisInfo {
708 typedef struct _XValuatorInfo *XValuatorInfoPtr;
710 typedef struct _XValuatorInfo
712 #if defined(__cplusplus) || defined(c_plusplus)
718 unsigned char num_axes;
720 unsigned long motion_buffer;
725 /*******************************************************************
727 * An XDevice structure is returned by the XOpenDevice function.
728 * It contains an array of pointers to XInputClassInfo structures.
729 * Each contains information about a class of input supported by the
730 * device, including a pointer to an array of data for each type of event
731 * the device reports.
737 unsigned char input_class;
738 unsigned char event_type_base;
744 XInputClassInfo *classes;
748 /*******************************************************************
750 * The following structure is used to return information for the
751 * XGetSelectedExtensionEvents function.
756 XEventClass event_type;
760 /*******************************************************************
762 * The following structure is used to return motion history data from
763 * an input device that supports the input class Valuators.
764 * This information is returned by the XGetDeviceMotionEvents function.
774 /*******************************************************************
776 * Device state structure.
777 * This is returned by the XQueryDeviceState request.
787 /*******************************************************************
789 * Note that the mode field is a bitfield that reports the Proximity
790 * status of the device as well as the mode. The mode field should
791 * be OR'd with the mask DeviceMode and compared with the values
792 * Absolute and Relative to determine the mode, and should be OR'd
793 * with the mask ProximityState and compared with the values InProximity
794 * and OutOfProximity to determine the proximity state.
799 #if defined(__cplusplus) || defined(c_plusplus)
800 unsigned char c_class;
804 unsigned char length;
805 unsigned char num_valuators;
811 #if defined(__cplusplus) || defined(c_plusplus)
812 unsigned char c_class;
816 unsigned char length;
822 #if defined(__cplusplus) || defined(c_plusplus)
823 unsigned char c_class;
827 unsigned char length;
832 /*******************************************************************
834 * Function definitions.
840 extern int XChangeKeyboardDevice(
841 #if NeedFunctionPrototypes
842 Display* /* display */,
843 XDevice* /* device */
847 extern int XChangePointerDevice(
848 #if NeedFunctionPrototypes
849 Display* /* display */,
850 XDevice* /* device */,
856 extern int XGrabDevice(
857 #if NeedFunctionPrototypes
858 Display* /* display */,
859 XDevice* /* device */,
860 Window /* grab_window */,
861 Bool /* ownerEvents */,
862 int /* event count */,
863 XEventClass* /* event_list */,
864 int /* this_device_mode */,
865 int /* other_devices_mode */,
870 extern int XUngrabDevice(
871 #if NeedFunctionPrototypes
872 Display* /* display */,
873 XDevice* /* device */,
878 extern int XGrabDeviceKey(
879 #if NeedFunctionPrototypes
880 Display* /* display */,
881 XDevice* /* device */,
882 unsigned int /* key */,
883 unsigned int /* modifiers */,
884 XDevice* /* modifier_device */,
885 Window /* grab_window */,
886 Bool /* owner_events */,
887 unsigned int /* event_count */,
888 XEventClass* /* event_list */,
889 int /* this_device_mode */,
890 int /* other_devices_mode */
894 extern int XUngrabDeviceKey(
895 #if NeedFunctionPrototypes
896 Display* /* display */,
897 XDevice* /* device */,
898 unsigned int /* key */,
899 unsigned int /* modifiers */,
900 XDevice* /* modifier_dev */,
901 Window /* grab_window */
905 extern int XGrabDeviceButton(
906 #if NeedFunctionPrototypes
907 Display* /* display */,
908 XDevice* /* device */,
909 unsigned int /* button */,
910 unsigned int /* modifiers */,
911 XDevice* /* modifier_device */,
912 Window /* grab_window */,
913 Bool /* owner_events */,
914 unsigned int /* event_count */,
915 XEventClass* /* event_list */,
916 int /* this_device_mode */,
917 int /* other_devices_mode */
921 extern int XUngrabDeviceButton(
922 #if NeedFunctionPrototypes
923 Display* /* display */,
924 XDevice* /* device */,
925 unsigned int /* button */,
926 unsigned int /* modifiers */,
927 XDevice* /* modifier_dev */,
928 Window /* grab_window */
932 extern int XAllowDeviceEvents(
933 #if NeedFunctionPrototypes
934 Display* /* display */,
935 XDevice* /* device */,
936 int /* event_mode */,
941 extern int XGetDeviceFocus(
942 #if NeedFunctionPrototypes
943 Display* /* display */,
944 XDevice* /* device */,
946 int* /* revert_to */,
951 extern int XSetDeviceFocus(
952 #if NeedFunctionPrototypes
953 Display* /* display */,
954 XDevice* /* device */,
961 extern XFeedbackState *XGetFeedbackControl(
962 #if NeedFunctionPrototypes
963 Display* /* display */,
964 XDevice* /* device */,
965 int* /* num_feedbacks */
969 extern int XFreeFeedbackList(
970 #if NeedFunctionPrototypes
971 XFeedbackState* /* list */
975 extern int XChangeFeedbackControl(
976 #if NeedFunctionPrototypes
977 Display* /* display */,
978 XDevice* /* device */,
979 unsigned long /* mask */,
980 XFeedbackControl* /* f */
984 extern int XDeviceBell(
985 #if NeedFunctionPrototypes
986 Display* /* display */,
987 XDevice* /* device */,
988 XID /* feedbackclass */,
989 XID /* feedbackid */,
994 extern KeySym *XGetDeviceKeyMapping(
995 #if NeedFunctionPrototypes
996 Display* /* display */,
997 XDevice* /* device */,
998 #if NeedWidePrototypes
999 unsigned int /* first */,
1001 KeyCode /* first */,
1004 int* /* syms_per_code */
1008 extern int XChangeDeviceKeyMapping(
1009 #if NeedFunctionPrototypes
1010 Display* /* display */,
1011 XDevice* /* device */,
1013 int /* syms_per_code */,
1014 KeySym* /* keysyms */,
1019 extern XModifierKeymap *XGetDeviceModifierMapping(
1020 #if NeedFunctionPrototypes
1021 Display* /* display */,
1022 XDevice* /* device */
1026 extern int XSetDeviceModifierMapping(
1027 #if NeedFunctionPrototypes
1028 Display* /* display */,
1029 XDevice* /* device */,
1030 XModifierKeymap* /* modmap */
1034 extern int XSetDeviceButtonMapping(
1035 #if NeedFunctionPrototypes
1036 Display* /* display */,
1037 XDevice* /* device */,
1038 unsigned char* /* map[] */,
1043 extern int XGetDeviceButtonMapping(
1044 #if NeedFunctionPrototypes
1045 Display* /* display */,
1046 XDevice* /* device */,
1047 unsigned char* /* map[] */,
1048 unsigned int /* nmap */
1052 extern XDeviceState *XQueryDeviceState(
1053 #if NeedFunctionPrototypes
1054 Display* /* display */,
1055 XDevice* /* device */
1059 extern int XFreeDeviceState(
1060 #if NeedFunctionPrototypes
1061 XDeviceState* /* list */
1065 extern XExtensionVersion *XGetExtensionVersion(
1066 #if NeedFunctionPrototypes
1067 Display* /* display */,
1068 _Xconst char* /* name */
1072 extern XDeviceInfo *XListInputDevices(
1073 #if NeedFunctionPrototypes
1074 Display* /* display */,
1079 extern int XFreeDeviceList(
1080 #if NeedFunctionPrototypes
1081 XDeviceInfo* /* list */
1085 extern XDevice *XOpenDevice(
1086 #if NeedFunctionPrototypes
1087 Display* /* display */,
1092 extern int XCloseDevice(
1093 #if NeedFunctionPrototypes
1094 Display* /* display */,
1095 XDevice* /* device */
1099 extern int XSetDeviceMode(
1100 #if NeedFunctionPrototypes
1101 Display* /* display */,
1102 XDevice* /* device */,
1107 extern int XSetDeviceValuators(
1108 #if NeedFunctionPrototypes
1109 Display* /* display */,
1110 XDevice* /* device */,
1111 int* /* valuators */,
1112 int /* first_valuator */,
1113 int /* num_valuators */
1117 extern XDeviceControl *XGetDeviceControl(
1118 #if NeedFunctionPrototypes
1119 Display* /* display */,
1120 XDevice* /* device */,
1125 extern int XChangeDeviceControl(
1126 #if NeedFunctionPrototypes
1127 Display* /* display */,
1128 XDevice* /* device */,
1130 XDeviceControl* /* d */
1134 extern int XSelectExtensionEvent(
1135 #if NeedFunctionPrototypes
1136 Display* /* display */,
1138 XEventClass* /* event_list */,
1143 extern int XGetSelectedExtensionEvents(
1144 #if NeedFunctionPrototypes
1145 Display* /* display */,
1147 int* /* this_client_count */,
1148 XEventClass** /* this_client_list */,
1149 int* /* all_clients_count */,
1150 XEventClass** /* all_clients_list */
1154 extern int XChangeDeviceDontPropagateList(
1155 #if NeedFunctionPrototypes
1156 Display* /* display */,
1157 Window /* window */,
1159 XEventClass* /* events */,
1164 extern XEventClass *XGetDeviceDontPropagateList(
1165 #if NeedFunctionPrototypes
1166 Display* /* display */,
1167 Window /* window */,
1172 extern Status XSendExtensionEvent(
1173 #if NeedFunctionPrototypes
1174 Display* /* display */,
1175 XDevice* /* device */,
1179 XEventClass* /* list */,
1184 extern XDeviceTimeCoord *XGetDeviceMotionEvents(
1185 #if NeedFunctionPrototypes
1186 Display* /* display */,
1187 XDevice* /* device */,
1192 int* /* axis_count */
1196 extern int XFreeDeviceMotionEvents(
1197 #if NeedFunctionPrototypes
1198 XDeviceTimeCoord* /* events */
1202 extern int XFreeDeviceControl(
1203 #if NeedFunctionPrototypes
1204 XDeviceControl* /* control */
1210 #endif /* _XINPUT_H_ */