Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.


Warning for game developers: PCGamingWiki staff members will only ever reach out to you using the official press@pcgamingwiki.com mail address.
Be aware of scammers claiming to be representatives or affiliates of PCGamingWiki who promise a PCGW page for a game key.

InputPlumber

From PCGamingWiki, the wiki about fixing PC games
InputPlumber
Developers
William Edwards
Release dates
Linux February 14, 2024

InputPlumber is an input routing and remapping daemon for Linux written in Rust. It allows creation of composite input devices and remapping between inputs such as keyboard, mouse, and gamepads. The project is licensed under the GPL 3.0 or later. The project is already shipped as part of SteamOS.

General information

Official Source Code Repository

Availability

Source DRM Notes Keys OS
Developer website
DRM-free
GitHub
Linux

Installation

Fedora Atomic

Fedora Atomic installation instructions[1]
  1. Add the COPR repository for the specific version of Fedora to the system. Here the COPR repository for Fedora 42 is installed.
    curl --location https://copr.fedorainfracloud.org/coprs/shadowblip/InputPlumber/repo/fedora-42/shadowblip-InputPlumber-fedora-42.repo | sudo tee /etc/yum.repos.d/shadowblip-InputPlumber-fedora-42.repo
  2. Install the inputplumber package.
    sudo rpm-ostree install inputplumber
  3. Reboot to complete the installation.
    sudo systemctl reboot
  4. Enable and start the InputPlumber service.
    sudo systemctl enable --now inputplumber.service
  5. Enable the inputplumber-suspend.service.
    sudo systemctl enable inputplumber-suspend.service

SteamOS

SteamOS installation instructions[1]
  1. InputPlumber is already installed and enabled, however the inputplumber-suspend.service must be enabled manually by running:
    sudo systemctl enable inputplumber-suspend.service.

Usage

Manage devices

By default, no devices are managed by InputPlumber.
Manage devices[1]
  • To manage all devices at runtime, run inputplumber devices manage-all --enable. This command must be run every time the daemon restarts.
  • Configuration files must be used to automatically manage devices. These configuration files are created per device.
    1. Create the directory /etc/inputplumber/devices.d/: mkdir --parents /etc/inputplumber/devices.d/
    2. Copy the desired device file from /usr/share/inputplumber/devices/ to /etc/inputplumber/devices.d/ using a lower-numbered prefix number. The lower prefix number gives your configuration file a higher precedence than the default file for the device. For the Playstation 5 DualSense controller, the command to copy the file could look like this: cp /usr/share/inputplumber/devices/60-ps5_ds_gamepad.yaml /etc/inputplumber/devices.d/20-ps5_ds_gamepad.yaml.
    3. Open the copied device file in a text editor.
    4. In the YAML file, enable the auto_manage option under the options key by setting it to true. If it is not present, add it. It should appear as follows:
      options:
        auto_manager: true
    5. Restart InputPlumber for the change to take effect: sudo systemctl restart inputplumber.service

List devices

List devices[1]

To see which devices are managed by InputPlumber, run inputplumber devices list.

Order devices

Order devices[1]

To adjust the order of devices, run inputplumber devices order followed by the device numbers in the desired order, separated by spaces. The command to swap the default order of two controllers is inputplumber devices order 1 0.

Remap gamepad

Remapping a gamepad is done through device profiles which are specified in YAML files. Device profiles are not to be confused with device files which describe the input device itself.
Remap gamepad[1]
  1. Copy the file /usr/share/inputplumber/profiles/mouse_keyboard_wasd.yaml to profile.yaml.
  2. Open the file profile.yaml in a text editor.
  3. Modify the mappings in the file's mapping section. The available keywords are documented in the device profile schema
  4. Save the file.
  5. Load the device profile for the desired device using the command inputplumber device device-id profile load path/to/profile. Assuming the target device has the id 0, the command to load the previously created profile is inputplumber device 0 load profile.yaml.

Game data

Configuration file(s) location

System Location
Linux /etc/inputplumber/compatibility_maps.d/*.yaml
/etc/inputplumber/devices.d/*.yaml


References

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Verified by User:Jwillikers on 2025-10-06