<h1 align="center">
  <img src="https://raw.githubusercontent.com/ShadowBlip/InputPlumber/main/icon.svg" alt="InputPlumber Logo" width="200">
  <br>
  InputPlumber
</h1>

<p align="center">
  <a href="https://github.com/ShadowBlip/InputPlumber/stargazers"><img src="https://img.shields.io/github/stars/ShadowBlip/InputPlumber" /></a>
  <a href="https://github.com/ShadowBlip/InputPlumber/blob/main/LICENSE"><img src="https://img.shields.io/github/license/ShadowBlip/InputPlumber" /></a>
  <a href="https://discord.gg/Ea9ABXhtkv"><img alt="Discord" src="https://img.shields.io/discord/721211671124770837?label=discord" /></a>
  <a href="https://shadowblip.github.io/InputPlumber/"><img alt="Documentation" src="https://img.shields.io/badge/documentation-blue?logo=materialformkdocs&logoColor=white" /></a>
  <br>
</p>

## About

InputPlumber is an open source input routing and control daemon for Linux. It can
be used to combine any number of input devices (like gamepads, mice, and keyboards)
and translate their input to a variety of virtual device formats.

### Features

- [x] Combine multiple input devices
- [x] Emulate mouse, keyboard, and gamepad inputs
- [x] Intercept and route input over DBus for overlay interface control
- [x] Input mapping profiles to translate source input into the desired target input
- [ ] Route input over the network

## Documentation

You can [read documentation](https://shadowblip.github.io/InputPlumber/) about how
to configure and use InputPlumber here:

- [Overview](https://shadowblip.github.io/InputPlumber/)
- [Installation](https://shadowblip.github.io/InputPlumber/install/)
- [Usage](https://shadowblip.github.io/InputPlumber/usage/)
- [DBus API](https://shadowblip.github.io/InputPlumber/dbus-interface/composite_device/)

## License

InputPlumber is licensed under THE GNU GPLv3+. See [LICENSE](LICENSE) for details.
