From 91f73e7f60404975b592754b6bb54abf4fea1b9a Mon Sep 17 00:00:00 2001 From: Marvin Dostal Date: Sun, 11 Feb 2024 11:52:54 +0100 Subject: [PATCH] config: check for available click method and remove default --- include/config/libinput.h | 2 +- src/config/libinput.c | 2 +- src/seat.c | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/include/config/libinput.h b/include/config/libinput.h index dea1ca47..dffeea98 100644 --- a/include/config/libinput.h +++ b/include/config/libinput.h @@ -28,7 +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; + int click_method; /* -1 or libinput_config_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 4c8c4208..e6c2f6e0 100644 --- a/src/config/libinput.c +++ b/src/config/libinput.c @@ -22,7 +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; + l->click_method = -1; } enum lab_libinput_device_type diff --git a/src/seat.c b/src/seat.c index 4fba2ab1..30f5f3fe 100644 --- a/src/seat.c +++ b/src/seat.c @@ -189,11 +189,21 @@ 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) { + if (dc->click_method < 0 + || + (libinput_device_config_click_get_methods(libinput_dev) + & dc->click_method) == 0) { wlr_log(WLR_INFO, "click method not configured"); } else { wlr_log(WLR_INFO, "click method configured"); + + // Note, the documentation claims that: + // > @note [...] The device may require changing to a neutral + // > state first before activating the new method. + // + // However, just setting the method worked without issues. + + libinput_device_config_click_set_method(libinput_dev, dc->click_method); } }