.\" Generated by scdoc 1.11.2 .\" Complete documentation for this program is not available as a GNU info page .ie \n(.g .ds Aq \(aq .el .ds Aq ' .nh .ad l .\" Begin generated content: .TH "sway-input" "5" "2024-02-25" .P .SH NAME .P sway-input - input configuration file and commands .P .SH DESCRIPTION .P Sway allows for configuration of devices within the sway configuration file.\& To obtain a list of available device identifiers, run \fBswaymsg -t get_inputs\fR.\& Settings can also be applied to all input devices by using the wildcard, \fI*\fR, in place of \fI\fR in the commands below.\& In addition, the settings can be applied to a type of device, by using \fItype:\fR in place of \fI\fR.\& .P In the configuration file, settings with a more specific selector take precedence over more general ones: \fI\fR > \fItype:\fR > \fI*\fR.\& When executing input commands, however, the settings are applied to all matching input devices!\& This means that \fItype:\fR can override previously set \fI\fR settings, even though in a configuration file they would take precedence.\& Similarly \fI*\fR can override both \fI\fR and \fItype:\fR settings, if applied later.\& .P Tip: If the configuration settings do not appear to be taking effect, you could try using \fI*\fR instead of \fI\fR.\& If it works with the wildcard, try using a different identifier from \fBswaymsg -t get_inputs\fR until you find the correct input device.\& .P Current available input types are: .P .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} touchpad .RE .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} pointer .RE .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} keyboard .RE .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} touch .RE .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} tablet_tool .RE .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} tablet_pad .RE .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .IP \(bu 4 .\} switch .RE .P Note: The type configurations are applied as the devices appear and get applied on top of the existing device configurations.\& .P .SH INPUT COMMANDS .P .SS KEYBOARD CONFIGURATION .P \fBinput\fR repeat_delay .RS 4 Sets the amount of time a key must be held before it starts repeating.\& .P .RE \fBinput\fR repeat_rate .RS 4 Sets the frequency of key repeats once the repeat_delay has passed.\& .P .RE For more information on these xkb configuration options, see \fBxkeyboard-config\fR(7).\& .P \fBinput\fR xkb_file .RS 4 Sets all xkb configurations from a complete .\&xkb file.\& This file can be dumped from \fIxkbcomp $DISPLAY keymap.\&xkb\fR.\& This setting overrides xkb_layout, xkb_model, xkb_options, xkb_rules, and xkb_variant settings.\& .P .RE \fBinput\fR xkb_layout .RS 4 Sets the layout of the keyboard like \fIus\fR or \fIde\fR.\& .P Multiple layouts can be specified by separating them with commas.\& .P .RE \fBinput\fR xkb_model .RS 4 Sets the model of the keyboard.\& This has an influence for some extra keys your keyboard might have.\& .P .RE \fBinput\fR xkb_options .RS 4 Sets extra xkb configuration options for the keyboard.\& .P Multiple options can be specified by separating them with commas.\& .P .RE \fBinput\fR xkb_rules .RS 4 Sets files of rules to be used for keyboard mapping composition.\& .P .RE \fBinput\fR xkb_switch_layout |next|prev .RS 4 Changes the active keyboard layout to counting from zero or to next or previous layout on the list.\& If there is no next or previous layout, this command hops to the other end of the list.\& .P This can be used when multiple layouts are configured with \fBxkb_layout\fR.\& A list of layouts you can switch between can be obtained with \fBswaymsg -t get_inputs\fR.\& .P .RE \fBinput\fR xkb_variant .RS 4 Sets the variant of the keyboard like \fIdvorak\fR or \fIcolemak\fR.\& .P .RE The following commands may only be used in the configuration file.\& .P \fBinput\fR xkb_capslock enabled|disabled .RS 4 Initially enables or disables CapsLock on startup, the default is disabled.\& .P .RE \fBinput\fR xkb_numlock enabled|disabled .RS 4 Initially enables or disables NumLock on startup, the default is disabled.\& .P .RE .SS TABLET CONFIGURATION .P \fBinput\fR tool_mode .RS 4 Sets whether movement of a tablet tool should be treated as absolute or relative; the default is absolute.\& .P Valid values for \fI\fR are currently "pen", "eraser", "brush", "pencil", "airbrush", and the wildcard \fI*\fR, which matches all tools.\& .P Mouse and lens tools ignore this setting and are always treated as relative.\& .P .RE .SS MAPPING CONFIGURATION .P \fBinput\fR map_to_output .RS 4 Maps inputs from this device to the specified output.\& Only meaningful if the device is a pointer, touch, or drawing tablet device.\& .P The wildcard \fI*\fR can be used to map the input device to the whole desktop layout.\& .P .RE \fBinput\fR map_to_region .RS 4 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.\& .P .RE \fBinput\fR map_from_region .RS 4 Ignores inputs from this device that do not occur within the specified region.\& Can be in millimeters (e.\&g.\& 10x20mm 20x40mm) or the fraction of the full available space 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 and provides events in absolute terms (such as a drawing tablet or touch screen - most pointers provide events relative to the previous frame).\& .P Commonly used to maintain the aspect ratio of the input device and screen.\& Cropping a 16:10 input region to match a 16:9 display can use 0x0 1x0.\&9 as the argument.\& .P .RE .SS LIBINPUT CONFIGURATION .P \fBinput\fR accel_profile adaptive|flat .RS 4 Sets the pointer acceleration profile for the specified input device.\& .P .RE \fBinput\fR calibration_matrix <6 space-separated floating point values> .RS 4 Sets the calibration matrix.\& .P .RE \fBinput\fR click_method none|button_areas|clickfinger .RS 4 Changes the click method for the specified device.\& .P .RE \fBinput\fR drag enabled|disabled .RS 4 Enables or disables tap-and-drag for specified input device.\& .P .RE \fBinput\fR drag_lock enabled|disabled .RS 4 Enables or disables drag lock for specified input device.\& .P .RE \fBinput\fR dwt enabled|disabled .RS 4 Enables or disables disable-while-typing for the specified input device.\& .P .RE \fBinput\fR dwtp enabled|disabled .RS 4 Enables or disables disable-while-trackpointing for the specified input device.\& .P .RE \fBinput\fR events enabled|disabled|disabled_on_external_mouse|toggle [] .RS 4 Enables or disables send_events for specified input device.\& Disabling send_events disables the input device.\& .P The \fItoggle\fR 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.\& .P .RE \fBinput\fR left_handed enabled|disabled .RS 4 Enables or disables left handed mode for specified input device.\& .P .RE \fBinput\fR middle_emulation enabled|disabled .RS 4 Enables or disables middle click emulation.\& .P .RE \fBinput\fR natural_scroll enabled|disabled .RS 4 Enables or disables natural (inverted) scrolling for the specified input device.\& .P .RE \fBinput\fR pointer_accel [<-1|1>] .RS 4 Changes the pointer acceleration for the specified input device.\& .P .RE \fBinput\fR rotation_angle .RS 4 Sets the rotation angle of the device to the given clockwise angle in degrees.\& The angle must be between 0.\&0 (inclusive) and 360.\&0 (exclusive).\& .P .RE \fBinput\fR scroll_button disable|button[1-3,8,9]| .RS 4 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 \fBlibinput debug-events\fR, or as a x11 mouse button (button[1-3,8,9]).\& If set to \fIdisable\fR, it disables the scroll_method on_button_down.\& .P .RE \fBinput\fR scroll_button_lock enabled|disabled .RS 4 Enables or disables scroll button lock for specified input device.\& .P .RE \fBinput\fR scroll_factor .RS 4 Changes the scroll factor for the specified input device.\& Scroll speed will be scaled by the given value, which must be non-negative.\& .P .RE \fBinput\fR scroll_method none|two_finger|edge|on_button_down .RS 4 Changes the scroll method for the specified input device.\& .P .RE \fBinput\fR tap enabled|disabled .RS 4 Enables or disables tap for specified input device.\& .P .RE \fBinput\fR tap_button_map lrm|lmr .RS 4 Specifies which button mapping to use for tapping.\& \fIlrm\fR treats 1 finger as left click, 2 fingers as right click, and 3 fingers as middle click.\& \fIlmr\fR treats 1 finger as left click, 2 fingers as middle click, and 3 fingers as right click.\& .P .RE .SS SEAT CONFIGURATION .P Configure options for multiseat mode.\& .P A \fBseat\fR is a collection of input devices that act independently of each other.\& Seats are identified by name and the default seat is \fIseat0\fR if no seats are configured.\& While sway is running, \fI-\fR (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, \fI*\fR, can also be used in place of \fI\fR to change settings for all seats.\& .P Tip: If the configuration settings do not appear to be taking effect, you could try using \fI*\fR instead of \fI\fR.\& If it works with the wildcard, try using a different identifier from \fBswaymsg -t get_seats\fR until you find the correct seat.\& .P \fBseat\fR attach .RS 4 Attach an input device to this seat by its input identifier.\& A special value of "*" will attach all devices to the seat.\& .P .RE \fBseat\fR cursor move|set .RS 4 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.\& .P Deprecated: use the virtual-pointer Wayland protocol instead.\& .P .RE \fBseat\fR cursor press|release button[1-9]| .RS 4 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 \fBlibinput debug-events\fR, 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 \fIpress\fR and \fIrelease\fR will be ignored and both will occur.\& .P Deprecated: use the virtual-pointer Wayland protocol instead.\& .P .RE \fBseat\fR fallback true|false .RS 4 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).\& .P .RE \fBseat\fR hide_cursor |when-typing [enable|disable] .RS 4 Hides the cursor image after the specified event occurred.\& .P If \fItimeout\fR is specified, then the cursor will be hidden after \fItimeout\fR (in milliseconds) has elapsed with no activity on the 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.\& .P If \fIwhen-typing\fR is enabled, then the cursor will be hidden whenever a key is pressed.\& .P Be aware that this setting can interfere with input handling in games and certain types of software (Gimp, Blender etc) that rely on simultaneous input from mouse and keyboard.\& .P .RE \fBseat\fR idle_inhibit .RS 4 Sets the set of input event sources which can prevent the seat from becoming idle, as a space separated list of source names.\& Valid names are "keyboard", "pointer", "touchpad", "touch", "tablet_pad", "tablet_tool", and "switch".\& The default behavior is to prevent idle on any event.\& .P .RE \fBseat\fR keyboard_grouping none|smart .RS 4 Set how the keyboards in the seat are grouped together.\& Currently, there are two options.\& \fInone\fR will disable all keyboard grouping.\& This will make it so each keyboard device has its own isolated state.\& \fIsmart\fR will group the keyboards in the seat by their keymap and repeat info.\& This is useful for when the keyboard appears as multiple separate input devices.\& In this mode, the effective layout is synced between the keyboards in the group.\& The default is \fIsmart\fR.\& To restore the behavior of older versions of sway, use \fInone\fR.\& .P .RE \fBseat\fR pointer_constraint enable|disable|escape .RS 4 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.\& .P .RE \fBseat\fR shortcuts_inhibitor enable|disable|activate|deactivate|toggle .RS 4 Enables or disables the ability of clients to inhibit keyboard shortcuts for the seat.\& This is primarily useful for virtualization and remote desktop software.\& Subcommands \fIenable\fR and \fIdisable\fR affect whether future inhibitors are honoured by default, i.\&e.\& activated automatically, the default being \fIenable\fR.\& When used at runtime, \fIdisable\fR also disables any currently active inhibitors.\& \fIactivate\fR, \fIdeactivate\fR and \fItoggle\fR are only usable at runtime and change the state of a potentially existing inhibitor on the currently focused window.\& This can be used with the current seat alias (\fI-\fR) to affect only the currently focused window of the current seat.\& Subcommand \fIdeactivate\fR is particularly useful in an \fI--inhibited\fR \fBbindsym\fR to escape a state where shortcuts are inhibited and the client becomes uncooperative.\& It is worth noting that whether disabled or deactivated inhibitors are removed is entirely up to the client.\& Depending on the client it may therefore be possible to (re-)activate them later.\& Any visual indication that an inhibitor is present is currently left to the client as well.\& .P .RE \fBseat\fR xcursor_theme [] .RS 4 Override the system default XCursor theme.\& The default seat'\&s (\fIseat0\fR) theme is also used as the default cursor theme in XWayland, and exported through the \fIXCURSOR_THEME\fR and \fIXCURSOR_SIZE\fR environment variables.\& .P .RE .SH SEE ALSO .P \fBsway\fR(5) \fBsway-output\fR(5) \fBxkeyboard-config\fR(7)