mirror of
https://github.com/labwc/labwc.git
synced 2026-02-12 04:27:57 -05:00
Add scroll method libinput option
<libinput>
<device>
<scrollMethod>none|twofinger|edge</scrollMethod>
</device>
</libinput>
Fixes: #2766
This commit is contained in:
parent
8ba14891fa
commit
fdab272bdc
6 changed files with 41 additions and 0 deletions
|
|
@ -941,6 +941,7 @@ extending outward from the snapped edge.
|
||||||
<middleEmulation></middleEmulation>
|
<middleEmulation></middleEmulation>
|
||||||
<disableWhileTyping></disableWhileTyping>
|
<disableWhileTyping></disableWhileTyping>
|
||||||
<clickMethod></clickMethod>
|
<clickMethod></clickMethod>
|
||||||
|
<scrollMethod></scrollMethod>
|
||||||
<sendEventsMode></sendEventsMode>
|
<sendEventsMode></sendEventsMode>
|
||||||
<calibrationMatrix></calibrationMatrix>
|
<calibrationMatrix></calibrationMatrix>
|
||||||
<scrollFactor>1.0</scrollFactor>
|
<scrollFactor>1.0</scrollFactor>
|
||||||
|
|
@ -1035,6 +1036,19 @@ extending outward from the snapped edge.
|
||||||
|
|
||||||
The default method depends on the touchpad hardware.
|
The default method depends on the touchpad hardware.
|
||||||
|
|
||||||
|
*<libinput><device><scrollMethod>* [none|twofinger|edge]
|
||||||
|
Configure the method by which physical movements on a touchpad are
|
||||||
|
mapped to scroll events.
|
||||||
|
|
||||||
|
The scroll methods available are:
|
||||||
|
- *twofinger* - Scroll by two fingers being placed on the surface of the
|
||||||
|
touchpad, then moving those fingers vertically or horizontally.
|
||||||
|
- *edge* - Scroll by moving a single finger along the right edge
|
||||||
|
(vertical scroll) or bottom edge (horizontal scroll).
|
||||||
|
- *none* - No scroll events will be produced.
|
||||||
|
|
||||||
|
The default method depends on the touchpad hardware.
|
||||||
|
|
||||||
*<libinput><device><sendEventsMode>* [yes|no|disabledOnExternalMouse]
|
*<libinput><device><sendEventsMode>* [yes|no|disabledOnExternalMouse]
|
||||||
Optionally enable or disable sending any device events.
|
Optionally enable or disable sending any device events.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -635,6 +635,7 @@
|
||||||
<middleEmulation></middleEmulation>
|
<middleEmulation></middleEmulation>
|
||||||
<disableWhileTyping></disableWhileTyping>
|
<disableWhileTyping></disableWhileTyping>
|
||||||
<clickMethod></clickMethod>
|
<clickMethod></clickMethod>
|
||||||
|
<scrollMethod></scrollMethod>
|
||||||
<sendEventsMode></sendEventsMode>
|
<sendEventsMode></sendEventsMode>
|
||||||
<calibrationMatrix></calibrationMatrix>
|
<calibrationMatrix></calibrationMatrix>
|
||||||
<scrollFactor>1.0</scrollFactor>
|
<scrollFactor>1.0</scrollFactor>
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ struct libinput_category {
|
||||||
int middle_emu; /* -1 or libinput_config_middle_emulation_state */
|
int middle_emu; /* -1 or libinput_config_middle_emulation_state */
|
||||||
int dwt; /* -1 or libinput_config_dwt_state */
|
int dwt; /* -1 or libinput_config_dwt_state */
|
||||||
int click_method; /* -1 or libinput_config_click_method */
|
int click_method; /* -1 or libinput_config_click_method */
|
||||||
|
int scroll_method; /* -1 or libinput_config_scroll_method */
|
||||||
int send_events_mode; /* -1 or libinput_config_send_events_mode */
|
int send_events_mode; /* -1 or libinput_config_send_events_mode */
|
||||||
bool have_calibration_matrix;
|
bool have_calibration_matrix;
|
||||||
double scroll_factor;
|
double scroll_factor;
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ libinput_category_init(struct libinput_category *l)
|
||||||
l->middle_emu = -1;
|
l->middle_emu = -1;
|
||||||
l->dwt = -1;
|
l->dwt = -1;
|
||||||
l->click_method = -1;
|
l->click_method = -1;
|
||||||
|
l->scroll_method = -1;
|
||||||
l->send_events_mode = -1;
|
l->send_events_mode = -1;
|
||||||
l->have_calibration_matrix = false;
|
l->have_calibration_matrix = false;
|
||||||
l->scroll_factor = 1.0;
|
l->scroll_factor = 1.0;
|
||||||
|
|
|
||||||
|
|
@ -810,6 +810,19 @@ fill_libinput_category(char *nodename, char *content, struct parser_state *state
|
||||||
} else {
|
} else {
|
||||||
wlr_log(WLR_ERROR, "invalid clickMethod");
|
wlr_log(WLR_ERROR, "invalid clickMethod");
|
||||||
}
|
}
|
||||||
|
} else if (!strcasecmp(nodename, "scrollMethod")) {
|
||||||
|
if (!strcasecmp(content, "none")) {
|
||||||
|
state->current_libinput_category->scroll_method =
|
||||||
|
LIBINPUT_CONFIG_SCROLL_NO_SCROLL;
|
||||||
|
} else if (!strcasecmp(content, "edge")) {
|
||||||
|
state->current_libinput_category->scroll_method =
|
||||||
|
LIBINPUT_CONFIG_SCROLL_EDGE;
|
||||||
|
} else if (!strcasecmp(content, "twofinger")) {
|
||||||
|
state->current_libinput_category->scroll_method =
|
||||||
|
LIBINPUT_CONFIG_SCROLL_2FG;
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "invalid scrollMethod");
|
||||||
|
}
|
||||||
} else if (!strcasecmp(nodename, "sendEventsMode")) {
|
} else if (!strcasecmp(nodename, "sendEventsMode")) {
|
||||||
state->current_libinput_category->send_events_mode =
|
state->current_libinput_category->send_events_mode =
|
||||||
get_send_events_mode(content);
|
get_send_events_mode(content);
|
||||||
|
|
|
||||||
11
src/seat.c
11
src/seat.c
|
|
@ -233,6 +233,17 @@ configure_libinput(struct wlr_input_device *wlr_input_device)
|
||||||
libinput_device_config_click_set_method(libinput_dev, dc->click_method);
|
libinput_device_config_click_set_method(libinput_dev, dc->click_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dc->scroll_method < 0) {
|
||||||
|
wlr_log(WLR_INFO, "scroll method not configured");
|
||||||
|
} else if (dc->scroll_method != LIBINPUT_CONFIG_SCROLL_NO_SCROLL
|
||||||
|
&& (libinput_device_config_scroll_get_methods(libinput_dev)
|
||||||
|
& dc->scroll_method) == 0) {
|
||||||
|
wlr_log(WLR_INFO, "scroll method not supported");
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_INFO, "scroll method configured");
|
||||||
|
libinput_device_config_scroll_set_method(libinput_dev, dc->scroll_method);
|
||||||
|
}
|
||||||
|
|
||||||
if ((dc->send_events_mode != LIBINPUT_CONFIG_SEND_EVENTS_ENABLED
|
if ((dc->send_events_mode != LIBINPUT_CONFIG_SEND_EVENTS_ENABLED
|
||||||
&& (libinput_device_config_send_events_get_modes(libinput_dev)
|
&& (libinput_device_config_send_events_get_modes(libinput_dev)
|
||||||
& dc->send_events_mode) == 0)
|
& dc->send_events_mode) == 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue