sway-input(5)

NAME

sway-input - input configuration file and commands

DESCRIPTION

Sway allows for configuration of devices within the sway configuration file. To obtain a list of available device identifiers, run swaymsg -t get_inputs. Settings can also be applied to all input devices by using the wildcard, *, in place of <identifier> in the commands below. In addition, the settings can be applied to a type of device, by using type:<input_type> in place of <identifier>.

Tip: If the configuration settings do not appear to be taking effect, you could try using * instead of <identifier>. If it works with the wildcard, try using a different identifier from swaymsg -t get_inputs until you find the correct input device.

Current available input types are:

    • touchpad
    • pointer
    • keyboard
    • touch
    • tablet_tool
    • tablet_pad
    • switch

Note: The type configurations are applied as the devices appear and get applied on top of the existing device configurations.

INPUT COMMANDS

  KEYBOARD CONFIGURATION

input <identifier> repeat_delay <n>
    Sets the delay before repeating a held-down key, in milliseconds.

input <identifier> repeat_rate <n>
    Sets the key repeat rate in number of keypresses per second.

For more information on these xkb configuration options, see xkeyboard-config(7).

input <identifier> xkb_file <file_name>
    Sets all xkb configurations from a complete .xkb file. This file can be dumped from xkbcomp $DISPLAY keymap.xkb. This setting overrides xkb_layout, xkb_model, xkb_options, xkb_rules, and xkb_variant settings.

input <identifier> xkb_layout <layout_name>
    Sets the layout of the keyboard like us or de.

input <identifier> xkb_model <model_name>
    Sets the model of the keyboard. This has an influence for some extra keys your keyboard might have.

input <identifier> xkb_options <options>
    Sets extra xkb configuration options for the keyboard.

input <identifier> xkb_rules <rules>
    Sets files of rules to be used for keyboard mapping composition.

input <identifier> xkb_switch_layout <index>
    Changes the active keyboard layout index. This can be used when multiple layouts are configured with `xkb_layout`. A list of layouts you can switch between can be obtained with `swaymsg -t get_inputs`.

input <identifier> xkb_variant <variant>
    Sets the variant of the keyboard like dvorak or colemak.

The following commands may only be used in the configuration file.

input <identifier> xkb_capslock enabled|disabled
    Initially enables or disables CapsLock on startup, the default is disabled.

input <identifier> xkb_numlock enabled|disabled
    Initially enables or disables NumLock on startup, the default is disabled.

  MAPPING CONFIGURATION

input <identifier> map_to_output <identifier>
    Maps inputs from this device to the specified output. Only meaningful if the device is a pointer, touch, or drawing tablet device.

input <identifier> map_to_region <WxH@X,Y>
    Maps inputs from this device to the specified region of the global output layout. Only meaningful if the device is a pointer, touch, or drawing tablet device.

input <identifier> map_from_region <X1xY1> <X2xY2>
    Ignores inputs from this device that do not occur within the specified region. Can be in millimeters (e.g. 10x20mm 20x40mm) or in terms of 0..1 (e.g. 0.5x0.5 0.7x0.7). Not all devices support millimeters. Only meaningful if the device is not a keyboard an provides events in absolute terms (such as a drawing tablet or touch screen - most pointers provide events relative to the previous frame).

  LIBINPUT CONFIGURATION

input <identifier> accel_profile adaptive|flat
    Sets the pointer acceleration profile for the specified input device.

input <identifier> calibration_matrix <6 space-separated floating point values>
    Sets the calibtration matrix.

input <identifier> click_method none|button_areas|clickfinger
    Changes the click method for the specified device.

input <identifier> drag enabled|disabled
    Enables or disables tap-and-drag for specified input device.

input <identifier> drag_lock enabled|disabled
    Enables or disables drag lock for specified input device.

input <identifier> dwt enabled|disabled
    Enables or disables disable-while-typing for the specified input device.

input <identifier> events enabled|disabled|disabled_on_external_mouse|toggle [<toggle-modes>]
    Enables or disables send_events for specified input device. Disabling send_events disables the input device.

    The toggle option cannot be used in the config. If no toggle modes are listed, all supported modes for the device will be toggled through in the
    order: enabled,    disabled_on_external_mouse, disabled, (loop back). If
    toggle modes are listed, they will be cycled through, defaulting to the first mode listed if the current mode is not in the list. They will also not be checked to see if they are supported for the device and may fail.

input <identifier> left_handed enabled|disabled
    Enables or disables left handed mode for specified input device.

input <identifier> middle_emulation enabled|disabled
    Enables or disables middle click emulation.

input <identifier> natural_scroll enabled|disabled
    Enables or disables natural (inverted) scrolling for the specified input device.

input <identifier> pointer_accel [<-1|1>]
    Changes the pointer acceleration for the specified input device.

input <identifier> repeat_delay <milliseconds>
    Sets the amount of time a key must be held before it starts repeating.

input <identifier> repeat_rate <characters per second>
    Sets the frequency of key repeats once the repeat_delay has passed.

input <identifier> scroll_button disable|button[1-3,8,9]|<event-code-or-name>
    Sets the button used for scroll_method on_button_down. The button can be given as an event name or code, which can be obtained from `libinput debug-events`, or as a x11 mouse button (button[1-3,8,9]). If set to disable, it disables the scroll_method on_button_down.

input <identifier> scroll_factor <floating point value>
    Changes the scroll factor for the specified input device. Scroll speed will be scaled by the given value, which must be non-negative.

input <identifier> scroll_method none|two_finger|edge|on_button_down
    Changes the scroll method for the specified input device.

input <identifier> tap enabled|disabled
    Enables or disables tap for specified input device.

input <identifier> tap_button_map lrm|lmr
    Specifies which button mapping to use for tapping. lrm treats 1 finger as left click, 2 fingers as right click, and 3 fingers as middle click. lmr treats 1 finger as left click, 2 fingers as middle click, and 3 fingers as right click.

  SEAT CONFIGURATION

Configure options for multiseat mode.

A seat is a collection of input devices that act independently of each other. Seats are identified by name and the default seat is seat0 if no seats are configured. While sway is running, - (hyphen) can be used as an alias for the current seat. Each seat has an independent keyboard focus and a separate cursor that is controlled by the pointer devices of the seat. This is useful for multiple people using the desktop at the same time with their own devices (each sitting in their own "seat"). The wildcard character, *, can also be used in place of <identifier> to change settings for all seats.

Tip: If the configuration settings do not appear to be taking effect, you could try using * instead of <identifier>. If it works with the wildcard, try using a different identifier from swaymsg -t get_seats until you find the correct seat.

seat <name> attach <input_identifier>
    Attach an input device to this seat by its input identifier. A special value of "*" will attach all devices to the seat.

seat <seat> cursor move|set <x> <y>
    Move specified seat's cursor relative to current position or wrap to absolute coordinates (with respect to the global coordinate space). Specifying either value as 0 will not update that coordinate.

seat <seat> cursor press|release button[1-9]|<event-name-or-code>
    Simulate pressing (or releasing) the specified mouse button on the specified seat. The button can either be provided as a button event name or event code, which can be obtained from `libinput debug-events`, or as an x11 mouse button (button[1-9]). If using button[4-7], which map to axes, an axis event will be simulated, however press and release will be ignored and both will occur.

seat <name> fallback true|false
    Set this seat as the fallback seat. A fallback seat will attach any device not explicitly attached to another seat (similar to a "default" seat).

seat <name> hide_cursor <timeout>
    Hides the cursor image after the specified timeout (in milliseconds) has elapsed with no activity on that cursor. A timeout of 0 (default) disables hiding the cursor. The minimal timeout is 100 and any value less than that (aside from 0), will be increased to 100.

seat <name> pointer_constraint enable|disable|escape
    Enables or disables the ability for clients to capture the cursor (enabled by default) for the seat. This is primarily useful for video games. The "escape" command can be used at runtime to escape from a captured client.

seat <name> xcursor_theme <theme> [<size>]
    Override the system default XCursor theme. The default seat's (seat0) theme is also used as the default cursor theme in XWayland, and exported through the XCURSOR_THEME and XCURSOR_SIZE environment variables.

SEE ALSO

sway(5) sway-output(5) xkeyboard-config(7)