114 lines
4.0 KiB
Plaintext
114 lines
4.0 KiB
Plaintext
|
XOPENDEVICE(libmansuffix)
|
||
|
=========================
|
||
|
|
||
|
NAME
|
||
|
----
|
||
|
|
||
|
XOpenDevice, XCloseDevice - open or close an extension input
|
||
|
device
|
||
|
|
||
|
SYNOPSIS
|
||
|
--------
|
||
|
|
||
|
#include <X11/extensions/XInput.h>
|
||
|
|
||
|
XDevice *XOpenDevice( Display *display,
|
||
|
XID device_id);
|
||
|
|
||
|
XCloseDevice( Display *display,
|
||
|
XDevice *device);
|
||
|
|
||
|
display
|
||
|
Specifies the connection to the X server.
|
||
|
|
||
|
device_id
|
||
|
Specifies the id of the device to be opened
|
||
|
|
||
|
device
|
||
|
Specifies the device to be closed
|
||
|
|
||
|
DESCRIPTION
|
||
|
-----------
|
||
|
|
||
|
The XOpenDevice request makes an input device accessible to a
|
||
|
client through input extension protocol requests. If
|
||
|
successful, it returns a pointer to an XDevice structure.
|
||
|
|
||
|
The XCloseDevice request makes an input device inaccessible to
|
||
|
a client through input extension protocol requests. Before
|
||
|
terminating, and client that has opened input devices through
|
||
|
the input extension should close them via CloseDevice.
|
||
|
|
||
|
When a client makes an XCloseDevice request, any active grabs
|
||
|
that the client has on the device are released. Any event
|
||
|
selections that the client has are deleted, as well as any
|
||
|
passive grabs. If the requesting client is the last client
|
||
|
accessing the device, the server may disable all access by X to
|
||
|
the device.
|
||
|
|
||
|
XOpenDevice and XCloseDevice can generate a BadDevice error.
|
||
|
|
||
|
Structures
|
||
|
|
||
|
The XDevice structure returned by XOpenDevice contains:
|
||
|
typedef struct {
|
||
|
XID device_id;
|
||
|
int num_classes;
|
||
|
XInputClassInfo *classes;
|
||
|
} XDevice;
|
||
|
|
||
|
The classes field is a pointer to an array of XInputClassInfo
|
||
|
structures. Each element of this array contains an event type
|
||
|
base for a class of input supported by the specified device.
|
||
|
The num_classes field indicates the number of elements in the
|
||
|
classes array.
|
||
|
|
||
|
The XInputClassInfo structure contains:
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned char input_class;
|
||
|
unsigned char event_type_base;
|
||
|
} XInputClassInfo;
|
||
|
|
||
|
The input_class field identifies one class of input supported
|
||
|
by the device. Defined types include KeyClass, ButtonClass,
|
||
|
ValuatorClass, ProximityClass, FeedbackClass, FocusClass, and
|
||
|
OtherClass. The event_type_base identifies the event type of
|
||
|
the first event in that class.
|
||
|
|
||
|
The information contained in the XInputClassInfo structure is
|
||
|
used by macros to obtain the event classes that clients use in
|
||
|
making XSelectExtensionEvent requests. Currently defined macros
|
||
|
include DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress,
|
||
|
DeviceButtonRelese, DeviceMotionNotify, DeviceFocusIn,
|
||
|
DeviceFocusOut, ProximityIn, ProximityOut, DeviceStateNotify,
|
||
|
DeviceMappingNotify, ChangeDeviceNotify,
|
||
|
DevicePointerMotionHint, DeviceButton1Motion,
|
||
|
DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion,
|
||
|
DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton,
|
||
|
DeviceButtonPressGrab, and NoExtensionEvent.
|
||
|
|
||
|
To obtain the proper event class for a particular device, one
|
||
|
of the above macros is invoked using the XDevice structure for
|
||
|
that device. For example,
|
||
|
DeviceKeyPress (*device, type, eventclass);
|
||
|
|
||
|
returns the DeviceKeyPress event type and the eventclass for
|
||
|
DeviceKeyPress events from the specified device.
|
||
|
|
||
|
This eventclass can then be used in an XSelectExtensionEvent
|
||
|
request to ask the server to send DeviceKeyPress events from
|
||
|
this device. When a selected event is received via XNextEvent,
|
||
|
the type can be used for comparison with the type in the event.
|
||
|
|
||
|
DIAGNOSTICS
|
||
|
-----------
|
||
|
|
||
|
BadDevice
|
||
|
An invalid device was specified. The specified device
|
||
|
does not exist, or is the X keyboard or X pointer. This
|
||
|
error may also occur if some other client has caused the
|
||
|
specified device to become the X keyboard or X pointer
|
||
|
device via the XChangeKeyboardDevice or
|
||
|
XChangePointerDevice requests.
|