XOpenDevice(3X11)

XOpenDevice(3X11)

XClipBox Home Page Subroutines Index XCloseDisplay


NAME
       XOpenDevice,  XCloseDevice  -  open  or close an extension
       input device

SYNTAX
       XDevice *XOpenDevice(display, device_id)
             Display *display;
             XID device_id;

       XCloseDevice(display, device)
             Display *display;
             XDevice *device;

ARGUMENTS
       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 inaccessi-
       ble 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 XInputClass-
       Info 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 sup-
       ported by the device.   Defined  types  include  KeyClass,
       ButtonClass, ValuatorClass, ProximityClass, FeedbackClass,
       FocusClass, and OtherClass.  The  event_type_base  identi-
       fies 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,  DeviceMappiingNotify,  ChangeDeviceNo-
       tify,    DevicePointerMotionHint,     DeviceButton1Motion,
       DeviceButton2Motion,    DeviceButton3Motion,    DeviceBut-
       ton4Motion,    DeviceButton5Motion,    DeviceButtonMotion,
       DeviceOwnerGrabButton, DeviceButtonPressGrab, and NoExten-
       sionEvent.

       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 XSelectExtension-
       Event 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 compari-
       son with the type in the event.

DIAGNOSTICS
       BadDevice   An  invalid  device was specified.  The speci-
                   fied device does not exist, or is the  X  key-
                   board 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.

SEE ALSO
       Programming with Xlib

XClipBox Home Page Subroutines Index XCloseDisplay