table of contents
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:¶
- -d, --delay <delay>
- Startup delay in second
- -h, --help
- Prints help information
- -V, --version
- Prints version information
SUBCOMMANDS:¶
- help
- Prints this message or the help of the given subcommand(s)
- list-devices
- Rather than running the remapper, list currently available devices. This is helpful to check their names when setting up the initial configuration
- list-keys
- Show a list of possible KEY_XXX values
- debug-events
- Listen to events and print them out to facilitate learning which keys/buttons have which labels for your device(s)
- remap
- 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¶
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 |