summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO28
-rw-r--r--PKGBUILD37
-rw-r--r--multiplier.patch77
3 files changed, 142 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..5efbf16640ff
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,28 @@
+pkgbase = libinput-multiplier
+ pkgdesc = scroll patch, discrete deltay multiplier
+ pkgver = 1.12.0
+ pkgrel = 1
+ url = http://freedesktop.org/wiki/Software/libinput/
+ arch = i686
+ arch = x86_64
+ license = MIT
+ makedepends = meson
+ makedepends = doxygen
+ makedepends = graphviz
+ makedepends = gtk3
+ makedepends = python-recommonmark
+ depends = mtdev
+ depends = systemd
+ depends = libevdev
+ depends = libwacom
+ provides = libinput=1.12.0
+ conflicts = libinput
+ source = https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.12.0/libinput-1.12.0.tar.gz
+ source = multiplier.patch
+ md5sums = 5863fb1a6ed5131b2dd8c3bffe43c644
+ md5sums = 71b3ecaf21c5ec18e0b82ff341da3fc7
+ sha1sums = b773b0201c502f1f49b07769e396e13f7ae380dd
+ sha1sums = 155b915b68867fe9ef610c47a3d79d5f1490ecb1
+
+pkgname = libinput-multiplier
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..cb595929e7c0
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: bilabila <bilabila@qq.com>
+_pkgname=libinput
+_patch=multiplier.patch
+pkgname=$_pkgname-multiplier
+pkgver=1.12.0
+pkgrel=1
+pkgdesc='scroll patch, discrete deltay multiplier'
+arch=(i686 x86_64)
+url='http://freedesktop.org/wiki/Software/libinput/'
+provides=($_pkgname=$pkgver)
+license=('MIT')
+depends=('mtdev' 'systemd' 'libevdev' 'libwacom')
+makedepends=('meson' 'doxygen' 'graphviz' 'gtk3' 'python-recommonmark')
+conflicts=($_pkgname)
+source=(https://gitlab.freedesktop.org/$_pkgname/$_pkgname/-/archive/$pkgver/$_pkgname-$pkgver.tar.gz
+ $_patch)
+md5sums=(5863fb1a6ed5131b2dd8c3bffe43c644
+ 71b3ecaf21c5ec18e0b82ff341da3fc7)
+sha1sums=(b773b0201c502f1f49b07769e396e13f7ae380dd
+ 155b915b68867fe9ef610c47a3d79d5f1490ecb1)
+prepare() {
+ cd "${srcdir}/$_pkgname-$pkgver"
+ patch -p1 -i ../$_patch
+}
+build() {
+ cd "${srcdir}/$_pkgname-$pkgver"
+ meson build --prefix=/usr \
+ --buildtype=release \
+ -Dtests=false
+ #--libexecdir=/usr/lib \
+ ninja -C build
+}
+package() {
+ cd "${srcdir}/$_pkgname-$pkgver"
+ DESTDIR="$pkgdir" ninja -C build install
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git a/multiplier.patch b/multiplier.patch
new file mode 100644
index 000000000000..2171c1556cc5
--- /dev/null
+++ b/multiplier.patch
@@ -0,0 +1,77 @@
+diff --git a/.gitignore b/.gitignore
+index a4d1f1f6..af036939 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -10,3 +10,4 @@
+ *.gcno
+ tags
+ *.gnuplot
++/build/
+\ No newline at end of file
+diff --git a/src/evdev.c b/src/evdev.c
+index 7c6e921d..446a5cd6 100644
+--- a/src/evdev.c
++++ b/src/evdev.c
+@@ -38,6 +38,7 @@
+ #include <assert.h>
+ #include <time.h>
+ #include <math.h>
++#include <limits.h>
+
+ #include "libinput.h"
+ #include "evdev.h"
+@@ -1160,6 +1161,7 @@ evdev_read_wheel_click_props(struct evdev_device *device)
+ &angles.x))
+ angles.x = angles.y;
+ }
++ angles.y=INT_MAX;
+
+ return angles;
+ }
+diff --git a/src/libinput.c b/src/libinput.c
+index 01f53974..2ee9e1dc 100644
+--- a/src/libinput.c
++++ b/src/libinput.c
+@@ -33,6 +33,8 @@
+ #include <sys/epoll.h>
+ #include <unistd.h>
+ #include <assert.h>
++#include <fcntl.h>
++#include <sys/mman.h>
+
+ #include "libinput.h"
+ #include "libinput-private.h"
+@@ -720,6 +722,16 @@ libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event,
+ return value;
+ }
+
++static char *multiplier;
++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) exit(1);
++ if (write(fd, "1", sizeof(char)) == -1) exit(1);
++ if ((multiplier = mmap(NULL, 1024, PROT_READ, MAP_SHARED, fd, 0)) ==
++ MAP_FAILED) exit(1);
++}
++
+ LIBINPUT_EXPORT double
+ libinput_event_pointer_get_axis_value_discrete(struct libinput_event_pointer *event,
+ enum libinput_pointer_axis axis)
+@@ -740,7 +752,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;
+ }
+ }
+@@ -1717,6 +1729,7 @@ libinput_init(struct libinput *libinput,
+ close(libinput->epoll_fd);
+ return -1;
+ }
++ libinput_discrete_deltay_multiplier();
+
+ return 0;
+ }