diff --git a/config.conf b/config.conf index 4e72ef1..22d8f89 100644 --- a/config.conf +++ b/config.conf @@ -89,6 +89,7 @@ xkb_rules_layout=us # Trackpad # need relogin to make it apply +disable_trackpad=0 tap_to_click=1 tap_and_drag=1 drag_lock=1 diff --git a/src/config/parse_config.h b/src/config/parse_config.h index 3f1b6e2..9ea2a58 100644 --- a/src/config/parse_config.h +++ b/src/config/parse_config.h @@ -192,6 +192,7 @@ typedef struct { unsigned int numlockon; /* Trackpad */ + int disable_trackpad; int tap_to_click; int tap_and_drag; int drag_lock; @@ -1101,6 +1102,8 @@ void parse_config_line(Config *config, const char *line) { config->repeat_rate = atoi(value); } else if (strcmp(key, "repeat_delay") == 0) { config->repeat_delay = atoi(value); + } else if (strcmp(key, "disable_trackpad") == 0) { + config->disable_trackpad = atoi(value); } else if (strcmp(key, "tap_to_click") == 0) { config->tap_to_click = atoi(value); } else if (strcmp(key, "tap_and_drag") == 0) { @@ -2111,6 +2114,7 @@ void override_config(void) { numlockon = CLAMP_INT(config.numlockon, 0, 1); // 触控板设置 + disable_trackpad = CLAMP_INT(config.disable_trackpad, 0, 1); tap_to_click = CLAMP_INT(config.tap_to_click, 0, 1); tap_and_drag = CLAMP_INT(config.tap_and_drag, 0, 1); drag_lock = CLAMP_INT(config.drag_lock, 0, 1); @@ -2248,6 +2252,7 @@ void set_value_default() { config.repeat_delay = repeat_delay; /* Trackpad */ + config.disable_trackpad = disable_trackpad; config.tap_to_click = tap_to_click; config.tap_and_drag = tap_and_drag; config.drag_lock = drag_lock; diff --git a/src/config/preset.h b/src/config/preset.h index b4c4b58..30b1d4b 100644 --- a/src/config/preset.h +++ b/src/config/preset.h @@ -119,6 +119,7 @@ int repeat_rate = 25; int repeat_delay = 600; /* Trackpad */ +int disable_trackpad = 0; int tap_to_click = 1; int tap_and_drag = 1; int drag_lock = 1; diff --git a/src/maomao.c b/src/maomao.c index 8b1c027..2d7104a 100644 --- a/src/maomao.c +++ b/src/maomao.c @@ -2961,6 +2961,11 @@ void createpointer(struct wlr_pointer *pointer) { if (wlr_input_device_is_libinput(&pointer->base) && (device = wlr_libinput_get_device_handle(&pointer->base))) { + if (libinput_device_config_tap_get_finger_count(device) && + disable_trackpad) { + return; + } + if (libinput_device_config_tap_get_finger_count(device)) { libinput_device_config_tap_set_enabled(device, tap_to_click); libinput_device_config_tap_set_drag_enabled(device, tap_and_drag);