Cross-platform input remapping tool written in Rust.
Remapper lets you map input events from physical devices (keyboard, mouse, gamepad) to virtual output devices, with support for simple remaps, macros, combos, and tap/hold behavior.
- Simple 1:1 remapping
- Macro sequences
- Tap/hold conditional mappings
- Combo/chord mappings
- CLI workflow for creating and running profiles
- GUI built with
iced - JSON configuration with migration support
git clone https://github.com/rennerdo30/remapper.git
cd remapper
cargo build --releaseThe binary will be at target/release/remapper.
libudev- access to
/dev/input/* - access to
/dev/uinput
Optional udev rules are provided in udev/99-remapper.rules.
# List available devices
remapper list devices
# Create a profile interactively
remapper create
# Run all enabled profiles
remapper run
# Launch GUI
remapper guiSee all commands:
remapper --helpUser configuration is stored in:
~/.config/remapper/config.json
Example fixtures are available in tests/fixtures/.
# Typecheck and compile
cargo check
# Run tests
cargo testGitHub Actions runs CI on pushes and pull requests.
- Contributing guide: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security policy: SECURITY.md
- Support: SUPPORT.md
- Changelog: CHANGELOG.md
- Architecture: docs/ARCHITECTURE.md
- Releasing: docs/RELEASING.md
Licensed under GPL-3.0. See LICENSE.