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>

evremap list-devices

evremap list-keys

evremap debug-events

  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
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