Input remap utilities - ArchWiki

Jump to content

# Input remap utilities

From ArchWiki

In an X or Wayland environment, most remapping tasks can be completed with local XKB configuration, see X keyboard extension#Local XKB folder. For remapping keys in the linux console, see Linux console/Keyboard configuration. For keyboards or devices that report incorrect keycodes, see Map scancodes to keycodes.

Some specialized configurations or behaviors use software daemons to translate input events. This page lists software that you can use to reconfigure input events from keyboards, mice and other hardware.

## Utilities

### evremap

evremap (evremap-gitAUR) — A keyboard input remapper for Linux/Wayland systems. This tool can do remap in a following way: remap the `CapsLock` key so that it produces `Ctrl` when held, but `Esc` if tapped and remap `n` keys to `m` keys. E.g.: `F3` to `Ctrl+c`, and `Alt+Left` to `Home`.

After installation, create a config file `/etc/evremap.toml` (example from repo), or edit `evremap.service` to point to your config. Then start the service.

### evdevremapkeys

evdevremapkeys (evdevremapkeys-gitAUR) — A daemon to remap key events on linux input devices. This tool can remap keyboard and mouse events. It can map to repeated actions (for example, do double click) and can generate them while button is pressed (for example, generate wheel up events while holding back button).

It is also possible to remap combo to combo, but this is not yet merged, and is available in pronobis fork. See here.

### evsieve

evsieve (evsieveAUR) — A low-level utility that can read events from Linux event devices (evdev) and write them to virtual event devices (uinput), performing simple manipulations on the events along the way. Works on Wayland. Evsieve is particularly intended to be used in conjunction with the evdev-passthrough functionality of Qemu.

### kbct

kbct (kbct-gitAUR) — Keyboard Customization Tool for Linux. Despite its name, also supports mouse events. This tool allows you to map an event (keyboard or mouse button) to another event. You can define multiple "layers" — lists of maps depending of which modifier you press with an input key. Unfortunately, currently the kbct does not allow you to generate multi-button event. See [1].

After installation, edit `/etc/kbct/config.yml` as required, then start `kbct.service`.

### keyd

keyd (keyd) — A key remapping daemon for Linux using a flexible system-wide daemon which remaps keys using kernel level input primitives (evdev, uinput). Keyd works in both graphical environments, like X11 and Wayland, and the Linux virtual console. Read the project's README for more information about how keyd compared to similar software.

### Input Remapper

Input Remapper (input-remapper-gitAUR) — A utility that provides a GUI and a CLI to configure input devices remappings. Works with both X and Wayland.

### makima

makima (makima-binAUR) — Linux daemon to remap and create macros for keyboards, mice and controllers. Uses the evdev interface. Configured per device by placing `device_name.toml` files in `~/.config/makima`, and also supports per application configuration with `device_name::window_class.toml` (X11, Sway, Hyprland and Niri only).

### wtype

wtype (wtype) — xdotool type for Wayland (requires compositor support for the virtual keyboard protocol).

### Other

- Hawck — A low-level key rebinding daemon.

  https://github.com/snyball/Hawck || hawck-gitAUR

- IMWheel — A tool for X11 that can remap mouse wheel events depending on pressed modifier and individually per application.

  https://imwheel.sourceforge.net/ || imwheel

- Interception-tools — Yet another versatile tool, using various plug-ins.

  https://gitlab.com/interception/linux/tools || interception-tools

- wayland-mouse-mapper — A small script for mapping mouse buttons to keystrokes on Wayland.

  https://github.com/mathportillo/wayland-mouse-mapper || not packaged? search in AUR

- evmapy — An evdev event mapper written in Python.

  https://github.com/kempniu/evmapy || not packaged? search in AUR

- python-evdev — A utility that allows you to read and write input events on Linux. An event can be a key or button press, a mouse movement or a tap on a touchscreen.

  https://python-evdev.readthedocs.io/en/latest/ || python-evdev

- kanata — A cross-platform, display server-agnostic keyboard remapper written in Rust.

  https://github.com/jtroo/kanata kanata || kanataAUR

- kmonad — An advanced keyboard remapping tool daemon.

  https://github.com/kmonad/kmonad || kmonad

- noinputs — A utility to list and disable (inhibit) input devices.

  https://gitlab.com/S410/noinputs || noinputs-gitAUR

- xremap — Key remapper for X11 and Wayland using evdev and uinput.

  https://github.com/xremap/xremap || multiple packages

- keymapper — A cross-platform context-aware key remapper (working in both X11 and Wayland).

  https://github.com/houmain/keymapper || keymapperAUR

- Keyshift — Performance-oriented keyboard layering and remapping software for Linux.

  https://github.com/hirak99/keyshift/ || keyshiftAUR

- Mouse buttons#User tools — A list of hardware-dependent utilities to configure mouse buttons.

## Testing

- evtest (evtest) — A utility that can show you the button names when you press them, which can help when configuring remap utilities.
- wev (wev) — A utility to view input events in wayland, similar to xev.

With `evsieve --input /dev/input/event* --print` you can see all events that are emitted on your computer.

Another approach of testing keyboard buttons is with online websites. Most of such testers cannot distinguish between left and right modifiers. One example that can is: https://stendec.io/

Categories:

- Input devices
- Keyboard configuration
- Lists of software

Hidden category:

- Pages with missing package links

Input remap utilities
Add topic