# Copyright (c) 2018-2019 Jan Van Winkel <jan.van_winkel@dxplore.eu>
# Copyright (c) 2020 Teslabs Engineering S.L.
# SPDX-License-Identifier: Apache-2.0

menu "Input device settings"

config LV_Z_POINTER_INPUT
	bool "Input lvgl pointer"
	default y
	depends on INPUT
	depends on DT_HAS_ZEPHYR_LVGL_POINTER_INPUT_ENABLED

config LV_Z_POINTER_INPUT_MSGQ_COUNT
	int "Input pointer queue message count"
	default 10
	depends on LV_Z_POINTER_INPUT
	help
	  Size of the pointer message queue buffering input events.

config LV_Z_BUTTON_INPUT
	bool "Input lvgl button"
	default y
	depends on INPUT
	depends on DT_HAS_ZEPHYR_LVGL_BUTTON_INPUT_ENABLED

config LV_Z_BUTTON_INPUT_MSGQ_COUNT
	int "Input button queue message count"
	default 4
	depends on LV_Z_BUTTON_INPUT
	help
	  Size of the button message queue buffering input events.

config LV_Z_ENCODER_INPUT
	bool "Input lvgl encoder"
	default y
	depends on INPUT
	depends on DT_HAS_ZEPHYR_LVGL_ENCODER_INPUT_ENABLED

config LV_Z_ENCODER_INPUT_MSGQ_COUNT
	int "Input encoder queue message count"
	default 4
	depends on LV_Z_ENCODER_INPUT
	help
	  Size of the encoder message queue buffering input events.

config LV_Z_KEYPAD_INPUT
	bool "Input lvgl keypad"
	default y
	depends on INPUT
	depends on DT_HAS_ZEPHYR_LVGL_KEYPAD_INPUT_ENABLED

config LV_Z_KEYPAD_INPUT_MSGQ_COUNT
	int "Input keypad queue message count"
	default 4
	depends on LV_Z_KEYPAD_INPUT
	help
	  Size of the keypad message queue buffering input events.

endmenu
