# Copyright 2023 Google LLC
# SPDX-License-Identifier: Apache-2.0

menuconfig INPUT
	bool "Input"
	help
	  Include input subsystem and drivers in the system config.

if INPUT

module = INPUT
module-str = input
source "subsys/logging/Kconfig.template.log_config"

config INPUT_INIT_PRIORITY
	int "Input subsystem and drivers init priority"
	default 90
	help
	  Input subsystem and drivers initialization priority.

choice INPUT_MODE
	prompt "Input event processing mode"
	default INPUT_MODE_THREAD

config INPUT_MODE_SYNCHRONOUS
	bool "Process input events synchronously"
	help
	  Input events callbacks are processed synchronously in the context of
	  the code that is reporting the event.

config INPUT_MODE_THREAD
	bool "Process input events in a dedicated thread"
	depends on MULTITHREADING
	help
	  Input events are added to a message queue and the callbacks are
	  processed asynchronously in a dedicated thread.

endchoice

if INPUT_MODE_THREAD

config INPUT_THREAD_PRIORITY_OVERRIDE
	bool "Override default input thread priority"
	help
	  Option to change the default value of input thread priority.

if INPUT_THREAD_PRIORITY_OVERRIDE
config INPUT_THREAD_PRIORITY
	int "Input thread priority"
	default 0
	help
	  Set thread priority of the input
endif

config INPUT_QUEUE_MAX_MSGS
	int "Input queue max messages"
	default 16
	help
	  Maximum number of messages in the input event queue.

config INPUT_THREAD_STACK_SIZE
	int "Input thread stack size"
	default 1024
	help
	  Stack size for the thread processing the input events, must have
	  enough space for executing the registered callbacks.

endif # INPUT_MODE_THREAD

config INPUT_EVENT_DUMP
	bool "Log all input events"
	depends on LOG
	help
	  Dump all input devents using log info messages, has to be enabled
	  with "input dump on" if INPUT_SHELL is used.

config INPUT_SHELL
	bool "Input shell"
	depends on SHELL
	help
	  Enable the input shell, for interacting with the input subsystem
	  through the shell interface.

config INPUT_LONGPRESS
	bool "Input longpress"
	default y
	depends on DT_HAS_ZEPHYR_INPUT_LONGPRESS_ENABLED
	help
	  Enable the input longpress driver.

config INPUT_KEYMAP
	bool "Input keymap"
	default y
	depends on DT_HAS_INPUT_KEYMAP_ENABLED
	help
	  Enable the input keymap driver.

config INPUT_DOUBLE_TAP
	bool "Input double tap"
	default y
	depends on DT_HAS_ZEPHYR_INPUT_DOUBLE_TAP_ENABLED
	help
	  Enable the input double tap driver.

endif # INPUT
