mirror of
https://github.com/labwc/labwc.git
synced 2025-11-02 09:01:47 -05:00
config: support <tapAndDrag> and <dragLock>
This commit is contained in:
parent
4268991105
commit
3c3656f74e
6 changed files with 48 additions and 0 deletions
|
|
@ -407,6 +407,14 @@ Therefore, where multiple objects of the same kind are required (for example
|
||||||
left button, right button, and middle button, respectively (lrm) (the
|
left button, right button, and middle button, respectively (lrm) (the
|
||||||
default), or to left button, middle button, and right button (lmr).
|
default), or to left button, middle button, and right button (lmr).
|
||||||
|
|
||||||
|
*<libinput><device category=""><tapAndDrag>* [yes|no]
|
||||||
|
Enable or disable tap-and-drag for this category. Tap-and-drag processes
|
||||||
|
a tap immediately followed by a finger down as the start of a drag.
|
||||||
|
|
||||||
|
*<libinput><device category=""><dragLock>* [yes|no]
|
||||||
|
Enable or disable drag lock for this category. Drag lock ignores a
|
||||||
|
momentary release of a finger during tap-and-dragging.
|
||||||
|
|
||||||
*<libinput><device category=""><middleEmulation>* [yes|no]
|
*<libinput><device category=""><middleEmulation>* [yes|no]
|
||||||
Enable or disable middle button emulation for this category. Middle
|
Enable or disable middle button emulation for this category. Middle
|
||||||
emulation processes a simultaneous left and right click as a press of
|
emulation processes a simultaneous left and right click as a press of
|
||||||
|
|
|
||||||
|
|
@ -392,6 +392,8 @@
|
||||||
<accelProfile></accelProfile>
|
<accelProfile></accelProfile>
|
||||||
<tap>yes</tap>
|
<tap>yes</tap>
|
||||||
<tapButtonMap></tapButtonMap>
|
<tapButtonMap></tapButtonMap>
|
||||||
|
<tapAndDrag></tapAndDrag>
|
||||||
|
<dragLock></dragLock>
|
||||||
<middleEmulation></middleEmulation>
|
<middleEmulation></middleEmulation>
|
||||||
<disableWhileTyping></disableWhileTyping>
|
<disableWhileTyping></disableWhileTyping>
|
||||||
</device>
|
</device>
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ struct libinput_category {
|
||||||
int left_handed;
|
int left_handed;
|
||||||
enum libinput_config_tap_state tap;
|
enum libinput_config_tap_state tap;
|
||||||
enum libinput_config_tap_button_map tap_button_map;
|
enum libinput_config_tap_button_map tap_button_map;
|
||||||
|
enum libinput_config_drag_state tap_and_drag;
|
||||||
|
enum libinput_config_drag_lock_state drag_lock;
|
||||||
enum libinput_config_accel_profile accel_profile;
|
enum libinput_config_accel_profile accel_profile;
|
||||||
enum libinput_config_middle_emulation_state middle_emu;
|
enum libinput_config_middle_emulation_state middle_emu;
|
||||||
enum libinput_config_dwt_state dwt;
|
enum libinput_config_dwt_state dwt;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ libinput_category_init(struct libinput_category *l)
|
||||||
l->left_handed = -1;
|
l->left_handed = -1;
|
||||||
l->tap = LIBINPUT_CONFIG_TAP_ENABLED;
|
l->tap = LIBINPUT_CONFIG_TAP_ENABLED;
|
||||||
l->tap_button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
|
l->tap_button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
|
||||||
|
l->tap_and_drag = -1;
|
||||||
|
l->drag_lock = -1;
|
||||||
l->accel_profile = -1;
|
l->accel_profile = -1;
|
||||||
l->middle_emu = -1;
|
l->middle_emu = -1;
|
||||||
l->dwt = -1;
|
l->dwt = -1;
|
||||||
|
|
|
||||||
|
|
@ -408,6 +408,22 @@ fill_libinput_category(char *nodename, char *content)
|
||||||
} else {
|
} else {
|
||||||
wlr_log(WLR_ERROR, "invalid tapButtonMap");
|
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")) {
|
} else if (!strcasecmp(nodename, "accelProfile")) {
|
||||||
current_libinput_category->accel_profile =
|
current_libinput_category->accel_profile =
|
||||||
get_accel_profile(content);
|
get_accel_profile(content);
|
||||||
|
|
|
||||||
18
src/seat.c
18
src/seat.c
|
|
@ -95,6 +95,24 @@ configure_libinput(struct wlr_input_device *wlr_input_device)
|
||||||
dc->tap_button_map);
|
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
|
if (libinput_device_config_scroll_has_natural_scroll(libinput_dev) <= 0
|
||||||
|| dc->natural_scroll < 0) {
|
|| dc->natural_scroll < 0) {
|
||||||
wlr_log(WLR_INFO, "natural scroll not configured");
|
wlr_log(WLR_INFO, "natural scroll not configured");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue