Hi,
libinput has the mouse buttons in order: left, right, middle. So fix
the mappings. While here replace the comment before that code that
doesn't make sense anymore.
I've done this as a patch but if you prefer to commit it upstreams and
do a new release, it also works for me.
Index: Makefile
===================================================================
RCS file: /local/cvs/ports/wayland/libinput-openbsd/Makefile,v
diff -u -p -u -r1.5 Makefile
--- Makefile 5 Nov 2023 16:58:38 -0000 1.5
+++ Makefile 8 Nov 2023 16:15:12 -0000
@@ -18,6 +18,7 @@ GH_PROJECT = libopeninput
GH_COMMIT = 26b7c6bc8b79f2fbc8c58e01d3432ffd7e346d8d
DISTNAME = libinput-openbsd-1.24.0
+REVISION = 0
SHARED_LIBS = input 0.0
Index: patches/patch-src_wscons_c
===================================================================
RCS file: patches/patch-src_wscons_c
diff -N patches/patch-src_wscons_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_wscons_c 8 Nov 2023 16:15:12 -0000
@@ -0,0 +1,30 @@
+Fix mouse button ordering
+
+Index: src/wscons.c
+--- src/wscons.c.orig
++++ src/wscons.c
+@@ -103,12 +103,18 @@ wscons_process(struct libinput_device *device, struct
+
+ case WSCONS_EVENT_MOUSE_UP:
+ case WSCONS_EVENT_MOUSE_DOWN:
+- /*
+- * Do not return wscons(4) values directly because
+- * the left button value being 0 it will be
+- * interpreted as an error.
+- */
+- button = wsevent->value + BTN_LEFT;
++ /* button to Linux events */
++ switch (wsevent->value) {
++ case 1:
++ button = BTN_MIDDLE;
++ break;
++ case 2:
++ button = BTN_RIGHT;
++ break;
++ default:
++ button = wsevent->value + BTN_LEFT;
++ break;
++ }
+ if (wsevent->type == WSCONS_EVENT_MOUSE_UP)
+ bstate = LIBINPUT_BUTTON_STATE_RELEASED;
+ else
--
Matthieu Herrb
No comments:
Post a Comment