---
name: "inputplug"
section: "1"
platform: "linux"
package: "inputplug"
version: "0.4.0-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/inputplug"
---

# inputplug(1)

XInput event monitor

## NAME

inputplug - XInput event monitor

## SYNOPSIS

**inputplug** \[**-v**\] \[**-n**\] \[**-d**\] \[**-0**\] **-c** *command-prefix*

**inputplug** \[**-h**\|**--help**\]

## DESCRIPTION

**inputplug** is a daemon which connects to a running X server and monitors its XInput hierarchy change events. Such events arrive when a device is being attached or removed, enabled or disabled etc.

When a hierarchy change happens, **inputplug** parses the event notification structure, and calls the command specified by *command-prefix*. The command receives four arguments:

- *command-prefix* *event-type* *device-id* *device-type* *device-name*

  Event type may be one of the following:

- •

  *XIMasterAdded*

- •

  *XIMasterRemoved*

- •

  *XISlaveAdded*

- •

  *XISlaveRemoved*

- •

  *XISlaveAttached*

- •

  *XISlaveDetached*

- •

  *XIDeviceEnabled*

- •

  *XIDeviceDisabled*

Device type may be any of those:

- •

  *XIMasterPointer*

- •

  *XIMasterKeyboard*

- •

  *XISlavePointer*

- •

  *XISlaveKeyboard*

- •

  *XIFloatingSlave*

Device identifier is an integer. The device name may have embedded spaces.

## OPTIONS

A summary of options is included below.

- **-h**, **--help**

  Show help (**--help** shows more details).

- **-v**

  Be a bit more verbose.

- **-n**

  Start up, monitor events, but don't actually run anything. With verbose more enabled, would print the actual command it'd run. This implies **-d**.

- **-d**

  Don't daemonise. Run in the foreground.

- **-0**

  On start, trigger added and enabled events for each plugged devices. A master device will trigger the "added" event while a slave device will trigger both the "added" and the "enabled" device.

- **-c** *command-prefix*

  Command prefix to run. Unfortunately, currently this is passed to [**execvp**(3)](/execvp/3.md) directly, so spaces aren't allowed. This is subject to change in future.

- **-p** *pidfile*

  Write the process ID of the running daemon to the file *pidfile*

## ENVIRONMENT

- *DISPLAY*

  X11 display to connect to.

## SEE ALSO

[**xinput**(1)](/xinput/1.md)

## COPYRIGHT

Copyright (C) 2013, 2014, 2018, 2020, 2021 Andrej Shadura.

Copyright (C) 2014, 2020 Vincent Bernat.

Licensed as MIT/X11.

## AUTHOR

Andrej Shadura \<andrewsh@debian.org\>
