From 909593cdd510a7b67a149d6a3f543021b083517b Mon Sep 17 00:00:00 2001 From: Marvin Dostal Date: Sat, 6 Jan 2024 23:03:31 +0100 Subject: [PATCH] config: add click method libinput option --- include/config/libinput.h | 1 + src/config/libinput.c | 1 + src/config/rcxml.c | 13 +++++++++++++ src/seat.c | 7 +++++++ 4 files changed, 22 insertions(+) diff --git a/include/config/libinput.h b/include/config/libinput.h index 4ec0ebb7..dea1ca47 100644 --- a/include/config/libinput.h +++ b/include/config/libinput.h @@ -28,6 +28,7 @@ struct libinput_category { int accel_profile; /* -1 or libinput_config_accel_profile */ int middle_emu; /* -1 or libinput_config_middle_emulation_state */ int dwt; /* -1 or libinput_config_dwt_state */ + enum libinput_config_click_method click_method; }; enum lab_libinput_device_type get_device_type(const char *s); diff --git a/src/config/libinput.c b/src/config/libinput.c index 4ea7499c..4c8c4208 100644 --- a/src/config/libinput.c +++ b/src/config/libinput.c @@ -22,6 +22,7 @@ libinput_category_init(struct libinput_category *l) l->accel_profile = -1; l->middle_emu = -1; l->dwt = -1; + l->click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS; } enum lab_libinput_device_type diff --git a/src/config/rcxml.c b/src/config/rcxml.c index 1ff3766f..9b665d46 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -544,6 +544,19 @@ fill_libinput_category(char *nodename, char *content) current_libinput_category->dwt = ret ? LIBINPUT_CONFIG_DWT_ENABLED : LIBINPUT_CONFIG_DWT_DISABLED; + } else if (!strcasecmp(nodename, "clickMethod")) { + if (!strcmp(content, "none")) { + current_libinput_category->click_method = + LIBINPUT_CONFIG_CLICK_METHOD_NONE; + } else if (!strcmp(content, "clickfinger")) { + current_libinput_category->click_method = + LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER; + } else if (!strcmp(content, "buttonAreas")) { + current_libinput_category->click_method = + LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS; + } else { + wlr_log(WLR_ERROR, "invalid clickMethod"); + } } } diff --git a/src/seat.c b/src/seat.c index b8fb636d..6a483cb3 100644 --- a/src/seat.c +++ b/src/seat.c @@ -15,6 +15,7 @@ #include "input/keyboard.h" #include "input/key-state.h" #include "labwc.h" +#include "libinput.h" #include "view.h" static void @@ -189,6 +190,12 @@ configure_libinput(struct wlr_input_device *wlr_input_device) wlr_log(WLR_INFO, "dwt configured"); libinput_device_config_dwt_set_enabled(libinput_dev, dc->dwt); } + if (libinput_device_config_click_set_method(libinput_dev, + dc->click_method) > 0) { + wlr_log(WLR_INFO, "click method not configured"); + } else { + wlr_log(WLR_INFO, "click method configured"); + } } static struct wlr_output *