From a8f7dc3e68a54851903e3ec48bbcb346625df3cc Mon Sep 17 00:00:00 2001 From: meeeee3 <68552560+meeeee3@users.noreply.github.com> Date: Fri, 19 Dec 2025 14:19:10 +0800 Subject: [PATCH] feat: add wheel scroll factor --- src/config/parse_config.h | 6 ++++++ src/config/preset.h | 2 ++ src/mango.c | 9 +++++---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/config/parse_config.h b/src/config/parse_config.h index 8f11f14..da9cc8d 100644 --- a/src/config/parse_config.h +++ b/src/config/parse_config.h @@ -265,6 +265,8 @@ typedef struct { uint32_t send_events_mode; uint32_t button_map; + double axis_scroll_factor; + int blur; int blur_layer; int blur_optimized; @@ -1504,6 +1506,8 @@ void parse_option(Config *config, char *key, char *value) { config->send_events_mode = atoi(value); } else if (strcmp(key, "button_map") == 0) { config->button_map = atoi(value); + } else if (strcmp(key, "axis_scroll_factor") == 0) { + config->axis_scroll_factor = atof(value); } else if (strcmp(key, "gappih") == 0) { config->gappih = atoi(value); } else if (strcmp(key, "gappiv") == 0) { @@ -2780,6 +2784,7 @@ void override_config(void) { click_method = CLAMP_INT(config.click_method, 0, 2); send_events_mode = CLAMP_INT(config.send_events_mode, 0, 2); button_map = CLAMP_INT(config.button_map, 0, 1); + axis_scroll_factor = CLAMP_FLOAT(config.axis_scroll_factor, 0.1f, 10.0f); // 外观设置 gappih = CLAMP_INT(config.gappih, 0, 1000); @@ -2907,6 +2912,7 @@ void set_value_default() { config.exchange_cross_monitor = exchange_cross_monitor; config.scratchpad_cross_monitor = scratchpad_cross_monitor; config.focus_cross_tag = focus_cross_tag; + config.axis_scroll_factor = axis_scroll_factor; config.view_current_to_back = view_current_to_back; config.single_scratchpad = single_scratchpad; config.xwayland_persistence = xwayland_persistence; diff --git a/src/config/preset.h b/src/config/preset.h index 7b45315..cae8814 100644 --- a/src/config/preset.h +++ b/src/config/preset.h @@ -178,6 +178,8 @@ LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER enum libinput_config_click_method click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS; +double axis_scroll_factor = 1.0; + /* You can choose between: LIBINPUT_CONFIG_SEND_EVENTS_ENABLED LIBINPUT_CONFIG_SEND_EVENTS_DISABLED diff --git a/src/mango.c b/src/mango.c index c96126f..0ba3eab 100644 --- a/src/mango.c +++ b/src/mango.c @@ -1711,10 +1711,11 @@ axisnotify(struct wl_listener *listener, void *data) { * implemented checking the event's orientation and the delta of the event */ /* Notify the client with pointer focus of the axis event. */ - wlr_seat_pointer_notify_axis(seat, // 滚轮事件发送给客户端也就是窗口 - event->time_msec, event->orientation, - event->delta, event->delta_discrete, - event->source, event->relative_direction); + wlr_seat_pointer_notify_axis( + seat, // 滚轮事件发送给客户端也就是窗口 + event->time_msec, event->orientation, event->delta * axis_scroll_factor, + roundf(event->delta_discrete * axis_scroll_factor), event->source, + event->relative_direction); } int ongesture(struct wlr_pointer_swipe_end_event *event) {