feat: add option to disable trackpad

This commit is contained in:
DreamMaoMao 2025-07-09 18:21:17 +08:00
parent b003361240
commit 3ef255ccde
4 changed files with 12 additions and 0 deletions

View file

@ -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

View file

@ -195,6 +195,7 @@ typedef struct {
unsigned int numlockon;
/* Trackpad */
int disable_trackpad;
int tap_to_click;
int tap_and_drag;
int drag_lock;
@ -1154,6 +1155,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) {
@ -2178,6 +2181,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);
@ -2334,6 +2338,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;

View file

@ -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;

View file

@ -3043,6 +3043,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);