From d1d4037335a3dcd13668b2efa630a0cab0ef92da Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Tue, 19 Aug 2025 14:15:01 +0900 Subject: [PATCH] seat.c: reset libinput device config on reconfigure Before this commit, setting empty values in entires and executing Reconfigure left libinput devices with old configurations. This commit makes sure that default values are set in libinput devices on every Reconfigure to make rc.xml more declarative. --- src/seat.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/seat.c b/src/seat.c index a932b903..5685d0c5 100644 --- a/src/seat.c +++ b/src/seat.c @@ -146,6 +146,10 @@ configure_libinput(struct wlr_input_device *wlr_input_device) */ assert(dc); + libinput_device_config_tap_set_enabled(libinput_dev, + libinput_device_config_tap_get_default_enabled(libinput_dev)); + libinput_device_config_tap_set_button_map(libinput_dev, + libinput_device_config_tap_get_default_button_map(libinput_dev)); if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0) { wlr_log(WLR_INFO, "tap unavailable"); } else { @@ -155,6 +159,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) dc->tap_button_map); } + libinput_device_config_tap_set_drag_enabled(libinput_dev, + libinput_device_config_tap_get_default_drag_enabled(libinput_dev)); if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0 || dc->tap_and_drag < 0) { wlr_log(WLR_INFO, "tap-and-drag not configured"); @@ -164,6 +170,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_dev, dc->tap_and_drag); } + libinput_device_config_tap_set_drag_lock_enabled(libinput_dev, + libinput_device_config_tap_get_default_drag_lock_enabled(libinput_dev)); if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0 || dc->drag_lock < 0) { wlr_log(WLR_INFO, "drag lock not configured"); @@ -174,6 +182,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) } #if HAVE_LIBINPUT_CONFIG_3FG_DRAG_ENABLED_3FG + libinput_device_config_3fg_drag_set_enabled(libinput_dev, + libinput_device_config_3fg_drag_get_default_enabled(libinput_dev)); if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0 || dc->three_finger_drag < 0) { wlr_log(WLR_INFO, "three-finger drag not configured"); @@ -184,6 +194,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) } #endif + libinput_device_config_scroll_set_natural_scroll_enabled(libinput_dev, + libinput_device_config_scroll_get_default_natural_scroll_enabled(libinput_dev)); if (libinput_device_config_scroll_has_natural_scroll(libinput_dev) <= 0 || dc->natural_scroll < 0) { wlr_log(WLR_INFO, "natural scroll not configured"); @@ -193,6 +205,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_dev, dc->natural_scroll); } + libinput_device_config_left_handed_set(libinput_dev, + libinput_device_config_left_handed_get_default(libinput_dev)); if (libinput_device_config_left_handed_is_available(libinput_dev) <= 0 || dc->left_handed < 0) { wlr_log(WLR_INFO, "left-handed mode not configured"); @@ -202,6 +216,10 @@ configure_libinput(struct wlr_input_device *wlr_input_device) dc->left_handed); } + libinput_device_config_accel_set_speed(libinput_dev, + libinput_device_config_accel_get_default_speed(libinput_dev)); + libinput_device_config_accel_set_profile(libinput_dev, + libinput_device_config_accel_get_default_profile(libinput_dev)); if (libinput_device_config_accel_is_available(libinput_dev) == 0) { wlr_log(WLR_INFO, "pointer acceleration unavailable"); } else { @@ -216,6 +234,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) } } + libinput_device_config_middle_emulation_set_enabled(libinput_dev, + libinput_device_config_middle_emulation_get_default_enabled(libinput_dev)); if (libinput_device_config_middle_emulation_is_available(libinput_dev) == 0 || dc->middle_emu < 0) { wlr_log(WLR_INFO, "middle emulation not configured"); @@ -225,6 +245,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_dev, dc->middle_emu); } + libinput_device_config_dwt_set_enabled(libinput_dev, + libinput_device_config_dwt_get_default_enabled(libinput_dev)); if (libinput_device_config_dwt_is_available(libinput_dev) == 0 || dc->dwt < 0) { wlr_log(WLR_INFO, "dwt not configured"); @@ -233,6 +255,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_device_config_dwt_set_enabled(libinput_dev, dc->dwt); } + libinput_device_config_click_set_method(libinput_dev, + libinput_device_config_click_get_default_method(libinput_dev)); if ((dc->click_method != LIBINPUT_CONFIG_CLICK_METHOD_NONE && (libinput_device_config_click_get_methods(libinput_dev) & dc->click_method) == 0) @@ -253,6 +277,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_device_config_click_set_method(libinput_dev, dc->click_method); } + libinput_device_config_scroll_set_method(libinput_dev, + libinput_device_config_scroll_get_default_method(libinput_dev)); if (dc->scroll_method < 0) { wlr_log(WLR_INFO, "scroll method not configured"); } else if (dc->scroll_method != LIBINPUT_CONFIG_SCROLL_NO_SCROLL @@ -264,6 +290,8 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_device_config_scroll_set_method(libinput_dev, dc->scroll_method); } + libinput_device_config_send_events_set_mode(libinput_dev, + libinput_device_config_send_events_get_default_mode(libinput_dev)); if ((dc->send_events_mode != LIBINPUT_CONFIG_SEND_EVENTS_ENABLED && (libinput_device_config_send_events_get_modes(libinput_dev) & dc->send_events_mode) == 0) @@ -274,6 +302,9 @@ configure_libinput(struct wlr_input_device *wlr_input_device) libinput_device_config_send_events_set_mode(libinput_dev, dc->send_events_mode); } + float default_matrix[6]; + libinput_device_config_calibration_get_default_matrix(libinput_dev, default_matrix); + libinput_device_config_calibration_set_matrix(libinput_dev, default_matrix); /* Non-zero if the device can be calibrated, zero otherwise. */ if (libinput_device_config_calibration_has_matrix(libinput_dev) == 0 || !dc->have_calibration_matrix) { -- 2.52.0