Scroll to navigation

EVREMAP(1) User Commands EVREMAP(1)

NAME

evremap - keyboard input remapper for Linux/Wayland systems

DESCRIPTION

evremap works by grabbing exclusive access to an input device and maintaining a model of the keys that are pressed. It then applies your remapping configuration to produce the effective set of pressed keys and emits appropriate changes to a virtual output device.

Because evremap targets the evdev layer of libinput, its remapping is effective system-wide: in Wayland, X11 and the linux console.

evtest(1) can be used to identify keycodes of an input device.

USAGE:

evremap remap config-file --delay <delay>

FLAGS:

Startup delay in second
Prints help information
Prints version information

SUBCOMMANDS:

Prints this message or the help of the given subcommand(s)
Rather than running the remapper, list currently available devices. This is helpful to check their names when setting up the initial configuration
Show a list of possible KEY_XXX values
Listen to events and print them out to facilitate learning which keys/buttons have which labels for your device(s)
Load a remapper config and run the remapper. This usually requires running as root to obtain exclusive access to the input devices

FILE

/etc/evremap.conf
Mapping configuration file

Sample Configuration

# The name of the device to remap.
# Run `sudo evremap list-devices` to see the devices available
# on your system.
device_name = "AT Translated Set 2 keyboard"
# If you have multiple devices with the same name, you can optionally
# specify the `phys` value that is printed by the `list-devices` subcommand
# phys = "usb-0000:07:00.3-2.1.1/input0"
# Configure CAPSLOCK as a Dual Role key.
# Holding it produces LEFTCTRL, but tapping it
# will produce ESC.
# Both `tap` and `hold` can expand to multiple output keys.
[[dual_role]]
input = "KEY_CAPSLOCK"
hold = ["KEY_LEFTCTRL"]
tap = ["KEY_ESC"]
# This config snippet is useful if your keyboard has an arrow
# cluster, but doesn't have page up, page down, home or end
# keys.  Here we're configuring ALT+arrow to map to those functions.
[[remap]]
input = ["KEY_LEFTALT", "KEY_UP"]
output = ["KEY_PAGEUP"]
[[remap]]
input = ["KEY_LEFTALT", "KEY_DOWN"]
output = ["KEY_PAGEDOWN"]
[[remap]]
input = ["KEY_LEFTALT", "KEY_LEFT"]
output = ["KEY_HOME"]
[[remap]]
input = ["KEY_LEFTALT", "KEY_RIGHT"]
output = ["KEY_END"]
# When applying remapping configuration, ordering is important:
# Dual Role entries are always processed first Remap entries are applied in
# the order that they appear in your configuration file
# Here's an example where ordering is important: on the PixelBook Go keyboard, the
# function key row has alternate functions on the keycaps. It is natural to want
# the mute button to mute by default, but to emit the F8 key when holding alt. We
# can express that with the following configuration:
[[remap]]
input = ["KEY_LEFTALT", "KEY_F8"]
# When our `input` is matched, our list of `output` is prevented from
# matching as the `input` of subsequent rules.
output = ["KEY_F8"]
[[remap]]
input = ["KEY_F8"]
output = ["KEY_MUTE"]

SEE ALSO

evtest(1)

AUTHOR

This man page was written by Yifei Zhan <yifei@zhan.science> using README.md from https://github.com/wez/evremap
This program was written by Wez Furlong

May 2024 evremap 0.1.0