jpayne@69: /************************************************************ jpayne@69: jpayne@69: Copyright 1989, 1998 The Open Group jpayne@69: jpayne@69: Permission to use, copy, modify, distribute, and sell this software and its jpayne@69: documentation for any purpose is hereby granted without fee, provided that jpayne@69: the above copyright notice appear in all copies and that both that jpayne@69: copyright notice and this permission notice appear in supporting jpayne@69: documentation. jpayne@69: jpayne@69: The above copyright notice and this permission notice shall be included in jpayne@69: all copies or substantial portions of the Software. jpayne@69: jpayne@69: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR jpayne@69: IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, jpayne@69: FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE jpayne@69: OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN jpayne@69: AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN jpayne@69: CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. jpayne@69: jpayne@69: Except as contained in this notice, the name of The Open Group shall not be jpayne@69: used in advertising or otherwise to promote the sale, use or other dealings jpayne@69: in this Software without prior written authorization from The Open Group. jpayne@69: jpayne@69: Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. jpayne@69: jpayne@69: All Rights Reserved jpayne@69: jpayne@69: Permission to use, copy, modify, and distribute this software and its jpayne@69: documentation for any purpose and without fee is hereby granted, jpayne@69: provided that the above copyright notice appear in all copies and that jpayne@69: both that copyright notice and this permission notice appear in jpayne@69: supporting documentation, and that the name of Hewlett-Packard not be jpayne@69: used in advertising or publicity pertaining to distribution of the jpayne@69: software without specific, written prior permission. jpayne@69: jpayne@69: HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING jpayne@69: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL jpayne@69: HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR jpayne@69: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, jpayne@69: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, jpayne@69: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS jpayne@69: SOFTWARE. jpayne@69: jpayne@69: ********************************************************/ jpayne@69: jpayne@69: /* Definitions used by the library and client */ jpayne@69: jpayne@69: #ifndef _XINPUT_H_ jpayne@69: #define _XINPUT_H_ jpayne@69: jpayne@69: #include jpayne@69: #include jpayne@69: jpayne@69: #define _deviceKeyPress 0 jpayne@69: #define _deviceKeyRelease 1 jpayne@69: jpayne@69: #define _deviceButtonPress 0 jpayne@69: #define _deviceButtonRelease 1 jpayne@69: jpayne@69: #define _deviceMotionNotify 0 jpayne@69: jpayne@69: #define _deviceFocusIn 0 jpayne@69: #define _deviceFocusOut 1 jpayne@69: jpayne@69: #define _proximityIn 0 jpayne@69: #define _proximityOut 1 jpayne@69: jpayne@69: #define _deviceStateNotify 0 jpayne@69: #define _deviceMappingNotify 1 jpayne@69: #define _changeDeviceNotify 2 jpayne@69: /* Space of 3 between is necessary! Reserved for DeviceKeyStateNotify, jpayne@69: DeviceButtonStateNotify, DevicePresenceNotify (essentially unused). This jpayne@69: code has to be in sync with FixExtensionEvents() in xserver/Xi/extinit.c */ jpayne@69: #define _propertyNotify 6 jpayne@69: jpayne@69: #define FindTypeAndClass(d,type,_class,classid,offset) \ jpayne@69: { int _i; XInputClassInfo *_ip; \ jpayne@69: type = 0; _class = 0; \ jpayne@69: for (_i=0, _ip= ((XDevice *) d)->classes; \ jpayne@69: _i< ((XDevice *) d)->num_classes; \ jpayne@69: _i++, _ip++) \ jpayne@69: if (_ip->input_class == classid) \ jpayne@69: {type = _ip->event_type_base + offset; \ jpayne@69: _class = ((XDevice *) d)->device_id << 8 | type;}} jpayne@69: jpayne@69: #define DeviceKeyPress(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, KeyClass, _deviceKeyPress) jpayne@69: jpayne@69: #define DeviceKeyRelease(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, KeyClass, _deviceKeyRelease) jpayne@69: jpayne@69: #define DeviceButtonPress(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, ButtonClass, _deviceButtonPress) jpayne@69: jpayne@69: #define DeviceButtonRelease(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, ButtonClass, _deviceButtonRelease) jpayne@69: jpayne@69: #define DeviceMotionNotify(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, ValuatorClass, _deviceMotionNotify) jpayne@69: jpayne@69: #define DeviceFocusIn(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, FocusClass, _deviceFocusIn) jpayne@69: jpayne@69: #define DeviceFocusOut(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, FocusClass, _deviceFocusOut) jpayne@69: jpayne@69: #define ProximityIn(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, ProximityClass, _proximityIn) jpayne@69: jpayne@69: #define ProximityOut(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, ProximityClass, _proximityOut) jpayne@69: jpayne@69: #define DeviceStateNotify(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, OtherClass, _deviceStateNotify) jpayne@69: jpayne@69: #define DeviceMappingNotify(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, OtherClass, _deviceMappingNotify) jpayne@69: jpayne@69: #define ChangeDeviceNotify(d,type,_class) \ jpayne@69: FindTypeAndClass(d, type, _class, OtherClass, _changeDeviceNotify) jpayne@69: jpayne@69: #define DevicePropertyNotify(d, type, _class) \ jpayne@69: FindTypeAndClass(d, type, _class, OtherClass, _propertyNotify) jpayne@69: jpayne@69: #define DevicePointerMotionHint(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _devicePointerMotionHint;} jpayne@69: jpayne@69: #define DeviceButton1Motion(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButton1Motion;} jpayne@69: jpayne@69: #define DeviceButton2Motion(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButton2Motion;} jpayne@69: jpayne@69: #define DeviceButton3Motion(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButton3Motion;} jpayne@69: jpayne@69: #define DeviceButton4Motion(d,type, _class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButton4Motion;} jpayne@69: jpayne@69: #define DeviceButton5Motion(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButton5Motion;} jpayne@69: jpayne@69: #define DeviceButtonMotion(d,type, _class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButtonMotion;} jpayne@69: jpayne@69: #define DeviceOwnerGrabButton(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceOwnerGrabButton;} jpayne@69: jpayne@69: #define DeviceButtonPressGrab(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _deviceButtonGrab;} jpayne@69: jpayne@69: #define NoExtensionEvent(d,type,_class) \ jpayne@69: { _class = ((XDevice *) d)->device_id << 8 | _noExtensionEvent;} jpayne@69: jpayne@69: jpayne@69: /* We need the declaration for DevicePresence. */ jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: extern "C" { jpayne@69: #endif jpayne@69: extern int _XiGetDevicePresenceNotifyEvent(Display *); jpayne@69: extern void _xibaddevice( Display *dpy, int *error); jpayne@69: extern void _xibadclass( Display *dpy, int *error); jpayne@69: extern void _xibadevent( Display *dpy, int *error); jpayne@69: extern void _xibadmode( Display *dpy, int *error); jpayne@69: extern void _xidevicebusy( Display *dpy, int *error); jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: } jpayne@69: #endif jpayne@69: jpayne@69: #define DevicePresence(dpy, type, _class) \ jpayne@69: { \ jpayne@69: type = _XiGetDevicePresenceNotifyEvent(dpy); \ jpayne@69: _class = (0x10000 | _devicePresence); \ jpayne@69: } jpayne@69: jpayne@69: /* Errors */ jpayne@69: #define BadDevice(dpy,error) _xibaddevice(dpy, &error) jpayne@69: jpayne@69: #define BadClass(dpy,error) _xibadclass(dpy, &error) jpayne@69: jpayne@69: #define BadEvent(dpy,error) _xibadevent(dpy, &error) jpayne@69: jpayne@69: #define BadMode(dpy,error) _xibadmode(dpy, &error) jpayne@69: jpayne@69: #define DeviceBusy(dpy,error) _xidevicebusy(dpy, &error) jpayne@69: jpayne@69: typedef struct _XAnyClassinfo *XAnyClassPtr; jpayne@69: jpayne@69: /*************************************************************** jpayne@69: * jpayne@69: * DeviceKey events. These events are sent by input devices that jpayne@69: * support input class Keys. jpayne@69: * The location of the X pointer is reported in the coordinate jpayne@69: * fields of the x,y and x_root,y_root fields. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct jpayne@69: { jpayne@69: int type; /* of event */ jpayne@69: unsigned long serial; /* # of last request processed */ jpayne@69: Bool send_event; /* true if from SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* "event" window reported relative to */ jpayne@69: XID deviceid; jpayne@69: Window root; /* root window event occurred on */ jpayne@69: Window subwindow; /* child window */ jpayne@69: Time time; /* milliseconds */ jpayne@69: int x, y; /* x, y coordinates in event window */ jpayne@69: int x_root; /* coordinates relative to root */ jpayne@69: int y_root; /* coordinates relative to root */ jpayne@69: unsigned int state; /* key or button mask */ jpayne@69: unsigned int keycode; /* detail */ jpayne@69: Bool same_screen; /* same screen flag */ jpayne@69: unsigned int device_state; /* device key or button mask */ jpayne@69: unsigned char axes_count; jpayne@69: unsigned char first_axis; jpayne@69: int axis_data[6]; jpayne@69: } XDeviceKeyEvent; jpayne@69: jpayne@69: typedef XDeviceKeyEvent XDeviceKeyPressedEvent; jpayne@69: typedef XDeviceKeyEvent XDeviceKeyReleasedEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * DeviceButton events. These events are sent by extension devices jpayne@69: * that support input class Buttons. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; /* of event */ jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* "event" window reported relative to */ jpayne@69: XID deviceid; jpayne@69: Window root; /* root window that the event occurred on */ jpayne@69: Window subwindow; /* child window */ jpayne@69: Time time; /* milliseconds */ jpayne@69: int x, y; /* x, y coordinates in event window */ jpayne@69: int x_root; /* coordinates relative to root */ jpayne@69: int y_root; /* coordinates relative to root */ jpayne@69: unsigned int state; /* key or button mask */ jpayne@69: unsigned int button; /* detail */ jpayne@69: Bool same_screen; /* same screen flag */ jpayne@69: unsigned int device_state; /* device key or button mask */ jpayne@69: unsigned char axes_count; jpayne@69: unsigned char first_axis; jpayne@69: int axis_data[6]; jpayne@69: } XDeviceButtonEvent; jpayne@69: jpayne@69: typedef XDeviceButtonEvent XDeviceButtonPressedEvent; jpayne@69: typedef XDeviceButtonEvent XDeviceButtonReleasedEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * DeviceMotionNotify event. These events are sent by extension devices jpayne@69: * that support input class Valuators. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct jpayne@69: { jpayne@69: int type; /* of event */ jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* "event" window reported relative to */ jpayne@69: XID deviceid; jpayne@69: Window root; /* root window that the event occurred on */ jpayne@69: Window subwindow; /* child window */ jpayne@69: Time time; /* milliseconds */ jpayne@69: int x, y; /* x, y coordinates in event window */ jpayne@69: int x_root; /* coordinates relative to root */ jpayne@69: int y_root; /* coordinates relative to root */ jpayne@69: unsigned int state; /* key or button mask */ jpayne@69: char is_hint; /* detail */ jpayne@69: Bool same_screen; /* same screen flag */ jpayne@69: unsigned int device_state; /* device key or button mask */ jpayne@69: unsigned char axes_count; jpayne@69: unsigned char first_axis; jpayne@69: int axis_data[6]; jpayne@69: } XDeviceMotionEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * DeviceFocusChange events. These events are sent when the focus jpayne@69: * of an extension device that can be focused is changed. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct jpayne@69: { jpayne@69: int type; /* of event */ jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* "event" window reported relative to */ jpayne@69: XID deviceid; jpayne@69: int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */ jpayne@69: int detail; jpayne@69: /* jpayne@69: * NotifyAncestor, NotifyVirtual, NotifyInferior, jpayne@69: * NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer, jpayne@69: * NotifyPointerRoot, NotifyDetailNone jpayne@69: */ jpayne@69: Time time; jpayne@69: } XDeviceFocusChangeEvent; jpayne@69: jpayne@69: typedef XDeviceFocusChangeEvent XDeviceFocusInEvent; jpayne@69: typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * ProximityNotify events. These events are sent by those absolute jpayne@69: * positioning devices that are capable of generating proximity information. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct jpayne@69: { jpayne@69: int type; /* ProximityIn or ProximityOut */ jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if this came from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; jpayne@69: XID deviceid; jpayne@69: Window root; jpayne@69: Window subwindow; jpayne@69: Time time; jpayne@69: int x, y; jpayne@69: int x_root, y_root; jpayne@69: unsigned int state; jpayne@69: Bool same_screen; jpayne@69: unsigned int device_state; /* device key or button mask */ jpayne@69: unsigned char axes_count; jpayne@69: unsigned char first_axis; jpayne@69: int axis_data[6]; jpayne@69: } XProximityNotifyEvent; jpayne@69: typedef XProximityNotifyEvent XProximityInEvent; jpayne@69: typedef XProximityNotifyEvent XProximityOutEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * DeviceStateNotify events are generated on EnterWindow and FocusIn jpayne@69: * for those clients who have selected DeviceState. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct jpayne@69: { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: } XInputClass; jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if this came from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; jpayne@69: XID deviceid; jpayne@69: Time time; jpayne@69: int num_classes; jpayne@69: char data[64]; jpayne@69: } XDeviceStateNotifyEvent; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: unsigned char num_valuators; jpayne@69: unsigned char mode; jpayne@69: int valuators[6]; jpayne@69: } XValuatorStatus; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: short num_keys; jpayne@69: char keys[32]; jpayne@69: } XKeyStatus; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: short num_buttons; jpayne@69: char buttons[32]; jpayne@69: } XButtonStatus; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * DeviceMappingNotify event. This event is sent when the key mapping, jpayne@69: * modifier mapping, or button mapping of an extension device is changed. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if this came from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* unused */ jpayne@69: XID deviceid; jpayne@69: Time time; jpayne@69: int request; /* one of MappingModifier, MappingKeyboard, jpayne@69: MappingPointer */ jpayne@69: int first_keycode;/* first keycode */ jpayne@69: int count; /* defines range of change w. first_keycode*/ jpayne@69: } XDeviceMappingEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * ChangeDeviceNotify event. This event is sent when an jpayne@69: * XChangeKeyboard or XChangePointer request is made. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if this came from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* unused */ jpayne@69: XID deviceid; jpayne@69: Time time; jpayne@69: int request; /* NewPointer or NewKeyboard */ jpayne@69: } XChangeDeviceNotifyEvent; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * DevicePresenceNotify event. This event is sent when the list of jpayne@69: * input devices changes, in which case devchange will be false, and jpayne@69: * no information about the change will be contained in the event; jpayne@69: * the client should use XListInputDevices() to learn what has changed. jpayne@69: * jpayne@69: * If devchange is true, an attribute that the server believes is jpayne@69: * important has changed on a device, and the client should use jpayne@69: * XGetDeviceControl to examine the device. If control is non-zero, jpayne@69: * then that control has changed meaningfully. jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if this came from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* unused */ jpayne@69: Time time; jpayne@69: Bool devchange; jpayne@69: XID deviceid; jpayne@69: XID control; jpayne@69: } XDevicePresenceNotifyEvent; jpayne@69: jpayne@69: /* jpayne@69: * Notifies the client that a property on a device has changed value. The jpayne@69: * client is expected to query the server for updated value of the property. jpayne@69: */ jpayne@69: typedef struct { jpayne@69: int type; jpayne@69: unsigned long serial; /* # of last request processed by server */ jpayne@69: Bool send_event; /* true if this came from a SendEvent request */ jpayne@69: Display *display; /* Display the event was read from */ jpayne@69: Window window; /* unused */ jpayne@69: Time time; jpayne@69: XID deviceid; /* id of the device that changed */ jpayne@69: Atom atom; /* the property that changed */ jpayne@69: int state; /* PropertyNewValue or PropertyDeleted */ jpayne@69: } XDevicePropertyNotifyEvent; jpayne@69: jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * Control structures for input devices that support input class jpayne@69: * Feedback. These are used by the XGetFeedbackControl and jpayne@69: * XChangeFeedbackControl functions. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: } XFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int click; jpayne@69: int percent; jpayne@69: int pitch; jpayne@69: int duration; jpayne@69: int led_mask; jpayne@69: int global_auto_repeat; jpayne@69: char auto_repeats[32]; jpayne@69: } XKbdFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int accelNum; jpayne@69: int accelDenom; jpayne@69: int threshold; jpayne@69: } XPtrFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int resolution; jpayne@69: int minVal; jpayne@69: int maxVal; jpayne@69: } XIntegerFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int max_symbols; jpayne@69: int num_syms_supported; jpayne@69: KeySym *syms_supported; jpayne@69: } XStringFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int percent; jpayne@69: int pitch; jpayne@69: int duration; jpayne@69: } XBellFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int led_values; jpayne@69: int led_mask; jpayne@69: } XLedFeedbackState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: } XFeedbackControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int accelNum; jpayne@69: int accelDenom; jpayne@69: int threshold; jpayne@69: } XPtrFeedbackControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int click; jpayne@69: int percent; jpayne@69: int pitch; jpayne@69: int duration; jpayne@69: int led_mask; jpayne@69: int led_value; jpayne@69: int key; jpayne@69: int auto_repeat_mode; jpayne@69: } XKbdFeedbackControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int num_keysyms; jpayne@69: KeySym *syms_to_display; jpayne@69: } XStringFeedbackControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int int_to_display; jpayne@69: } XIntegerFeedbackControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int percent; jpayne@69: int pitch; jpayne@69: int duration; jpayne@69: } XBellFeedbackControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: XID id; jpayne@69: int led_mask; jpayne@69: int led_values; jpayne@69: } XLedFeedbackControl; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * Device control structures. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: } XDeviceControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int first_valuator; jpayne@69: int num_valuators; jpayne@69: int *resolutions; jpayne@69: } XDeviceResolutionControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int num_valuators; jpayne@69: int *resolutions; jpayne@69: int *min_resolutions; jpayne@69: int *max_resolutions; jpayne@69: } XDeviceResolutionState; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int min_x; jpayne@69: int max_x; jpayne@69: int min_y; jpayne@69: int max_y; jpayne@69: int flip_x; jpayne@69: int flip_y; jpayne@69: int rotation; jpayne@69: int button_threshold; jpayne@69: } XDeviceAbsCalibControl, XDeviceAbsCalibState; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int offset_x; jpayne@69: int offset_y; jpayne@69: int width; jpayne@69: int height; jpayne@69: int screen; jpayne@69: XID following; jpayne@69: } XDeviceAbsAreaControl, XDeviceAbsAreaState; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int status; jpayne@69: } XDeviceCoreControl; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int status; jpayne@69: int iscore; jpayne@69: } XDeviceCoreState; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID control; jpayne@69: int length; jpayne@69: int enable; jpayne@69: } XDeviceEnableControl, XDeviceEnableState; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * An array of XDeviceList structures is returned by the jpayne@69: * XListInputDevices function. Each entry contains information jpayne@69: * about one input device. Among that information is an array of jpayne@69: * pointers to structures that describe the characteristics of jpayne@69: * the input device. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct _XAnyClassinfo { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: } XAnyClassInfo; jpayne@69: jpayne@69: typedef struct _XDeviceInfo *XDeviceInfoPtr; jpayne@69: jpayne@69: typedef struct _XDeviceInfo jpayne@69: { jpayne@69: XID id; jpayne@69: Atom type; jpayne@69: char *name; jpayne@69: int num_classes; jpayne@69: int use; jpayne@69: XAnyClassPtr inputclassinfo; jpayne@69: } XDeviceInfo; jpayne@69: jpayne@69: typedef struct _XKeyInfo *XKeyInfoPtr; jpayne@69: jpayne@69: typedef struct _XKeyInfo jpayne@69: { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: unsigned short min_keycode; jpayne@69: unsigned short max_keycode; jpayne@69: unsigned short num_keys; jpayne@69: } XKeyInfo; jpayne@69: jpayne@69: typedef struct _XButtonInfo *XButtonInfoPtr; jpayne@69: jpayne@69: typedef struct _XButtonInfo { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: short num_buttons; jpayne@69: } XButtonInfo; jpayne@69: jpayne@69: typedef struct _XAxisInfo *XAxisInfoPtr; jpayne@69: jpayne@69: typedef struct _XAxisInfo { jpayne@69: int resolution; jpayne@69: int min_value; jpayne@69: int max_value; jpayne@69: } XAxisInfo; jpayne@69: jpayne@69: typedef struct _XValuatorInfo *XValuatorInfoPtr; jpayne@69: jpayne@69: typedef struct _XValuatorInfo jpayne@69: { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: XID c_class; jpayne@69: #else jpayne@69: XID class; jpayne@69: #endif jpayne@69: int length; jpayne@69: unsigned char num_axes; jpayne@69: unsigned char mode; jpayne@69: unsigned long motion_buffer; jpayne@69: XAxisInfoPtr axes; jpayne@69: } XValuatorInfo; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * An XDevice structure is returned by the XOpenDevice function. jpayne@69: * It contains an array of pointers to XInputClassInfo structures. jpayne@69: * Each contains information about a class of input supported by the jpayne@69: * device, including a pointer to an array of data for each type of event jpayne@69: * the device reports. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: jpayne@69: typedef struct { jpayne@69: unsigned char input_class; jpayne@69: unsigned char event_type_base; jpayne@69: } XInputClassInfo; jpayne@69: jpayne@69: typedef struct { jpayne@69: XID device_id; jpayne@69: int num_classes; jpayne@69: XInputClassInfo *classes; jpayne@69: } XDevice; jpayne@69: jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * The following structure is used to return information for the jpayne@69: * XGetSelectedExtensionEvents function. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: XEventClass event_type; jpayne@69: XID device; jpayne@69: } XEventList; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * The following structure is used to return motion history data from jpayne@69: * an input device that supports the input class Valuators. jpayne@69: * This information is returned by the XGetDeviceMotionEvents function. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: Time time; jpayne@69: int *data; jpayne@69: } XDeviceTimeCoord; jpayne@69: jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * Device state structure. jpayne@69: * This is returned by the XQueryDeviceState request. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: XID device_id; jpayne@69: int num_classes; jpayne@69: XInputClass *data; jpayne@69: } XDeviceState; jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * Note that the mode field is a bitfield that reports the Proximity jpayne@69: * status of the device as well as the mode. The mode field should jpayne@69: * be OR'd with the mask DeviceMode and compared with the values jpayne@69: * Absolute and Relative to determine the mode, and should be OR'd jpayne@69: * with the mask ProximityState and compared with the values InProximity jpayne@69: * and OutOfProximity to determine the proximity state. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: unsigned char num_valuators; jpayne@69: unsigned char mode; jpayne@69: int *valuators; jpayne@69: } XValuatorState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: short num_keys; jpayne@69: char keys[32]; jpayne@69: } XKeyState; jpayne@69: jpayne@69: typedef struct { jpayne@69: #if defined(__cplusplus) || defined(c_plusplus) jpayne@69: unsigned char c_class; jpayne@69: #else jpayne@69: unsigned char class; jpayne@69: #endif jpayne@69: unsigned char length; jpayne@69: short num_buttons; jpayne@69: char buttons[32]; jpayne@69: } XButtonState; jpayne@69: jpayne@69: jpayne@69: jpayne@69: /******************************************************************* jpayne@69: * jpayne@69: * Function definitions. jpayne@69: * jpayne@69: */ jpayne@69: jpayne@69: _XFUNCPROTOBEGIN jpayne@69: jpayne@69: extern int XChangeKeyboardDevice( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */ jpayne@69: ); jpayne@69: jpayne@69: extern int XChangePointerDevice( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int /* xaxis */, jpayne@69: int /* yaxis */ jpayne@69: ); jpayne@69: jpayne@69: extern int XGrabDevice( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: Window /* grab_window */, jpayne@69: Bool /* ownerEvents */, jpayne@69: int /* event count */, jpayne@69: XEventClass* /* event_list */, jpayne@69: int /* this_device_mode */, jpayne@69: int /* other_devices_mode */, jpayne@69: Time /* time */ jpayne@69: ); jpayne@69: jpayne@69: extern int XUngrabDevice( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: Time /* time */ jpayne@69: ); jpayne@69: jpayne@69: extern int XGrabDeviceKey( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned int /* key */, jpayne@69: unsigned int /* modifiers */, jpayne@69: XDevice* /* modifier_device */, jpayne@69: Window /* grab_window */, jpayne@69: Bool /* owner_events */, jpayne@69: unsigned int /* event_count */, jpayne@69: XEventClass* /* event_list */, jpayne@69: int /* this_device_mode */, jpayne@69: int /* other_devices_mode */ jpayne@69: ); jpayne@69: jpayne@69: extern int XUngrabDeviceKey( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned int /* key */, jpayne@69: unsigned int /* modifiers */, jpayne@69: XDevice* /* modifier_dev */, jpayne@69: Window /* grab_window */ jpayne@69: ); jpayne@69: jpayne@69: extern int XGrabDeviceButton( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned int /* button */, jpayne@69: unsigned int /* modifiers */, jpayne@69: XDevice* /* modifier_device */, jpayne@69: Window /* grab_window */, jpayne@69: Bool /* owner_events */, jpayne@69: unsigned int /* event_count */, jpayne@69: XEventClass* /* event_list */, jpayne@69: int /* this_device_mode */, jpayne@69: int /* other_devices_mode */ jpayne@69: ); jpayne@69: jpayne@69: extern int XUngrabDeviceButton( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned int /* button */, jpayne@69: unsigned int /* modifiers */, jpayne@69: XDevice* /* modifier_dev */, jpayne@69: Window /* grab_window */ jpayne@69: ); jpayne@69: jpayne@69: extern int XAllowDeviceEvents( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int /* event_mode */, jpayne@69: Time /* time */ jpayne@69: ); jpayne@69: jpayne@69: extern int XGetDeviceFocus( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: Window* /* focus */, jpayne@69: int* /* revert_to */, jpayne@69: Time* /* time */ jpayne@69: ); jpayne@69: jpayne@69: extern int XSetDeviceFocus( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: Window /* focus */, jpayne@69: int /* revert_to */, jpayne@69: Time /* time */ jpayne@69: ); jpayne@69: jpayne@69: extern XFeedbackState *XGetFeedbackControl( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int* /* num_feedbacks */ jpayne@69: ); jpayne@69: jpayne@69: extern void XFreeFeedbackList( jpayne@69: XFeedbackState* /* list */ jpayne@69: ); jpayne@69: jpayne@69: extern int XChangeFeedbackControl( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned long /* mask */, jpayne@69: XFeedbackControl* /* f */ jpayne@69: ); jpayne@69: jpayne@69: extern int XDeviceBell( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: XID /* feedbackclass */, jpayne@69: XID /* feedbackid */, jpayne@69: int /* percent */ jpayne@69: ); jpayne@69: jpayne@69: extern KeySym *XGetDeviceKeyMapping( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: #if NeedWidePrototypes jpayne@69: unsigned int /* first */, jpayne@69: #else jpayne@69: KeyCode /* first */, jpayne@69: #endif jpayne@69: int /* keycount */, jpayne@69: int* /* syms_per_code */ jpayne@69: ); jpayne@69: jpayne@69: extern int XChangeDeviceKeyMapping( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int /* first */, jpayne@69: int /* syms_per_code */, jpayne@69: KeySym* /* keysyms */, jpayne@69: int /* count */ jpayne@69: ); jpayne@69: jpayne@69: extern XModifierKeymap *XGetDeviceModifierMapping( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */ jpayne@69: ); jpayne@69: jpayne@69: extern int XSetDeviceModifierMapping( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: XModifierKeymap* /* modmap */ jpayne@69: ); jpayne@69: jpayne@69: extern int XSetDeviceButtonMapping( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned char* /* map[] */, jpayne@69: int /* nmap */ jpayne@69: ); jpayne@69: jpayne@69: extern int XGetDeviceButtonMapping( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: unsigned char* /* map[] */, jpayne@69: unsigned int /* nmap */ jpayne@69: ); jpayne@69: jpayne@69: extern XDeviceState *XQueryDeviceState( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */ jpayne@69: ); jpayne@69: jpayne@69: extern void XFreeDeviceState( jpayne@69: XDeviceState* /* list */ jpayne@69: ); jpayne@69: jpayne@69: extern XExtensionVersion *XGetExtensionVersion( jpayne@69: Display* /* display */, jpayne@69: _Xconst char* /* name */ jpayne@69: ); jpayne@69: jpayne@69: extern XDeviceInfo *XListInputDevices( jpayne@69: Display* /* display */, jpayne@69: int* /* ndevices */ jpayne@69: ); jpayne@69: jpayne@69: extern void XFreeDeviceList( jpayne@69: XDeviceInfo* /* list */ jpayne@69: ); jpayne@69: jpayne@69: extern XDevice *XOpenDevice( jpayne@69: Display* /* display */, jpayne@69: XID /* id */ jpayne@69: ); jpayne@69: jpayne@69: extern int XCloseDevice( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */ jpayne@69: ); jpayne@69: jpayne@69: extern int XSetDeviceMode( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int /* mode */ jpayne@69: ); jpayne@69: jpayne@69: extern int XSetDeviceValuators( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int* /* valuators */, jpayne@69: int /* first_valuator */, jpayne@69: int /* num_valuators */ jpayne@69: ); jpayne@69: jpayne@69: extern XDeviceControl *XGetDeviceControl( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int /* control */ jpayne@69: ); jpayne@69: jpayne@69: extern int XChangeDeviceControl( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: int /* control */, jpayne@69: XDeviceControl* /* d */ jpayne@69: ); jpayne@69: jpayne@69: extern int XSelectExtensionEvent( jpayne@69: Display* /* display */, jpayne@69: Window /* w */, jpayne@69: XEventClass* /* event_list */, jpayne@69: int /* count */ jpayne@69: ); jpayne@69: jpayne@69: extern int XGetSelectedExtensionEvents( jpayne@69: Display* /* display */, jpayne@69: Window /* w */, jpayne@69: int* /* this_client_count */, jpayne@69: XEventClass** /* this_client_list */, jpayne@69: int* /* all_clients_count */, jpayne@69: XEventClass** /* all_clients_list */ jpayne@69: ); jpayne@69: jpayne@69: extern int XChangeDeviceDontPropagateList( jpayne@69: Display* /* display */, jpayne@69: Window /* window */, jpayne@69: int /* count */, jpayne@69: XEventClass* /* events */, jpayne@69: int /* mode */ jpayne@69: ); jpayne@69: jpayne@69: extern XEventClass *XGetDeviceDontPropagateList( jpayne@69: Display* /* display */, jpayne@69: Window /* window */, jpayne@69: int* /* count */ jpayne@69: ); jpayne@69: jpayne@69: extern Status XSendExtensionEvent( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: Window /* dest */, jpayne@69: Bool /* prop */, jpayne@69: int /* count */, jpayne@69: XEventClass* /* list */, jpayne@69: XEvent* /* event */ jpayne@69: ); jpayne@69: jpayne@69: extern XDeviceTimeCoord *XGetDeviceMotionEvents( jpayne@69: Display* /* display */, jpayne@69: XDevice* /* device */, jpayne@69: Time /* start */, jpayne@69: Time /* stop */, jpayne@69: int* /* nEvents */, jpayne@69: int* /* mode */, jpayne@69: int* /* axis_count */ jpayne@69: ); jpayne@69: jpayne@69: extern void XFreeDeviceMotionEvents( jpayne@69: XDeviceTimeCoord* /* events */ jpayne@69: ); jpayne@69: jpayne@69: extern void XFreeDeviceControl( jpayne@69: XDeviceControl* /* control */ jpayne@69: ); jpayne@69: jpayne@69: extern Atom* XListDeviceProperties( jpayne@69: Display* /* dpy */, jpayne@69: XDevice* /* dev */, jpayne@69: int* /* nprops_return */ jpayne@69: ); jpayne@69: jpayne@69: extern void XChangeDeviceProperty( jpayne@69: Display* /* dpy */, jpayne@69: XDevice* /* dev */, jpayne@69: Atom /* property */, jpayne@69: Atom /* type */, jpayne@69: int /* format */, jpayne@69: int /* mode */, jpayne@69: _Xconst unsigned char * /*data */, jpayne@69: int /* nelements */ jpayne@69: ); jpayne@69: jpayne@69: extern void jpayne@69: XDeleteDeviceProperty( jpayne@69: Display* /* dpy */, jpayne@69: XDevice* /* dev */, jpayne@69: Atom /* property */ jpayne@69: ); jpayne@69: jpayne@69: extern Status jpayne@69: XGetDeviceProperty( jpayne@69: Display* /* dpy*/, jpayne@69: XDevice* /* dev*/, jpayne@69: Atom /* property*/, jpayne@69: long /* offset*/, jpayne@69: long /* length*/, jpayne@69: Bool /* delete*/, jpayne@69: Atom /* req_type*/, jpayne@69: Atom* /* actual_type*/, jpayne@69: int* /* actual_format*/, jpayne@69: unsigned long* /* nitems*/, jpayne@69: unsigned long* /* bytes_after*/, jpayne@69: unsigned char** /* prop*/ jpayne@69: ); jpayne@69: jpayne@69: _XFUNCPROTOEND jpayne@69: jpayne@69: #endif /* _XINPUT_H_ */