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

# DMXAddInput(3)

attach a new input

## NAME

DMXAddInput, DMXAddBackendInput, DMXAddConsoleInput - attach a new input

## SYNOPSIS

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

```
Bool DMXAddInput(Display *dpy,
                 unsigned int mask,
                 DMXInputAttributes *attr,
                 int *id);
Bool DMXAddBackendInput(Display *dpy,
                        int screen,
                        int sendsCore,
                        int *newId);
Bool DMXAddConsoleInput(Display *dpy,
                        const char *name,
                        int sendsCore,
                        int *newId);
```

## DESCRIPTION

**DMXAddInput()** is used to attach a new input (or a previously detached input) to the [**Xdmx**(1)](/Xdmx/1.md) server. *mask* specifies the fields in *attr* that are active, and *id* returns the device if of the first device in the series that is added.

The value of *mask* is computed from the following values:

```
DMXInputType
DMXInputPhysicalScreen
DMXInputSendsCore
```

The **DMXInputAttributes** structure is:

```
typedef struct {
    DMXInputEnum inputType;
    int          physicalScreen;
    int          physicalId;
    Bool         isCore;
    Bool         sendsCore;
    const char   *name;
    Bool         detached;
} DMXInputAttributes;
```

*inputType* may have the value **DMXConsoleInputType  or  DMXBackendInputType .**

For console devices, *name* will specify the display to be used.

For back-end devices, *physicalScreen* will specify the [**Xdmx**(1)](/Xdmx/1.md) screen number.

If *sendsCore* is **True**, the new device will be added as a true core device.

If a device was removed with [**DMXRemoveInput**(3)](/DMXRemoveInput/3.md) an attempt will be made to reconnect the previous devices (*sendsCore* is ignored in this case).

**DMXAddBackendInput()** is a helper function that is used to add input from a back-end server. With this function, *screen* refers to the back-end screen, *sendsCore* is **True** if the new input should send core events (and it ignored if the input has been detached), and *newId* will hold the device id of the first device in the series added.

**DMXAddConsoleInput()** is a helper function that is used to add input from a console.  With this function, *name* is the name of the console display, *sendsCore* is **True** if the new input should send core events (and it ignored if the input has been detached), and *newId* will hold the device id of the first device in the series added.

## RETURN VALUE

**DMXAddInput()** returns **True** on success and **False** otherwise.

**DMXAddInput()** can generate **BadValue** (if *inputType* is invalid or *physicalScreen* is out of range), **BadAccess** (if the input has already been attached or if the backend screen is currently detached).

## NOTES

Local devices cannot be attached or detached.

Attributes that are not specified will default to 0.  This may lead to unintended results.

## SEE ALSO

[**DMXRemoveInput**(3)](/DMXRemoveInput/3.md), [**DMX**(3)](/DMX/3.md), [**Xdmx**(1)](/Xdmx/1.md)
