diff --git a/src/evdev.c b/src/evdev.c index 8afa8e4..fae672a 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1304,6 +1304,7 @@ evdev_read_wheel_click_props(struct evdev_device *device) } else { angles.x = angles.y; } + angles.y = 361; return angles; } diff --git a/src/libinput.c b/src/libinput.c index 6d00a00..0bf1324 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -33,6 +33,9 @@ #include #include #include +#include +#include +#include #include "libinput.h" #include "libinput-private.h" @@ -730,6 +730,16 @@ libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event, return value; } +static char *multiplier="1"; +static void libinput_discrete_deltay_multiplier(void) { + int fd; + char *file = "/tmp/libinput_discrete_deltay_multiplier"; + if ((fd = open(file, O_RDWR | O_CREAT, 0666)) == -1) return; + fchmod(fd,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); + if (write(fd, "1", sizeof(char)) == -1) return; + multiplier = mmap(NULL, 1024, PROT_READ, MAP_SHARED, fd, 0); +} + LIBINPUT_EXPORT double libinput_event_pointer_get_axis_value_discrete(struct libinput_event_pointer *event, enum libinput_pointer_axis axis) @@ -760,7 +760,7 @@ libinput_event_pointer_get_axis_value_discrete(struct libinput_event_pointer *ev value = event->discrete.x; break; case LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL: - value = event->discrete.y; + value = event->discrete.y * atoi(multiplier); break; } } @@ -1804,6 +1804,7 @@ libinput_init(struct libinput *libinput, close(libinput->epoll_fd); return -1; } + libinput_discrete_deltay_multiplier(); return 0; }