config: support <tapAndDrag> and <dragLock>

This commit is contained in:
tokyo4j 2023-09-02 17:32:48 +09:00 committed by Johan Malm
parent 4268991105
commit 3c3656f74e
6 changed files with 48 additions and 0 deletions

View file

@ -16,6 +16,8 @@ libinput_category_init(struct libinput_category *l)
l->left_handed = -1;
l->tap = LIBINPUT_CONFIG_TAP_ENABLED;
l->tap_button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
l->tap_and_drag = -1;
l->drag_lock = -1;
l->accel_profile = -1;
l->middle_emu = -1;
l->dwt = -1;

View file

@ -408,6 +408,22 @@ fill_libinput_category(char *nodename, char *content)
} else {
wlr_log(WLR_ERROR, "invalid tapButtonMap");
}
} else if (!strcasecmp(nodename, "tapAndDrag")) {
int ret = parse_bool(content, -1);
if (ret < 0) {
return;
}
current_libinput_category->tap_and_drag = ret
? LIBINPUT_CONFIG_DRAG_ENABLED
: LIBINPUT_CONFIG_DRAG_DISABLED;
} else if (!strcasecmp(nodename, "dragLock")) {
int ret = parse_bool(content, -1);
if (ret < 0) {
return;
}
current_libinput_category->drag_lock = ret
? LIBINPUT_CONFIG_DRAG_LOCK_ENABLED
: LIBINPUT_CONFIG_DRAG_LOCK_DISABLED;
} else if (!strcasecmp(nodename, "accelProfile")) {
current_libinput_category->accel_profile =
get_accel_profile(content);

View file

@ -95,6 +95,24 @@ configure_libinput(struct wlr_input_device *wlr_input_device)
dc->tap_button_map);
}
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");
} else {
wlr_log(WLR_INFO, "tap-and-drag configured");
libinput_device_config_tap_set_drag_enabled(
libinput_dev, dc->tap_and_drag);
}
if (libinput_device_config_tap_get_finger_count(libinput_dev) <= 0
|| dc->drag_lock < 0) {
wlr_log(WLR_INFO, "drag lock not configured");
} else {
wlr_log(WLR_INFO, "drag lock configured");
libinput_device_config_tap_set_drag_lock_enabled(
libinput_dev, dc->drag_lock);
}
if (libinput_device_config_scroll_has_natural_scroll(libinput_dev) <= 0
|| dc->natural_scroll < 0) {
wlr_log(WLR_INFO, "natural scroll not configured");