Bool DMXGetInputAttributes(Display *dpy, int id, DMXInputAttributes *attr);
The DMXInputAttributes structure is:
typedef struct { DMXInputEnum inputType; int physicalScreen; int physicalId; Bool isCore; Bool sendsCore; const char *name; Bool detached; } DMXInputAttributes;
The value of inputType will always be valid, and will have one of the following values, depending on the type of input: DMXLocalInputType , DMXConsoleInputType , or DMXBackendInputType .
For local devices, all other fields returned, except isCore and sendsCore , are invalid.
For console devices, physicalScreen and physicalID will be invalid, and name will return the name of the X server on which the console window is displayed.
For back-end devices, physicalScreen will identify the back-end display and can be used as an argument to DMXGetScreenAttributes(3) to obtain more information; physicalId will be the XInput device id on the back-end X server; and name will be invalid (since it does not provide any additional information that cannot be obtained with DMXGetScreenAttributes(3)).
If isCore is True, then this device is active as a true core input device and will send core events. If sendsCore is True, then this device is an XInput extension device, but sends core events instead of extension events. This behavior is different from that of XFree86 or Xorg, where XInput extension devices may send both extension events and core events.
If detached is True, then this device has been detached and is no longer producing input events. The device may be reattached using DMXAddInput(3).
DMXGetInputAttributes() can generate BadValue (if the value of id is out of range).