# SPDX-License-Identifier: GPL-2.0-only
#
# Input device configuration
#

menu "Input device support"
	depends on !UML

config INPUT
	tristate "Generic input layer (needed for keyboard, mouse, ...)" if EXPERT
	default y
	help
	  Say Y here if you have any input device (mouse, keyboard, tablet,
	  joystick, steering wheel ...) connected to your system and want
	  it to be available to applications. This includes standard PS/2
	  keyboard and mouse.

	  Say N here if you have a headless (no monitor, no keyboard) system.

	  More information is available: <file:Documentation/input/input.rst>

	  If unsure, say Y.

	  To compile this driver as a module, choose M here: the
	  module will be called input.

if INPUT

config INPUT_LEDS
	tristate "Export input device LEDs in sysfs"
	depends on LEDS_CLASS
	default INPUT
	help
	  Say Y here if you would like to export LEDs on input devices
	  as standard LED class devices in sysfs.

	  If unsure, say Y.

	  To compile this driver as a module, choose M here: the
	  module will be called input-leds.

config INPUT_FF_MEMLESS
	tristate "Support for memoryless force-feedback devices"
	help
	  Say Y here if you have memoryless force-feedback input device
	  such as Logitech WingMan Force 3D, ThrustMaster FireStorm Dual
	  Power 2, or similar. You will also need to enable hardware-specific
	  driver.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ff-memless.

config INPUT_POLLDEV
	tristate "Polled input device skeleton"
	help
	  Say Y here if you are using a driver for an input
	  device that periodically polls hardware state. This
	  option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called input-polldev.

config INPUT_SPARSEKMAP
	tristate "Sparse keymap support library"
	help
	  Say Y here if you are using a driver for an input
	  device that uses sparse keymap. This option is only
	  useful for out-of-tree drivers since in-tree drivers
	  select it automatically.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called sparse-keymap.

config INPUT_MATRIXKMAP
	tristate "Matrix keymap support library"
	help
	  Say Y here if you are using a driver for an input
	  device that uses matrix keymap. This option is only
	  useful for out-of-tree drivers since in-tree drivers
	  select it automatically.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called matrix-keymap.

comment "Userland interfaces"

config INPUT_MOUSEDEV
	tristate "Mouse interface"
	help
	  Say Y here if you want your mouse to be accessible as char devices
	  13:32+ - /dev/input/mouseX and 13:63 - /dev/input/mice as an
	  emulated IntelliMouse Explorer PS/2 mouse. That way, all user space
	  programs (including SVGAlib, GPM and X) will be able to use your
	  mouse.

	  If unsure, say Y.

	  To compile this driver as a module, choose M here: the
	  module will be called mousedev.

config INPUT_MOUSEDEV_PSAUX
	bool "Provide legacy /dev/psaux device"
	depends on INPUT_MOUSEDEV
	help
	  Say Y here if you want your mouse also be accessible as char device
	  10:1 - /dev/psaux. The data available through /dev/psaux is exactly
	  the same as the data from /dev/input/mice.

	  If unsure, say Y.

config INPUT_MOUSEDEV_SCREEN_X
	int "Horizontal screen resolution"
	depends on INPUT_MOUSEDEV
	default "1024"
	help
	  If you're using a digitizer, or a graphic tablet, and want to use
	  it as a mouse then the mousedev driver needs to know the X window
	  screen resolution you are using to correctly scale the data. If
	  you're not using a digitizer, this value is ignored.

config INPUT_MOUSEDEV_SCREEN_Y
	int "Vertical screen resolution"
	depends on INPUT_MOUSEDEV
	default "768"
	help
	  If you're using a digitizer, or a graphic tablet, and want to use
	  it as a mouse then the mousedev driver needs to know the X window
	  screen resolution you are using to correctly scale the data. If
	  you're not using a digitizer, this value is ignored.

config INPUT_JOYDEV
	tristate "Joystick interface"
	help
	  Say Y here if you want your joystick or gamepad to be
	  accessible as char device 13:0+ - /dev/input/jsX device.

	  If unsure, say Y.

	  More information is available: <file:Documentation/input/joydev/joystick.rst>

	  To compile this driver as a module, choose M here: the
	  module will be called joydev.

config INPUT_EVDEV
	tristate "Event interface"
	help
	  Say Y here if you want your input device events be accessible
	  under char device 13:64+ - /dev/input/eventX in a generic way.

	  To compile this driver as a module, choose M here: the
	  module will be called evdev.

config INPUT_EVBUG
	tristate "Event debugging"
	help
	  Say Y here if you have a problem with the input subsystem and
	  want all events (keypresses, mouse movements), to be output to
	  the system log. While this is useful for debugging, it's also
	  a security threat - your keypresses include your passwords, of
	  course.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called evbug.

config INPUT_APMPOWER
	tristate "Input Power Event -> APM Bridge" if EXPERT
	depends on INPUT && APM_EMULATION
	help
	  Say Y here if you want suspend key events to trigger a user
	  requested suspend through APM. This is useful on embedded
	  systems where such behaviour is desired without userspace
	  interaction. If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called apm-power.

comment "Input Device Drivers"

source "drivers/input/keyboard/Kconfig"

source "drivers/input/mouse/Kconfig"

source "drivers/input/joystick/Kconfig"

source "drivers/input/tablet/Kconfig"

source "drivers/input/touchscreen/Kconfig"

source "drivers/input/misc/Kconfig"

source "drivers/input/rmi4/Kconfig"

endif

menu "Hardware I/O ports"

source "drivers/input/serio/Kconfig"

source "drivers/input/gameport/Kconfig"

endmenu

endmenu

