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  addition,
     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 configuration 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 ap-
     plied 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 repeating.

     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-con-
     fig(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  set-
	 tings.

     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 extra
	 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 previous
	 layout, this command hops to the other end of the list.

	 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  dis-
	 abled.

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

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

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

	 Mouse and lens tools ignore this setting and are always treated as rel-
	 ative.

   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.

	 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 out-
	 put layout. Only meaningful if the device is a pointer, touch, or draw-
	 ing 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 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 device.

     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  middle  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 default
	 is enabled_sticky.

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

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

     input  <identifier> events enabled|disabled|disabled_on_external_mouse|tog-
     gle [<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,  de-
	 faulting  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 in-
	 put 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 (exclu-
	 sive).

     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-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  charac-
     ter,  *,  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.

	 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 button[4-7], which
	 map to axes, an axis event will be simulated, however 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 de-
	 vice not explicitly attached to another seat (similar	to  a  "default"
	 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 timeout
	 (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 simulta-
	 neous input from mouse and keyboard.

     seat <name> idle_inhibit <sources...>
	 Sets the set of input event sources which can prevent the seat from be-
	 coming 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  key-
	 boards  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  (en-
	 abled	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|toggle
	 Enables  or  disables the ability of clients to inhibit keyboard short-
	 cuts for the seat. This is primarily useful for virtualization and  re-
	 mote  desktop	software.  Subcommands enable and disable affect whether
	 future inhibitors are honoured by  default,  i.e.  activated  automati-
	 cally,  the  default  being  enable. When used at runtime, disable also
	 disables any currently active inhibitors. activate, deactivate and tog-
	 gle 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 (-) to affect only  the  currently  focused
	 window  of the current seat. Subcommand deactivate is particularly use-
	 ful in an --inhibited bindsym to escape a state where shortcuts are in-
	 hibited 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.

     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 ex-
	 ported through the XCURSOR_THEME  and	XCURSOR_SIZE  environment  vari-
	 ables.

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

				   2026-06-13			   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.1.quarterly>

home | help