Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
sway-input(5)		      File Formats Manual		 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 ad-
       dition, the settings can	be applied to  a  type	of  device,  by	 using
       type:<input_type> in place of <identifier>.

       In  the configuration file, settings with a more	specific selector take
       precedence over more general ones: <identifier> >  type:<input_type>  >
       *.  When	executing input	commands, however, the settings	are applied to
       all  matching  input  devices!	This  means that type:<input_type> can
       override	previously set <identifier> settings, even though in a config-
       uration file they would take precedence.	 Similarly * can override both
       <identifier> and	type:<input_type> settings, if applied later.

       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 <milliseconds>
	   Sets	the amount of time a key must be held before it	starts repeat-
	   ing.

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

       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	 over-
	   rides  xkb_layout, xkb_model, xkb_options, xkb_rules, and xkb_vari-
	   ant settings.

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

	   Multiple layouts can	be specified by	separating them	with commas.

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

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

	   Multiple options can	be specified by	separating them	with commas.

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

       input <identifier> xkb_switch_layout <index>|next|prev
	   Changes the active keyboard layout to <index> counting from zero or
	   to next or previous layout on the list. If there is no next or pre-
	   vious layout, this command hops to the other	end of the list.

	   This	can be used when multiple layouts are configured with xkb_lay-
	   out.	 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.

   TABLET CONFIGURATION
       input <identifier> tool_mode <tool> <absolute|relative>
	   Sets	whether	movement of a tablet tool should  be  treated  as  ab-
	   solute or relative; the default is absolute.

	   Valid  values  for  <tool>  are currently "pen", "eraser", "brush",
	   "pencil", "airbrush", and the wildcard *, which matches all tools.

	   Mouse and lens tools	ignore this setting and	are always treated  as
	   relative.

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

	   The	wildcard  *  can  be used to map the input device to the whole
	   desktop layout.

       input <identifier> map_to_region	<X> <Y>	<width>	<height>
	   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	speci-
	   fied	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).

	   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.

   LIBINPUT CONFIGURATION
       input <identifier> accel_profile	adaptive|flat
	   Sets	the pointer acceleration profile for the specified  input  de-
	   vice.

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

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

       input <identifier> clickfinger_button_map lrm|lmr
	   Specifies which button mapping to use for clickfinger. 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  mid-
	   dle click, and 3 fingers as right click.

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

       input <identifier> drag_lock enabled|disabled|enabled_sticky
	   Enables  or	disables drag lock for specified input device. The de-
	   fault is enabled_sticky.

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

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

       input	<identifier>	events	   enabled|disabled|disabled_on_exter-
       nal_mouse|toggle	[<toggle-modes>]
	   Enables  or	disables  send_events for specified input device. Dis-
	   abling 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, dis-
	   abled, (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> rotation_angle <angle>
	   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).

       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_button_lock enabled|disabled
	   Enables or disables scroll button lock for specified	input device.

       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-nega-
	   tive.

       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  mid-
	   dle 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	<iden-
       tifier> 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 spe-
	   cial	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  coordi-
	   nate.

	   Deprecated: use the virtual-pointer Wayland protocol	instead.

       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 but-
	   ton[4-7], which map to axes,	an axis	event will be simulated,  how-
	   ever	press and release will be ignored and both will	occur.

	   Deprecated: use the virtual-pointer Wayland protocol	instead.

       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 "de-
	   fault" seat).

       seat <name> hide_cursor <timeout>|when-typing [enable|disable]
	   Hides the cursor image after	the specified event occurred.

	   If timeout is specified, then the cursor will be hidden after time-
	   out (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.

	   If  when-typing is enabled, then the	cursor will be hidden whenever
	   a key is pressed.

	   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.

       seat <name> idle_inhibit	<sources...>
	   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.

       seat <name> keyboard_grouping none|smart
	   Set how the keyboards in the	seat are grouped together.  Currently,
	   there  are  two  options.  none will	disable	all keyboard grouping.
	   This	will make it so	each keyboard  device  has  its	 own  isolated
	   state.  smart  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	smart.
	   To restore the behavior of older versions of	sway, use none.

       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> shortcuts_inhibitor enable|disable|activate|deactivate|tog-
       gle
	   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 enable and	disable	affect
	   whether future inhibitors are honoured by default,  i.e.  activated
	   automatically, the default being enable. When used at runtime, dis-
	   able	also disables any currently active inhibitors. activate, deac-
	   tivate  and	toggle are only	usable at runtime and change the state
	   of a	potentially existing inhibitor on the currently	 focused  win-
	   dow.	 This  can  be	used with the current seat alias (-) to	affect
	   only	the currently focused window of	the current  seat.  Subcommand
	   deactivate  is particularly useful in an --inhibited	bindsym	to es-
	   cape	a state	where shortcuts	are inhibited and the  client  becomes
	   uncooperative.  It is worth noting that whether disabled or deacti-
	   vated inhibitors are	removed	is entirely up to the client.  Depend-
	   ing	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.

       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)

				  2025-11-03			 sway-input(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sway-input&sektion=5&manpath=FreeBSD+Ports+15.0>

home | help