---
name: "DMXGetInputAttributes"
section: "3"
platform: "linux"
package: "libdmx-dev"
version: "1:1.1.4-2"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/DMXGetInputAttributes"
---

# DMXGetInputAttributes(3)

determine input device attributes

## NAME

DMXGetInputAttributes - determine input device attributes

## SYNOPSIS

**#include \<X11/extensions/dmxext.h\>**

```
Bool DMXGetInputAttributes(Display *dpy,
                           int id,
                           DMXInputAttributes *attr);
```

## DESCRIPTION

**DMXGetInputAttributes()** returns information about the input device specified with *id*. This information cannot be obtained from the [**XListInputDevices**(3)](/XListInputDevices/3.md) call. *id* is the same as that used by the [**XListInputDevices**(3)](/XListInputDevices/3.md) call, and must be in the range 0 to one less than the value returned by **[DMXGetInputCount(3)](/DMXGetInputCount/3.md)**, inclusive.

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)](/DMXGetScreenAttributes/3.md) 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)](/DMXGetScreenAttributes/3.md)).

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)](/DMXAddInput/3.md).

## RETURN VALUE

**DMXGetInputAttributes()** returns **True** unless there is a protocol error.

**DMXGetInputAttributes()** can generate **BadValue** (if the value of *id* is out of range).

## SEE ALSO

[**DMXGetInputCount**(3)](/DMXGetInputCount/3.md),  [**XListInputDevices**(3)](/XListInputDevices/3.md),  [**DMXGetScreenAttributes**(3)](/DMXGetScreenAttributes/3.md),  [**DMXAddInput**(3)](/DMXAddInput/3.md),  [**DMX**(3)](/DMX/3.md), [**Xdmx**(1)](/Xdmx/1.md)
