Re: [CFT] changes and updates to x11 input devices

Niclas Zeising <[email protected]>
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]>
On 06/10/18 09:01, Niclas Zeising wrote:
> Hi!
> I've been working for a little while on incorporating the various 
> patches floating around for changes and updates to xorg input drivers, 
> mostly related to libinput.  The result can be found here, in the x11 
> team development repo:
> 
> https://github.com/FreeBSDDesktop/freebsd-ports/tree/feature/input
> 
> It contains upates to libinput, libeevdev, libwacom, xf86-input-libinput 
> and dependencies.
> 
> Please help me in testing this as much as possible, so that we can land 
> it in the ports system
> 
> The branch above is a complete ports tree, so you can use it to build 
> from, or to point poudriere at it.  Please test various input devices, 
> synaptics touchpads, wacom devices and so on.  Both success and failure 
> stories are interesting.


On request, attached is a patch with all changes.
Regards
-- 
Niclas

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-x11
To unsubscribe, send any mail to "[email protected]"
ports.input.diff (text/x-patch, 52 KB)
diff --git a/audio/baresip/Makefile b/audio/baresip/Makefile
index ffdae5425a20..dd15bcd767e4 100644
--- a/audio/baresip/Makefile
+++ b/audio/baresip/Makefile
@@ -29,7 +29,7 @@ OPTIONS_DEFINE=	CONS DOCS EXAMPLES FFMPEG G711 G722 G726 GSM GSTREAMER ILBC \
 	L16 OPUS OSS PORTAUDIO SDL SNDFILE SPEEX SRTP STDIO UUID V4L V4L2 X11 \
 	DTLS_SRTP AUBRIDGE VIDBRIDGE HTTPD DSHOW DIRECTFB ACCOUNT \
 	NATPMP SDL MIW SNAPSHOT SELFVIEW VUMETER AULOOP CONTACT \
-	MENU PRESENCE SYSLOG VIDLOOP
+	MENU PRESENCE SYSLOG VIDLOOP EVDEV
 OPTIONS_DEFAULT=CONS G711 G722 G726 L16 OSS STDIO
 
 AULOOP_DESC=	Audio-loop test module
@@ -37,6 +37,7 @@ BV32_DESC=	BroadVoice32 Wideband Audio codec
 CONTACT_DESC=	Contacts module
 CONS_DESC=	Console input driver
 DTLS_SRTP_DESC=	DTLS Secure RTP module [broken]
+EVDEV_DESC=	Input event device interface module
 G711_DESC=	G.711 audio codec
 G722_DESC=	G.722 audio codec
 G722_1_DESC=	G.722.1 audio codec
diff --git a/audio/baresip/Makefile.depends b/audio/baresip/Makefile.depends
index 2dbc5bc24e01..de4154c4aad0 100644
--- a/audio/baresip/Makefile.depends
+++ b/audio/baresip/Makefile.depends
@@ -4,7 +4,7 @@ ALSA_DEPEND=	${LOCALBASE}/include/alsa/asoundlib.h:audio/alsa-lib
 BV32_DEPEND=	# nonexistent
 CONS_DEPEND=	# unnecessary
 DTLS_SRTP_DEPEND=	# unnecessary
-EVDEV_DEPEND=
+EVDEV_DEPEND=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 FFMPEG_DEPEND=	${LOCALBASE}/include/libavcodec/avcodec.h:multimedia/ffmpeg
 G711_DEPEND=	${LOCALBASE}/include/spandsp/g711.h:comms/spandsp
 G722_DEPEND=	${LOCALBASE}/include/spandsp/g722.h:comms/spandsp
diff --git a/comms/lirc/Makefile b/comms/lirc/Makefile
index 1585a1414cd7..3feee05b43af 100644
--- a/comms/lirc/Makefile
+++ b/comms/lirc/Makefile
@@ -11,7 +11,7 @@ MASTER_SITES=	SF/${PORTNAME}/LIRC/${PORTVERSION}
 MAINTAINER=	[email protected]
 COMMENT=	Linux Infrared Remote Control
 
-BUILD_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 
 USES=		alias autoreconf gmake libtool localbase python tar:bzip2
 USE_XORG=	sm x11 ice
diff --git a/comms/svxlink/Makefile b/comms/svxlink/Makefile
index 50f170890da4..2beeab003ded 100644
--- a/comms/svxlink/Makefile
+++ b/comms/svxlink/Makefile
@@ -19,14 +19,13 @@ LIB_DEPENDS?=	libgsm.so:audio/gsm \
 		libpopt.so:devel/popt \
 		libopus.so:audio/opus \
 		librtlsdr.so:comms/rtl-sdr
-BUILD_DEPENDS=	pkg-config:devel/pkgconf \
-		${LOCALBASE}/include/linux/input.h:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	sm0svx
 GH_PROJECT=	svxlink
 
-USES=		cmake tcl groff
+USES=		cmake tcl groff pkgconfig
 CMAKE_SOURCE_PATH=	${WRKSRC}/src
 CMAKE_ARGS+=	-DMAN_INSTALL_DIR:FILEPATH=${MANDIRS} \
 		-DLOCAL_STATE_DIR=/var
diff --git a/devel/Makefile b/devel/Makefile
index 7fdc60cbf5a7..32846174558d 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -600,6 +600,7 @@
     SUBDIR += etcd33
     SUBDIR += etl
     SUBDIR += euca2ools
+    SUBDIR += evdev-proto
     SUBDIR += evemu
     SUBDIR += eventxx
     SUBDIR += evolution-gconf-tools
@@ -4906,6 +4907,7 @@
     SUBDIR += py-pytrie
     SUBDIR += py-pytvmaze
     SUBDIR += py-pytz
+    SUBDIR += py-pyudev
     SUBDIR += py-pyutil
     SUBDIR += py-pyvalid
     SUBDIR += py-pyvisa
diff --git a/devel/evdev-proto/Makefile b/devel/evdev-proto/Makefile
new file mode 100644
index 000000000000..2f9ae2efc278
--- /dev/null
+++ b/devel/evdev-proto/Makefile
@@ -0,0 +1,58 @@
+# $FreeBSD$
+
+PORTNAME=	evdev-proto
+PORTVERSION=	4.16
+CATEGORIES=	devel
+MASTER_SITES=	https://github.com/torvalds/linux/raw/v${PORTVERSION}/include/uapi/linux/
+DISTNAME=	input.h input-event-codes.h uinput.h
+EXTRACT_SUFX=	# empty
+
+MAINTAINER=	[email protected]
+COMMENT=	Input event device header files
+
+LICENSE=	GPLv2
+
+NO_BUILD=	yes
+NO_ARCH=	yes
+WRKSRC=		${WRKDIR}
+
+PLIST_FILES=	${DISTNAME:S|^|include/linux/|}
+
+do-extract:
+	@${MKDIR} ${WRKSRC}
+.for i in ${DISTNAME}
+	@${CP} ${DISTDIR}/${i} ${WRKSRC}
+.endfor
+
+post-patch:
+	@${REINPLACE_CMD} -i '' -E -e \
+		's/__u([[:digit:]]+)/uint\1_t/g ; \
+		s/__s([[:digit:]]+)/int\1_t/g ; \
+		/# *include/ s|<sys/ioctl.h>|<sys/ioccom.h>| ; \
+		/# *include[[:space:]]+<linux\/types.h>/d ; \
+		/EVIOC(RMFF|GRAB|REVOKE)/ s/_IOW(.*), *int/_IOWINT\1/ ; \
+		/EVIOCGKEYCODE/ s/_IOR/_IOWR/ ; \
+		/EVIOCGMASK/ s/_IOR/_IOW/ ; \
+		/EVIOCGMTSLOTS/ s/_IOC_READ/IOC_INOUT/ ; \
+		/#define/ s/_IOC_READ/IOC_OUT/ ; \
+		/#define/ s/_IOC_WRITE/IOC_IN/ ; \
+		s/[[:space:]]+__user[[:space:]]+/ / ; \
+		/__USE_TIME_BITS64/ s|^#if (.*)$$|#if 1 /* \1 */|' \
+		${WRKSRC}/input.h
+	@${REINPLACE_CMD} -i '' -E -e \
+		's/__u([[:digit:]]+)/uint\1_t/g ; \
+		s/__s([[:digit:]]+)/int\1_t/g ; \
+		/# *include/s|<linux/types.h>|<sys/types.h>| ; \
+		/#define/ s/_IOW(.*), *int/_IOWINT\1/ ; \
+		/#define/ s/_IOW(.*), *char\*/_IO\1/ ; \
+		/#define/ s/_IOC_READ/IOC_OUT/' \
+		${WRKSRC}/uinput.h
+
+do-install:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/include/linux/
+.for i in ${DISTNAME}
+	${INSTALL_DATA} ${WRKSRC}/${i} \
+		${STAGEDIR}${PREFIX}/include/linux/
+.endfor
+
+.include <bsd.port.mk>
diff --git a/devel/evdev-proto/distinfo b/devel/evdev-proto/distinfo
new file mode 100644
index 000000000000..b5fa88ce7f80
--- /dev/null
+++ b/devel/evdev-proto/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1522694717
+SHA256 (input.h) = b61cc749f3b517f0e5b0f4b83a23cbcd9c044a3ff97d8fa3d639fbe0b00236e0
+SIZE (input.h) = 15890
+SHA256 (input-event-codes.h) = a736ca688b6d5fd5d0f52d77b620387dd1f0d360ebba53106ca7be96a8231249
+SIZE (input-event-codes.h) = 24313
+SHA256 (uinput.h) = 9123b078f13047c34797332c4f835e5f1e418387e9a950024920faa5a1186974
+SIZE (uinput.h) = 9276
diff --git a/devel/evdev-proto/pkg-descr b/devel/evdev-proto/pkg-descr
new file mode 100644
index 000000000000..950c6ab03039
--- /dev/null
+++ b/devel/evdev-proto/pkg-descr
@@ -0,0 +1 @@
+This port installs the input event device header files.
diff --git a/devel/evemu/Makefile b/devel/evemu/Makefile
index 1b87a4d659ca..74ddaad73d9a 100644
--- a/devel/evemu/Makefile
+++ b/devel/evemu/Makefile
@@ -12,7 +12,7 @@ COMMENT=	Records and replays EVDEV descriptions and events
 
 LICENSE=	GPLv3
 
-BUILD_DEPENDS=	v4l_compat>=0:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 LIB_DEPENDS=	libevdev.so:devel/libevdev
 
 USES=		tar:xz pathfix libtool pkgconfig localbase
diff --git a/devel/evemu/files/patch-tools_evemu-record.c b/devel/evemu/files/patch-tools_evemu-record.c
index f09d9fdc7381..e69de29bb2d1 100644
--- a/devel/evemu/files/patch-tools_evemu-record.c
+++ b/devel/evemu/files/patch-tools_evemu-record.c
@@ -1,12 +0,0 @@
---- tools/evemu-record.c.orig	2016-03-01 14:10:40 UTC
-+++ tools/evemu-record.c
-@@ -209,6 +209,9 @@ out:
- 	return rc;
- }
- 
-+/* Fix broken linux/input.h ioctl define found in multimedia/v4l_compat as of 2017-04-02 */
-+#undef	EVIOCGRAB
-+#define	EVIOCGRAB	_IOWINT('E', 0x90)
- static inline bool test_grab_device(int fd)
- {
- 	if (ioctl(fd, EVIOCGRAB, (void*)1) < 0) {
diff --git a/devel/libepoll-shim/Makefile b/devel/libepoll-shim/Makefile
index 20ef0d4a39e6..f5dd7780aa4a 100644
--- a/devel/libepoll-shim/Makefile
+++ b/devel/libepoll-shim/Makefile
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	libepoll-shim
-PORTVERSION=	0.0.20161220
+PORTVERSION=	0.0.20180530
 CATEGORIES=	devel
 
 MAINTAINER=	[email protected]
@@ -13,7 +13,7 @@ LICENSE=	MIT
 USE_GITHUB=	yes
 GH_ACCOUNT=	FreeBSDDesktop
 GH_PROJECT=	epoll-shim
-GH_TAGNAME=	c04b26b
+GH_TAGNAME=	385633e
 
 USE_LDCONFIG=	yes
 
diff --git a/devel/libepoll-shim/distinfo b/devel/libepoll-shim/distinfo
index 14540e447ef8..b27e9ac8f482 100644
--- a/devel/libepoll-shim/distinfo
+++ b/devel/libepoll-shim/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1482268996
-SHA256 (FreeBSDDesktop-epoll-shim-0.0.20161220-c04b26b_GH0.tar.gz) = ae644d6b21567e9bb5e3a145e6e8ce233de16dc6c93ca4a1facb24f1375f442a
-SIZE (FreeBSDDesktop-epoll-shim-0.0.20161220-c04b26b_GH0.tar.gz) = 7634
+TIMESTAMP = 1527700937
+SHA256 (FreeBSDDesktop-epoll-shim-0.0.20180530-385633e_GH0.tar.gz) = 03fdbc9f161a38d53a3eaa813d30ef11f6929803bb724967d76ee28a31b743f4
+SIZE (FreeBSDDesktop-epoll-shim-0.0.20180530-385633e_GH0.tar.gz) = 15594
diff --git a/devel/libevdev/Makefile b/devel/libevdev/Makefile
index 1342dfad8fa8..dd42dc889dd2 100644
--- a/devel/libevdev/Makefile
+++ b/devel/libevdev/Makefile
@@ -1,7 +1,7 @@
 # $FreeBSD$
 
 PORTNAME=	libevdev
-PORTVERSION=	1.4.4
+PORTVERSION=	1.5.9
 CATEGORIES=	devel
 MASTER_SITES=	http://freedesktop.org/software/${PORTNAME}/
 
@@ -11,22 +11,33 @@ COMMENT=	Linux Event Device library
 LICENSE=	MIT # without linux/*.h
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
-RUN_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
+LIB_DEPENDS=	libepoll-shim.so:devel/libepoll-shim
 
-USES=		gmake libtool pathfix python:build tar:xz
+USES=		gmake libtool localbase pathfix pkgconfig python:build tar:xz
 EXTRACT_AFTER_ARGS=	--exclude include # v4l_compat
 GNU_CONFIGURE=	yes
-CONFIGURE_ENV=	ac_cv_path_DOXYGEN=""
-CPPFLAGS+=	-I${LOCALBASE}/include # v4l_compat
+CONFIGURE_ENV=	ac_cv_path_DOXYGEN="" ac_cv_path_VALGRIND=""
+CPPFLAGS+=	-I${LOCALBASE}/include/libepoll-shim
 INSTALL_TARGET=	install-strip
 USE_LDCONFIG=	yes
 
+# Test requires /dev/uinput and should be run as root
+.if exists(/dev/uinput)
+TEST_USES+=	pkgconfig
+TEST_DEPENDS=	checkmk:devel/check
+TEST_TARGET=	check
+TEST_WRKSRC=	${WRKSRC}/test
+.endif
+
 post-patch:
-	@${REINPLACE_CMD} -e '/input\.h/s,top_srcdir,LOCALBASE,' \
+	@${REINPLACE_CMD} -e '/input\.h/s,top_srcdir,LOCALBASE,g' \
 		${WRKSRC}/libevdev/Makefile.in
-# XXX tools require signalfd(2), test require /dev/uinput
-	@${REINPLACE_CMD} -e '/^SUBDIRS/s,tools test,,' \
-		${WRKSRC}/Makefile.in
+	@${REINPLACE_CMD} -e '/^LIBS = /s/$$/ -pthread -lrt -lepoll-shim/' \
+		${WRKSRC}/tools/Makefile.in
+	@${REINPLACE_CMD} -e 's|program_invocation_short_name|getprogname()|' \
+		${WRKSRC}/tools/mouse-dpi-tool.c \
+		${WRKSRC}/tools/touchpad-edge-detector.c \
+		${WRKSRC}/tools/libevdev-tweak-device.c
 
 .include <bsd.port.mk>
diff --git a/devel/libevdev/distinfo b/devel/libevdev/distinfo
index 606b4098fc0a..83224e5f8150 100644
--- a/devel/libevdev/distinfo
+++ b/devel/libevdev/distinfo
@@ -1,2 +1,3 @@
-SHA256 (libevdev-1.4.4.tar.xz) = ed9979369b6a6e28f5897d099538549ecffb2b7c00c1b717eb77c31d85bc45a9
-SIZE (libevdev-1.4.4.tar.xz) = 409856
+TIMESTAMP = 1522696039
+SHA256 (libevdev-1.5.9.tar.xz) = e1663751443bed9d3e76a4fe2caf6fa866a79705d91cacad815c04e706198a75
+SIZE (libevdev-1.5.9.tar.xz) = 408200
diff --git a/devel/libevdev/files/patch-libevdev_libevdev-uinput.c b/devel/libevdev/files/patch-libevdev_libevdev-uinput.c
new file mode 100644
index 000000000000..c6f92480bca9
--- /dev/null
+++ b/devel/libevdev/files/patch-libevdev_libevdev-uinput.c
@@ -0,0 +1,40 @@
+--- libevdev/libevdev-uinput.c.orig	2017-05-04 00:37:30 UTC
++++ libevdev/libevdev-uinput.c
+@@ -182,6 +182,7 @@ libevdev_uinput_get_fd(const struct libevdev_uinput *u
+ 	return uinput_dev->fd;
+ }
+ 
++#if defined(linux)
+ static int is_event_device(const struct dirent *dent) {
+ 	return strncmp("event", dent->d_name, 5) == 0;
+ }
+@@ -213,10 +214,12 @@ fetch_device_node(const char *path)
+ static int is_input_device(const struct dirent *dent) {
+ 	return strncmp("input", dent->d_name, 5) == 0;
+ }
++#endif
+ 
+ static int
+ fetch_syspath_and_devnode(struct libevdev_uinput *uinput_dev)
+ {
++#if defined(linux)
+ 	struct dirent **namelist;
+ 	int ndev, i;
+ 	int rc;
+@@ -290,6 +293,16 @@ fetch_syspath_and_devnode(struct libevdev_uinput *uinp
+ 	free(namelist);
+ 
+ 	return uinput_dev->devnode ? 0 : -1;
++#elif defined(__FreeBSD__)
++	char devnode[80];
++	if (ioctl(uinput_dev->fd, UI_GET_SYSNAME(sizeof(devnode)), devnode) < 0)
++		return -1;
++	asprintf(&uinput_dev->devnode, "/dev/input/%s", devnode);
++	uinput_dev->syspath = strdup(uinput_dev->devnode);
++	return 0;
++#else
++	return -1;
++#endif
+ }
+ 
+ static int
diff --git a/devel/libevdev/files/patch-test_test-libevdev-events.c b/devel/libevdev/files/patch-test_test-libevdev-events.c
new file mode 100644
index 000000000000..b4d960c1daf6
--- /dev/null
+++ b/devel/libevdev/files/patch-test_test-libevdev-events.c
@@ -0,0 +1,20 @@
+--- test/test-libevdev-events.c.orig	2017-05-04 00:37:30 UTC
++++ test/test-libevdev-events.c
+@@ -1057,7 +1057,7 @@ START_TEST(test_syn_delta_late_sync)
+ 	} while (rc >= 0);
+ 
+ 	/* force enough events to trigger a SYN_DROPPED */
+-	for (i = 0; i < 100; i++) {
++	for (i = 0; i < 200; i++) {
+ 		uinput_device_event(uidev, EV_ABS, ABS_X, 100 + i);
+ 		uinput_device_event(uidev, EV_ABS, ABS_Y, 500 + i);
+ 		uinput_device_event(uidev, EV_ABS, ABS_MT_POSITION_X, 100 + i);
+@@ -1152,7 +1152,7 @@ START_TEST(test_syn_delta_late_sync)
+ 	} while (rc >= 0);
+ 
+ 	/* force enough events to trigger a SYN_DROPPED */
+-	for (i = 0; i < 100; i++) {
++	for (i = 0; i < 200; i++) {
+ 		uinput_device_event(uidev, EV_ABS, ABS_X, 100 + i);
+ 		uinput_device_event(uidev, EV_ABS, ABS_Y, 500 + i);
+ 		uinput_device_event(uidev, EV_ABS, ABS_MT_POSITION_X, 100 + i);
diff --git a/devel/libevdev/files/patch-test_test-libevdev-has-event.c b/devel/libevdev/files/patch-test_test-libevdev-has-event.c
new file mode 100644
index 000000000000..adac5377008c
--- /dev/null
+++ b/devel/libevdev/files/patch-test_test-libevdev-has-event.c
@@ -0,0 +1,16 @@
+--- test/test-libevdev-has-event.c.orig	2017-05-04 00:37:30 UTC
++++ test/test-libevdev-has-event.c
+@@ -116,6 +116,13 @@ START_TEST(test_event_codes)
+ 			evbit++;
+ 			continue;
+ 		}
++#ifdef __FreeBSD__
++		/* Force feedback events are not supported by FreeBSD */
++		if (*evbit == EV_FF) {
++			evbit++;
++			continue;
++		}
++#endif
+ 
+ 		max = libevdev_event_type_get_max(*evbit);
+ 
diff --git a/devel/libevdev/files/patch-test_test-libevdev-init.c b/devel/libevdev/files/patch-test_test-libevdev-init.c
new file mode 100644
index 000000000000..79735a3f906c
--- /dev/null
+++ b/devel/libevdev/files/patch-test_test-libevdev-init.c
@@ -0,0 +1,11 @@
+--- test/test-libevdev-init.c.orig	2017-05-04 00:37:30 UTC
++++ test/test-libevdev-init.c
+@@ -490,7 +490,7 @@ START_TEST(test_set_clock_id)
+ 	rc = libevdev_set_clock_id(dev, CLOCK_MONOTONIC);
+ 	ck_assert_int_eq(rc, 0);
+ 
+-	rc = libevdev_set_clock_id(dev, CLOCK_MONOTONIC_RAW);
++	rc = libevdev_set_clock_id(dev, CLOCK_MONOTONIC_FAST);
+ 	ck_assert_int_eq(rc, -EINVAL);
+ 
+ 	uinput_device_free(uidev);
diff --git a/devel/libevdev/files/patch-test_test-main.c b/devel/libevdev/files/patch-test_test-main.c
new file mode 100644
index 000000000000..e080d7316040
--- /dev/null
+++ b/devel/libevdev/files/patch-test_test-main.c
@@ -0,0 +1,26 @@
+--- test/test-main.c.orig	2017-05-04 00:37:30 UTC
++++ test/test-main.c
+@@ -41,6 +41,7 @@ extern Suite *uinput_suite(void);
+ static int
+ is_debugger_attached(void)
+ {
++#if defined (linux)
+ 	int status;
+ 	int rc;
+ 	int pid = fork();
+@@ -64,6 +65,15 @@ is_debugger_attached(void)
+ 	}
+ 
+ 	return rc;
++#else
++	/*
++	 * Skip useless gdb test as setting CK_FORK environment variable in
++	 * absence of attached debugger gives no harm to user.
++	 * Moreover this test is broken on most nonlinux systems, look at
++	 * discussion here: http://stackoverflow.com/questions/3596781/
++	 */
++	return 1;
++#endif
+ }
+ 
+ int main(int argc, char **argv)
diff --git a/devel/libevdev/pkg-plist b/devel/libevdev/pkg-plist
index 0f5d673093fa..566fee11b2f9 100644
--- a/devel/libevdev/pkg-plist
+++ b/devel/libevdev/pkg-plist
@@ -1,8 +1,11 @@
+bin/libevdev-tweak-device
+bin/mouse-dpi-tool
+bin/touchpad-edge-detector
 include/libevdev-1.0/libevdev/libevdev-uinput.h
 include/libevdev-1.0/libevdev/libevdev.h
 lib/libevdev.a
 lib/libevdev.so
 lib/libevdev.so.2
-lib/libevdev.so.2.1.10
+lib/libevdev.so.2.1.21
 libdata/pkgconfig/libevdev.pc
 man/man3/libevdev.3.gz
diff --git a/devel/libmtdev/Makefile b/devel/libmtdev/Makefile
index 6028ee34d462..a32cf6a80b75 100644
--- a/devel/libmtdev/Makefile
+++ b/devel/libmtdev/Makefile
@@ -12,8 +12,7 @@ COMMENT=	Multitouch Protocol Translation Library
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
-RUN_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 
 USES=		libtool pathfix tar:bz2
 GNU_CONFIGURE=	yes
diff --git a/devel/libmtdev/files/patch-test-mtdev-test.c b/devel/libmtdev/files/patch-test-mtdev-test.c
new file mode 100644
index 000000000000..b1c8575bd82d
--- /dev/null
+++ b/devel/libmtdev/files/patch-test-mtdev-test.c
@@ -0,0 +1,16 @@
+--- test/mtdev-test.c.orig	2014-02-28 22:48:23.000000000 +0400
++++ test/mtdev-test.c	2015-04-03 02:57:56.890923000 +0300
+@@ -28,11 +28,12 @@
+ 
+ #include <mtdev.h>
+ #include <stdio.h>
++#include <stdint.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+ 
+ /* year-proof millisecond event time */
+-typedef __u64 mstime_t;
++typedef uint64_t mstime_t;
+ 
+ static int use_event(const struct input_event *ev)
+ {
diff --git a/devel/libudev-devd/Makefile b/devel/libudev-devd/Makefile
index c65aa3a543ec..691d13085f18 100644
--- a/devel/libudev-devd/Makefile
+++ b/devel/libudev-devd/Makefile
@@ -1,7 +1,7 @@
 # $FreeBSD$
 
 PORTNAME=	libudev-devd
-PORTVERSION=	0.3
+PORTVERSION=	0.4
 CATEGORIES=	devel
 
 MAINTAINER=	[email protected]
@@ -9,14 +9,13 @@ COMMENT=	libudev-compatible interface for devd
 
 LICENSE=	BSD2CLAUSE
 
-BUILD_DEPENDS=	v4l_compat>=0:multimedia/v4l_compat
-LIB_DEPENDS=	libevdev.so:devel/libevdev
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	FreeBSDDesktop
-GH_TAGNAME=	b7aa09f
+GH_TAGNAME=	fbe5a0b
 
-USES=		dos2unix autoreconf gmake libtool localbase pathfix pkgconfig
+USES=		autoreconf gmake libtool localbase pathfix pkgconfig
 USE_LDCONFIG=	yes
 GNU_CONFIGURE=	yes
 INSTALL_TARGET=	install-strip
diff --git a/devel/libudev-devd/distinfo b/devel/libudev-devd/distinfo
index 3fc5a3672a1a..e87dd12a262a 100644
--- a/devel/libudev-devd/distinfo
+++ b/devel/libudev-devd/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1500809406
-SHA256 (FreeBSDDesktop-libudev-devd-0.3-b7aa09f_GH0.tar.gz) = 880a497ef5123fdebf447f4b9b1a7adae3fa2a71885a42dd7c35dbb877985260
-SIZE (FreeBSDDesktop-libudev-devd-0.3-b7aa09f_GH0.tar.gz) = 16442
+TIMESTAMP = 1527795819
+SHA256 (FreeBSDDesktop-libudev-devd-0.4-fbe5a0b_GH0.tar.gz) = 4f6423caf9b673e8bae14c2ec94f0ac1c3fc90b2a1b96315ce11caba1ac342e2
+SIZE (FreeBSDDesktop-libudev-devd-0.4-fbe5a0b_GH0.tar.gz) = 17111
diff --git a/devel/libudev-devd/files/patch-utils.h b/devel/libudev-devd/files/patch-utils.h
deleted file mode 100644
index 26f4db4a5623..000000000000
--- a/devel/libudev-devd/files/patch-utils.h
+++ /dev/null
@@ -1,13 +0,0 @@
---- utils.h.orig	2017-01-07 22:21:49 UTC
-+++ utils.h
-@@ -5,8 +5,8 @@
- #include <unistd.h>
- 
- 
--#define	ENABLE_TRACE
--#define	LOG_LEVEL       1
-+/* #define	ENABLE_TRACE */
-+#define	LOG_LEVEL       0
- 
- /*
- #ifndef	LOG_LEVEL
diff --git a/devel/py-evdev/Makefile b/devel/py-evdev/Makefile
index d7e4a49c4d4a..8ed7b8db5568 100644
--- a/devel/py-evdev/Makefile
+++ b/devel/py-evdev/Makefile
@@ -1,7 +1,7 @@
 # $FreeBSD$
 
 PORTNAME=	evdev
-PORTVERSION=	0.5.0
+PORTVERSION=	0.8.1
 CATEGORIES=	devel python
 MASTER_SITES=	CHEESESHOP
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -12,15 +12,22 @@ COMMENT=	Bindings to the Linux input handling subsystem
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-BUILD_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 
 USES=		python
 USE_PYTHON=	autoplist distutils
 CPPFLAGS+=	-I${LOCALBASE}/include # v4l_compat
 
-post-patch:
-	@${REINPLACE_CMD} -e '/header/s,/usr,${LOCALBASE},' \
-		${WRKSRC}/${PYSETUP}
+EVDEV_INCLUDES=	${LOCALBASE}/include
+
+PYDISTUTILS_BUILD_TARGET=	build_ecodes
+PYDISTUTILS_BUILDARGS+=		--evdev-headers ${EVDEV_INCLUDES}/linux/input.h:${EVDEV_INCLUDES}/linux/input-event-codes.h
+PYDISTUTILS_BUILDARGS+=		build_ext
+PYDISTUTILS_BUILDARGS+=		--include-dirs ${EVDEV_INCLUDES}
+
+# Supply install target with evdev headers path
+PYDISTUTILS_INSTALL_TARGET=	${PYDISTUTILS_BUILD_TARGET} \
+				${PYDISTUTILS_BUILDARGS} install
 
 post-install:
 	${FIND} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} \
diff --git a/devel/py-evdev/distinfo b/devel/py-evdev/distinfo
index 399a3b2dac4a..f2929eefc2ad 100644
--- a/devel/py-evdev/distinfo
+++ b/devel/py-evdev/distinfo
@@ -1,2 +1,3 @@
-SHA256 (evdev-0.5.0.tar.gz) = 509f0f6ce5a12315fcad0b7f9b41cbdfc5c5f49a7cecdd6a88ce5c1d04f6827c
-SIZE (evdev-0.5.0.tar.gz) = 23931
+TIMESTAMP = 1522711809
+SHA256 (evdev-0.8.1.tar.gz) = 3f10c22f15ffedb34519e4af2201f1a088a958efedfd50da0da1aa3887283dff
+SIZE (evdev-0.8.1.tar.gz) = 22680
diff --git a/devel/py-pyudev/Makefile b/devel/py-pyudev/Makefile
new file mode 100644
index 000000000000..a06d4c54a20b
--- /dev/null
+++ b/devel/py-pyudev/Makefile
@@ -0,0 +1,22 @@
+# $FreeBSD$
+
+PORTNAME=	pyudev
+PORTVERSION=	0.21.0
+CATEGORIES=	devel python
+MASTER_SITES=	CHEESESHOP
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	[email protected]
+COMMENT=	Pure Python libudev binding
+
+LICENSE=	LGPL21
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+LIB_DEPENDS=	libudev.so:devel/libudev-devd
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist distutils
+NO_ARCH=	yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-pyudev/distinfo b/devel/py-pyudev/distinfo
new file mode 100644
index 000000000000..75f2087d7eb0
--- /dev/null
+++ b/devel/py-pyudev/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1527799557
+SHA256 (pyudev-0.21.0.tar.gz) = 094b7a100150114748aaa3b70663485dd360457a709bfaaafe5a977371033f2b
+SIZE (pyudev-0.21.0.tar.gz) = 89469
diff --git a/devel/py-pyudev/pkg-descr b/devel/py-pyudev/pkg-descr
new file mode 100644
index 000000000000..56bef47b1649
--- /dev/null
+++ b/devel/py-pyudev/pkg-descr
@@ -0,0 +1,8 @@
+pyudev is a LGPL licensed, pure Python binding for libudev, the device
+and hardware management and information library for Linux. It supports
+almost all libudev functionality. You can enumerate devices, query
+device properties and attributes or monitor devices, including
+asynchronous monitoring with threads, or within the event loops of Qt,
+Glib or wxPython.
+
+WWW: https://pyudev.readthedocs.org
diff --git a/multimedia/lives/Makefile b/multimedia/lives/Makefile
index 59b62ecca957..7d6033e6f9e4 100644
--- a/multimedia/lives/Makefile
+++ b/multimedia/lives/Makefile
@@ -14,7 +14,7 @@ COMMENT=	Video editing system
 LICENSE=	GPLv3+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:multimedia/v4l_compat \
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/videodev.h:multimedia/v4l_compat \
 		${LOCALBASE}/bin/analyseplugin:audio/ladspa
 LIB_DEPENDS=	libasound.so:audio/alsa-lib \
 		libjack.so:audio/jack \
diff --git a/multimedia/v4l_compat/Makefile b/multimedia/v4l_compat/Makefile
index 1d98d2c024ee..a4976a55a9cd 100644
--- a/multimedia/v4l_compat/Makefile
+++ b/multimedia/v4l_compat/Makefile
@@ -1,7 +1,7 @@
 # $FreeBSD$
 
 PORTNAME=	v4l_compat
-PORTREVISION=	0
+PORTREVISION=	1
 
 COMMENT=	Video4Linux IOCTL header files
 
@@ -14,8 +14,7 @@ DESCR=		${.CURDIR}/pkg-descr
 PLIST=		${.CURDIR}/pkg-plist
 LIBV4L_SLAVE=	compat
 
-BASE_HEADERS=	input.h uinput.h ivtv.h v4l2-controls.h \
-		v4l2-common.h videodev2.h
+BASE_HEADERS=	ivtv.h v4l2-controls.h v4l2-common.h videodev2.h
 DVB_HEADERS=	audio.h dmx.h frontend.h video.h
 EXTRA_HEADERS=	ca.h osd.h version.h
 
diff --git a/multimedia/v4l_compat/pkg-plist b/multimedia/v4l_compat/pkg-plist
index 3296ca9c5e1f..636875db6ddf 100644
--- a/multimedia/v4l_compat/pkg-plist
+++ b/multimedia/v4l_compat/pkg-plist
@@ -5,9 +5,7 @@ include/linux/dvb/frontend.h
 include/linux/dvb/osd.h
 include/linux/dvb/version.h
 include/linux/dvb/video.h
-include/linux/input.h
 include/linux/ivtv.h
-include/linux/uinput.h
 include/linux/v4l2-common.h
 include/linux/v4l2-controls.h
 include/linux/videodev.h
diff --git a/x11-drivers/xf86-input-evdev/Makefile b/x11-drivers/xf86-input-evdev/Makefile
index b4c90e125877..718c15858cf0 100644
--- a/x11-drivers/xf86-input-evdev/Makefile
+++ b/x11-drivers/xf86-input-evdev/Makefile
@@ -10,10 +10,9 @@ COMMENT=	X.Org event device input driver
 LICENSE=	MIT # various styles
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 LIB_DEPENDS=	libevdev.so:devel/libevdev \
 		libmtdev.so:devel/libmtdev
-RUN_DEPENDS=	webcamd>=3.1.0.1:multimedia/webcamd
 
 XORG_CAT=	driver
 USES=		pathfix
diff --git a/x11-drivers/xf86-input-libinput/Makefile b/x11-drivers/xf86-input-libinput/Makefile
index 3573e6c7fe06..38a8646b3432 100644
--- a/x11-drivers/xf86-input-libinput/Makefile
+++ b/x11-drivers/xf86-input-libinput/Makefile
@@ -1,7 +1,7 @@
 # $FreeBSD$
 
 PORTNAME=	xf86-input-libinput
-PORTVERSION=	0.25.0
+PORTVERSION=	0.27.1
 CATEGORIES=	x11-drivers
 
 MAINTAINER=	[email protected]
@@ -10,6 +10,7 @@ COMMENT=	X.Org libinput input driver
 LICENSE=	MIT # various styles
 LICENSE_FILE=	${WRKSRC}/COPYING
 
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 LIB_DEPENDS=	libinput.so:x11/libinput
 
 XORG_CAT=	driver
diff --git a/x11-drivers/xf86-input-libinput/distinfo b/x11-drivers/xf86-input-libinput/distinfo
index 855193014eec..81db44acb7c5 100644
--- a/x11-drivers/xf86-input-libinput/distinfo
+++ b/x11-drivers/xf86-input-libinput/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1489176847
-SHA256 (xorg/driver/xf86-input-libinput-0.25.0.tar.bz2) = bb7fd1658fa7e6c757fd55480aa8a07f8ccfb0a80ae42c29dbc67d57958c556f
-SIZE (xorg/driver/xf86-input-libinput-0.25.0.tar.bz2) = 368913
+TIMESTAMP = 1528570727
+SHA256 (xorg/driver/xf86-input-libinput-0.27.1.tar.bz2) = d4ad8dc5ad6f962a3f15f61ba9e9f8e37fa0b57eee9f484e2bd721d60ca72ee6
+SIZE (xorg/driver/xf86-input-libinput-0.27.1.tar.bz2) = 373248
diff --git a/x11-drivers/xf86-input-synaptics/Makefile b/x11-drivers/xf86-input-synaptics/Makefile
index 9c74c40c7769..3aa149c7eb6f 100644
--- a/x11-drivers/xf86-input-synaptics/Makefile
+++ b/x11-drivers/xf86-input-synaptics/Makefile
@@ -18,7 +18,7 @@ OPTIONS_DEFINE=	EVDEV
 EVDEV_DESC=	Use evdev for input events (requires kernel support)
 
 EVDEV_CONFIGURE_ENV=	BUILD_EVENTCOMM=yes
-EVDEV_BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:multimedia/v4l_compat
+EVDEV_BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 EVDEV_LIB_DEPENDS=	libevdev.so:devel/libevdev
 
 .include <bsd.port.mk>
diff --git a/x11-drivers/xf86-input-wacom/Makefile b/x11-drivers/xf86-input-wacom/Makefile
index bf8a0378fc6b..ce3e93d31e03 100644
--- a/x11-drivers/xf86-input-wacom/Makefile
+++ b/x11-drivers/xf86-input-wacom/Makefile
@@ -10,7 +10,7 @@ COMMENT=	X.Org Wacom tablet driver
 
 LICENSE=	GPLv2+
 
-BUILD_DEPENDS=	v4l_compat>=1.0.20110603:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 RUN_DEPENDS=	webcamd>=3.1.0.1:multimedia/webcamd
 
 USES=		gmake pathfix
diff --git a/x11-drivers/xf86-input-wacom/files/patch-src-wcmValidateDevice.c b/x11-drivers/xf86-input-wacom/files/patch-src-wcmValidateDevice.c
index 71a40cffabae..64bc9fb44e0a 100644
--- a/x11-drivers/xf86-input-wacom/files/patch-src-wcmValidateDevice.c
+++ b/x11-drivers/xf86-input-wacom/files/patch-src-wcmValidateDevice.c
@@ -29,6 +29,15 @@
  	if (match)
  		xf86Msg(X_WARNING, "%s: device file already in use by %s. "
  			"Ignoring.\n", pInfo->name, pDevices->name);
+@@ -123,7 +124,7 @@ ret:
+ static struct
+ {
+ 	const char* type;
+-	__u16 tool[3]; /* tool array is terminated by 0 */
++	uint16_t tool[3]; /* tool array is terminated by 0 */
+ } wcmType [] =
+ {
+ 	{ "stylus", { BTN_TOOL_PEN,       0                  } },
 @@ -205,6 +206,10 @@ int wcmDeviceTypeKeys(InputInfoPtr pInfo
  		case 0x314: /* Intuos Pro S */
  		case 0x315: /* Intuos Pro M */
diff --git a/x11-servers/xwayland/Makefile b/x11-servers/xwayland/Makefile
index 218dbcb9a34e..81f88239fc23 100644
--- a/x11-servers/xwayland/Makefile
+++ b/x11-servers/xwayland/Makefile
@@ -7,7 +7,8 @@ COMMENT=	X Clients under Wayland
 
 LICENSE=	MIT
 
-BUILD_DEPENDS=	${LOCALBASE}/libdata/pkgconfig/wayland-protocols.pc:graphics/wayland-protocols
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto \
+		${LOCALBASE}/libdata/pkgconfig/wayland-protocols.pc:graphics/wayland-protocols
 LIB_DEPENDS=	libwayland-client.so:graphics/wayland \
 		libinput.so:x11/libinput
 
diff --git a/x11/kf5-kwayland/Makefile b/x11/kf5-kwayland/Makefile
index 9bc4cfc99b56..410b3d5a1479 100644
--- a/x11/kf5-kwayland/Makefile
+++ b/x11/kf5-kwayland/Makefile
@@ -7,7 +7,7 @@ CATEGORIES=	x11 kde kde-frameworks
 MAINTAINER=	[email protected]
 COMMENT=	KF5 Client and Server library wrapper for the Wayland libraries
 
-BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:multimedia/v4l_compat
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 LIB_DEPENDS=	libwayland-client.so:graphics/wayland
 
 LICENSE=	LGPL21 LGPL3
diff --git a/x11/libinput/Makefile b/x11/libinput/Makefile
index 6bb96d13647a..303448b572c5 100644
--- a/x11/libinput/Makefile
+++ b/x11/libinput/Makefile
@@ -1,30 +1,61 @@
 # $FreeBSD$
 
 PORTNAME=	libinput
-PORTVERSION=	1.6.0
+PORTVERSION=	1.11.0
 CATEGORIES=	x11
 MASTER_SITES=	http://freedesktop.org/software/${PORTNAME}/
 
 MAINTAINER=	[email protected]
 COMMENT=	Generic input library
 
-BUILD_DEPENDS=	v4l_compat>=0:multimedia/v4l_compat
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}evdev>0:devel/py-evdev@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pyudev>0:devel/py-pyudev@${PY_FLAVOR}
 LIB_DEPENDS=	libevdev.so:devel/libevdev \
 		libepoll-shim.so:devel/libepoll-shim \
-		libwacom.so:x11/libwacom \
 		libudev.so:devel/libudev-devd \
 		libmtdev.so:devel/libmtdev
 
-USES=		autoreconf gmake libtool pathfix pkgconfig tar:xz
-USE_LDCONFIG=	yes
-GNU_CONFIGURE=	yes
 
+OPTIONS_DEFINE=	DEBUG_GUI LIBWACOM
+OPTIONS_DEFAULT=LIBWACOM
+OPTIONS_SUB=	yes
+ 
+DEBUG_GUI_DESC=	Build the GUI event viewer
+LIBWACOM_DESC=	Libwacom support
+
+DEBUG_GUI_USE=		GNOME=gtk30,glib20,cairo
+DEBUG_GUI_MESON_TRUE=	debug-gui
+LIBWACOM_LIB_DEPENDS=	libwacom.so:x11/libwacom
+LIBWACOM_MESON_TRUE=	libwacom
+
+USES=			localbase meson pkgconfig python:3.4+,run shebangfix tar:xz
+USE_LDCONFIG=		yes
+EXTRACT_AFTER_ARGS=	--exclude include/linux # supplied linux/input.h
+
+MESON_ARGS+=	-Ddocumentation=false -Dtests=false
 CPPFLAGS+=	-I${LOCALBASE}/include/libepoll-shim
+LDFLAGS+=	-lepoll-shim
 INSTALL_TARGET=	install-strip
 
+python_OLD_CMD=	"/usr/bin/env python3"
+SHEBANG_FILES=	tools/libinput-measure-fuzz \
+		tools/libinput-measure-touch-size \
+		tools/libinput-measure-touchpad-pressure \
+		tools/libinput-measure-touchpad-tap \
+		tools/libinput-measure-trackpoint-range \
+		tools/libinput-replay
+
+post-extract:
+	# meson script checks existence of bundled evdev headers. Fake them.
+	${LN} -sf ${LOCALBASE}/include/linux ${WRKSRC}/include/linux
+
 post-patch:
 	${REINPLACE_CMD} -e 's|program_invocation_short_name|getprogname()|' \
-	    ${WRKSRC}/tools/libinput-list-devices.c \
-	    ${WRKSRC}/tools/ptraccel-debug.c ${WRKSRC}/tools/shared.c
+		${WRKSRC}/tools/ptraccel-debug.c \
+		${WRKSRC}/tools/libinput-record.c
 
 .include <bsd.port.mk>
diff --git a/x11/libinput/distinfo b/x11/libinput/distinfo
index 6b4217e50efe..e2887cdf38b9 100644
--- a/x11/libinput/distinfo
+++ b/x11/libinput/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1486789508
-SHA256 (libinput-1.6.0.tar.xz) = b7534f518d735c643aedca2fb4694683dfddc8d0600cfb628c87a18e65255832
-SIZE (libinput-1.6.0.tar.xz) = 927656
+TIMESTAMP = 1528298578
+SHA256 (libinput-1.11.0.tar.xz) = 64a36c4f826f4b5d473bf2cb803122f96390a18243ec810f2ce8ac5076a0bc12
+SIZE (libinput-1.11.0.tar.xz) = 485976
diff --git a/x11/libinput/files/patch-Makefile.am b/x11/libinput/files/patch-Makefile.am
deleted file mode 100644
index b8a4db09214e..000000000000
--- a/x11/libinput/files/patch-Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
---- Makefile.am.orig	2017-02-11 05:10:33 UTC
-+++ Makefile.am
-@@ -1,4 +1,4 @@
--SUBDIRS = src doc test tools udev
-+SUBDIRS = src doc tools udev
- 
- ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
- 
diff --git a/x11/libinput/files/patch-include_linux_input.h b/x11/libinput/files/patch-include_linux_input.h
deleted file mode 100644
index c53abdf8dc32..000000000000
--- a/x11/libinput/files/patch-include_linux_input.h
+++ /dev/null
@@ -1,38 +0,0 @@
---- include/linux/input.h.orig	2016-12-05 05:15:21 UTC
-+++ include/linux/input.h
-@@ -11,7 +11,17 @@
- #include <sys/time.h>
- #include <sys/ioctl.h>
- #include <sys/types.h>
-+#ifdef __FreeBSD__
-+#define __u8 uint8_t
-+#define __u16 uint16_t
-+#define __u32 uint32_t
-+#define __s16 int16_t
-+#define __s32 int32_t
-+#define _IOC_READ IOC_OUT
-+#define _IOC_WRITE IOC_IN
-+#else
- #include <linux/types.h>
-+#endif
- 
- /*
-  * The event structure itself
-@@ -132,7 +142,7 @@ struct input_keymap_entry {
-  *
-  * If the request code is not an ABS_MT value, -EINVAL is returned.
-  */
--#define EVIOCGMTSLOTS(len)	_IOC(_IOC_READ, 'E', 0x0a, len)
-+#define EVIOCGMTSLOTS(len)	_IOC(IOC_INOUT, 'E', 0x0a, len)
- 
- #define EVIOCGKEY(len)		_IOC(_IOC_READ, 'E', 0x18, len)		/* get global key state */
- #define EVIOCGLED(len)		_IOC(_IOC_READ, 'E', 0x19, len)		/* get all LEDs */
-@@ -147,7 +157,7 @@ struct input_keymap_entry {
- #define EVIOCRMFF		_IOW('E', 0x81, int)			/* Erase a force effect */
- #define EVIOCGEFFECTS		_IOR('E', 0x84, int)			/* Report number of effects playable at the same time */
- 
--#define EVIOCGRAB		_IOW('E', 0x90, int)			/* Grab/Release device */
-+#define EVIOCGRAB		_IO('E', 0x90)				/* Grab/Release device */
- #define EVIOCREVOKE		_IOW('E', 0x91, int)			/* Revoke device access */
- 
- #define EVIOCSCLOCKID		_IOW('E', 0xa0, int)			/* Set clockid to be used for timestamps */
diff --git a/x11/libinput/files/patch-meson.build b/x11/libinput/files/patch-meson.build
new file mode 100644
index 000000000000..619d0ea17340
--- /dev/null
+++ b/x11/libinput/files/patch-meson.build
@@ -0,0 +1,59 @@
+--- meson.build.orig	2018-06-09 12:13:40 UTC
++++ meson.build
+@@ -59,6 +59,8 @@ pkgconfig = import('pkgconfig')
+ dep_udev = dependency('libudev')
+ dep_mtdev = dependency('mtdev', version : '>= 1.1.0')
+ dep_libevdev = dependency('libevdev', version : '>= 0.4')
++dep_libepoll = declare_dependency(link_args : ['-lepoll-shim'], include_directories : [
++     include_directories(join_paths(get_option('prefix'), 'include', 'libepoll-shim')) ])
+ dep_lm = cc.find_library('m', required : false)
+ dep_rt = cc.find_library('rt', required : false)
+ 
+@@ -96,6 +98,8 @@ endif
+ 
+ ############ udev bits ############
+ 
++if false
++
+ udev_dir = get_option('udev-dir')
+ if udev_dir == ''
+ 	udev_dir = join_paths(get_option('prefix'), 'lib', 'udev')
+@@ -152,6 +156,8 @@ litest_model_quirks_file = configure_file(input : 'ude
+ 	       install : false,
+ 	       configuration : litest_udev_rules_config)
+ 
++endif
++
+ ############ libinput-util.a ############
+ src_libinput_util = [
+ 		'src/libinput-util.c',
+@@ -217,6 +223,7 @@ deps_libinput = [
+ 	dep_mtdev,
+ 	dep_udev,
+ 	dep_libevdev,
++	dep_libepoll,
+ 	dep_lm,
+ 	dep_rt,
+ 	dep_libwacom,
+@@ -504,21 +511,6 @@ install_data('tools/libinput-measure-trackpoint-range'
+             install_dir : libinput_tool_path)
+ configure_file(input : 'tools/libinput-measure-trackpoint-range.man',
+ 	       output : 'libinput-measure-trackpoint-range.1',
+-	       configuration : man_config,
+-	       install : true,
+-	       install_dir : join_paths(get_option('mandir'), 'man1')
+-	       )
+-
+-libinput_record_sources = [ 'tools/libinput-record.c', git_version_h ]
+-executable('libinput-record',
+-	   libinput_record_sources,
+-	   dependencies : deps_tools + [dep_udev],
+-	   include_directories : [includes_src, includes_include],
+-	   install_dir : libinput_tool_path,
+-	   install : true,
+-	   )
+-configure_file(input : 'tools/libinput-record.man',
+-	       output : 'libinput-record.1',
+ 	       configuration : man_config,
+ 	       install : true,
+ 	       install_dir : join_paths(get_option('mandir'), 'man1')
diff --git a/x11/libinput/files/patch-src_Makefile.am b/x11/libinput/files/patch-src_Makefile.am
deleted file mode 100644
index 0ba6f7bbfaa2..000000000000
--- a/x11/libinput/files/patch-src_Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
---- src/Makefile.am.orig	2017-02-11 05:10:33 UTC
-+++ src/Makefile.am
-@@ -38,6 +38,7 @@ libinput_la_LIBADD = $(MTDEV_LIBS) \
- 		     $(LIBUDEV_LIBS) \
- 		     $(LIBEVDEV_LIBS) \
- 		     $(LIBWACOM_LIBS) \
-+		     -lepoll-shim \
- 		     libinput-util.la
- 
- libinput_la_CFLAGS = -I$(top_srcdir)/include \
-@@ -61,8 +62,8 @@ libfilter_la_SOURCES = \
- 	filter.c \
- 	filter.h \
- 	filter-private.h
--libfilter_la_LIBADD =
--libfilter_la_CFLAGS =
-+libfilter_la_LIBADD = $(LIBUDEV_LIBS)
-+libfilter_la_CFLAGS = -I$(top_srcdir)/include $(LIBUDEV_CFLAGS)
- 
- libinput_la_LDFLAGS = -version-info $(LIBINPUT_LT_VERSION) -shared \
- 		      -Wl,--version-script=$(srcdir)/libinput.sym
diff --git a/x11/libinput/files/patch-src_evdev.c b/x11/libinput/files/patch-src_evdev.c
index 65fd54de6be3..79386c458c9e 100644
--- a/x11/libinput/files/patch-src_evdev.c
+++ b/x11/libinput/files/patch-src_evdev.c
@@ -1,11 +1,87 @@
---- src/evdev.c.orig	2017-01-19 21:36:55 UTC
+When a process without full /dev/input access enumerates devices via libudev-devd,
+the udev_device structs do not get udev properties that mark them as inputs, keyboards, etc,
+and get rejected as not being input devices.
+
+libinput reopens devices just to check path equality.
+The udev_devices from reopening do have the right properties,
+so we just use them instead of the original (enumerated) ones.
+
+--- src/evdev.c.orig	2018-06-09 12:13:43 UTC
 +++ src/evdev.c
-@@ -25,6 +25,8 @@
+@@ -895,7 +895,7 @@ evdev_sync_device(struct evdev_device *device)
+ 		evdev_device_dispatch_one(device, &ev);
+ 	} while (rc == LIBEVDEV_READ_STATUS_SYNC);
  
- #include "config.h"
+-	return rc == -EAGAIN ? 0 : rc;
++	return (rc == -EAGAIN || rc == -EINVAL)? 0 : rc;
+ }
  
-+#include <sys/stat.h>
-+
- #include <errno.h>
- #include <stdbool.h>
- #include <stdlib.h>
+ static void
+@@ -933,6 +933,17 @@ evdev_device_dispatch(void *data)
+ 
+ 	if (rc != -EAGAIN && rc != -EINTR) {
+ 		libinput_remove_source(libinput, device->source);
++		/*
++		 * Dirty hack to allow cuse-based evdev backends to release
++		 * character device file when device has been detached
++		 * but still have it descriptor opened.
++		 * Issuing evdev_device_suspend() here leads to SIGSEGV
++		 */
++		int dummy_fd = open("/dev/null", O_RDONLY | O_CLOEXEC);
++		if (dummy_fd >= 0) {
++			dup2(dummy_fd, device->fd);
++			close(dummy_fd);
++		}
+ 		device->source = NULL;
+ 	}
+ }
+@@ -1785,9 +1796,9 @@ evdev_notify_added_device(struct evdev_device *device)
+ }
+ 
+ static bool
+-evdev_device_have_same_syspath(struct udev_device *udev_device, int fd)
++evdev_device_have_same_syspath(struct udev_device **udev_device, int fd, bool reopen)
+ {
+-	struct udev *udev = udev_device_get_udev(udev_device);
++	struct udev *udev = udev_device_get_udev(*udev_device);
+ 	struct udev_device *udev_device_new = NULL;
+ 	struct stat st;
+ 	bool rc = false;
+@@ -1800,10 +1811,16 @@ evdev_device_have_same_syspath(struct udev_device *ude
+ 		goto out;
+ 
+ 	rc = streq(udev_device_get_syspath(udev_device_new),
+-		   udev_device_get_syspath(udev_device));
++		   udev_device_get_syspath(*udev_device));
+ out:
+-	if (udev_device_new)
+-		udev_device_unref(udev_device_new);
++	if (udev_device_new) {
++		if (reopen) {
++			udev_device_unref(*udev_device);
++			*udev_device = udev_device_new;
++		} else {
++			udev_device_unref(udev_device_new);
++		}
++	}
+ 	return rc;
+ }
+ 
+@@ -2003,7 +2020,7 @@ evdev_device_create(struct libinput_seat *seat,
+ 		return NULL;
+ 	}
+ 
+-	if (!evdev_device_have_same_syspath(udev_device, fd))
++	if (!evdev_device_have_same_syspath(&udev_device, fd, true))
+ 		goto err;
+ 
+ 	device = zalloc(sizeof *device);
+@@ -2559,7 +2576,7 @@ evdev_device_resume(struct evdev_device *device)
+ 	if (fd < 0)
+ 		return -errno;
+ 
+-	if (!evdev_device_have_same_syspath(device->udev_device, fd)) {
++	if (!evdev_device_have_same_syspath(&device->udev_device, fd, false)) {
+ 		close_restricted(libinput, fd);
+ 		return -ENODEV;
+ 	}
diff --git a/x11/libinput/files/patch-src_libinput-private.h b/x11/libinput/files/patch-src_libinput-private.h
deleted file mode 100644
index b79754ff6f7a..000000000000
--- a/x11/libinput/files/patch-src_libinput-private.h
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/libinput-private.h.orig	2017-01-18 04:32:06 UTC
-+++ src/libinput-private.h
-@@ -29,6 +29,7 @@
- 
- #include <errno.h>
- #include <math.h>
-+#include <stdarg.h>
- 
- #include "linux/input.h"
- 
diff --git a/x11/libinput/files/patch-src_libinput-util.c b/x11/libinput/files/patch-src_libinput-util.c
deleted file mode 100644
index 5344b4b97325..000000000000
--- a/x11/libinput/files/patch-src_libinput-util.c
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/libinput-util.c.orig	2017-01-17 04:53:51 UTC
-+++ src/libinput-util.c
-@@ -36,6 +36,9 @@
- #include <stdbool.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#ifdef __FreeBSD__
-+#include <xlocale.h>
-+#endif
- 
- #include "libinput-util.h"
- #include "libinput-private.h"
diff --git a/x11/libinput/files/patch-src_libinput-util.h b/x11/libinput/files/patch-src_libinput-util.h
new file mode 100644
index 000000000000..cba5e6bb9164
--- /dev/null
+++ b/x11/libinput/files/patch-src_libinput-util.h
@@ -0,0 +1,12 @@
+--- src/libinput-util.h.orig	2017-11-28 05:13:06 UTC
++++ src/libinput-util.h
+@@ -39,6 +39,9 @@
+ #include <string.h>
+ #include <time.h>
+ #include <unistd.h>
++#ifdef __FreeBSD__
++#include <xlocale.h>
++#endif
+ 
+ #include "libinput.h"
+ 
diff --git a/x11/libinput/files/patch-src_libinput.h b/x11/libinput/files/patch-src_libinput.h
deleted file mode 100644
index 93d44ece6082..000000000000
--- a/x11/libinput/files/patch-src_libinput.h
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/libinput.h.orig	2017-01-19 05:27:32 UTC
-+++ src/libinput.h
-@@ -29,6 +29,7 @@
- extern "C" {
- #endif
- 
-+#include <stdarg.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include <libudev.h>
diff --git a/x11/libinput/files/patch-src_path-seat.c b/x11/libinput/files/patch-src_path-seat.c
deleted file mode 100644
index e4c6edc01c29..000000000000
--- a/x11/libinput/files/patch-src_path-seat.c
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/path-seat.c.orig	2017-01-19 05:27:32 UTC
-+++ src/path-seat.c
-@@ -23,10 +23,11 @@
- 
- #include "config.h"
- 
-+#include <sys/stat.h>
-+
- #include <errno.h>
- #include <fcntl.h>
- #include <string.h>
--#include <sys/stat.h>
- #include <libudev.h>
- 
- #include "path-seat.h"
diff --git a/x11/libinput/files/patch-tools_Makefile.am b/x11/libinput/files/patch-tools_Makefile.am
deleted file mode 100644
index 65884b04fd3a..000000000000
--- a/x11/libinput/files/patch-tools_Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
---- tools/Makefile.am.orig	2017-02-11 05:10:33 UTC
-+++ tools/Makefile.am
-@@ -11,8 +11,8 @@ AM_CXXFLAGS = $(GCC_CXXFLAGS)
- libshared_la_SOURCES = \
- 		       shared.c \
- 		       shared.h
--libshared_la_CFLAGS = $(AM_CFLAGS) $(LIBEVDEV_CFLAGS)
--libshared_la_LIBADD = $(LIBEVDEV_LIBS)
-+libshared_la_CFLAGS = $(AM_CFLAGS) $(LIBEVDEV_CFLAGS) $(LIBUDEV_CFLAGS)
-+libshared_la_LIBADD = $(LIBEVDEV_LIBS) $(LIBUDEV_LIBS)
- 
- event_debug_SOURCES = event-debug.c
- event_debug_LDADD = ../src/libinput.la libshared.la $(LIBUDEV_LIBS) $(LIBEVDEV_LIBS)
-@@ -20,8 +20,9 @@ event_debug_LDFLAGS = -no-install
- event_debug_CFLAGS = $(AM_CFLAGS) $(LIBUDEV_CFLAGS) $(LIBEVDEV_CFLAGS)
- 
- ptraccel_debug_SOURCES = ptraccel-debug.c
--ptraccel_debug_LDADD = ../src/libfilter.la ../src/libinput.la
-+ptraccel_debug_LDADD = ../src/libfilter.la ../src/libinput.la $(LIBUDEV_LIBS)
- ptraccel_debug_LDFLAGS = -no-install
-+ptraccel_debug_CFLAGS = $(LIBUDEV_CFLAGS)
- 
- libinput_list_devices_SOURCES = libinput-list-devices.c
- libinput_list_devices_LDADD = ../src/libinput.la libshared.la $(LIBUDEV_LIBS)
diff --git a/x11/libinput/files/patch-udev_Makefile.am b/x11/libinput/files/patch-udev_Makefile.am
deleted file mode 100644
index 6572e9447b43..000000000000
--- a/x11/libinput/files/patch-udev_Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
---- udev/Makefile.am.orig	2017-02-11 05:10:33 UTC
-+++ udev/Makefile.am
-@@ -19,6 +19,7 @@ endif
- 
- libinput_model_quirks_SOURCES = libinput-model-quirks.c
- libinput_model_quirks_CFLAGS = \
-+			       -I$(top_srcdir)/include \
- 			       -I$(top_srcdir)/src \
- 			       $(LIBUDEV_CFLAGS) \
- 			       $(GCC_CFLAGS)
diff --git a/x11/libinput/pkg-descr b/x11/libinput/pkg-descr
index c49ab938858f..7b74c6f2a0c0 100644
--- a/x11/libinput/pkg-descr
+++ b/x11/libinput/pkg-descr
@@ -4,4 +4,4 @@ device handling, input device event processing and abstraction so
 minimize the amount of custom input code compositors need to provide
 the common set of functionality that users expect.
 
-WWW: http://www.freedesktop.org/wiki/Software/libinput/
+WWW: https://www.freedesktop.org/wiki/Software/libinput/
diff --git a/x11/libinput/pkg-plist b/x11/libinput/pkg-plist
index c1bccf3c871c..c3c712b3500e 100644
--- a/x11/libinput/pkg-plist
+++ b/x11/libinput/pkg-plist
@@ -1,14 +1,27 @@
-bin/libinput-debug-events
-bin/libinput-list-devices
+bin/libinput
 include/libinput.h
 lib/libinput.so
 lib/libinput.so.10
-lib/libinput.so.10.11.2
-lib/udev/hwdb.d/90-libinput-model-quirks.hwdb
-lib/udev/libinput-device-group
-lib/udev/libinput-model-quirks
-lib/udev/rules.d/80-libinput-device-groups.rules
-lib/udev/rules.d/90-libinput-model-quirks.rules
+lib/libinput.so.10.13.0
 libdata/pkgconfig/libinput.pc
+libexec/libinput/libinput-debug-events
+%%DEBUG_GUI%%libexec/libinput/libinput-debug-gui
+libexec/libinput/libinput-list-devices
+libexec/libinput/libinput-measure
+libexec/libinput/libinput-measure-fuzz
+libexec/libinput/libinput-measure-touch-size
+libexec/libinput/libinput-measure-touchpad-pressure
+libexec/libinput/libinput-measure-touchpad-tap
+libexec/libinput/libinput-measure-trackpoint-range
+libexec/libinput/libinput-replay
+man/man1/libinput.1.gz
 man/man1/libinput-debug-events.1.gz
+%%DEBUG_GUI%%man/man1/libinput-debug-gui.1.gz
 man/man1/libinput-list-devices.1.gz
+man/man1/libinput-measure.1.gz
+man/man1/libinput-measure-fuzz.1.gz
+man/man1/libinput-measure-touch-size.1.gz
+man/man1/libinput-measure-touchpad-pressure.1.gz
+man/man1/libinput-measure-touchpad-tap.1.gz
+man/man1/libinput-measure-trackpoint-range.1.gz
+man/man1/libinput-replay.1.gz
diff --git a/x11/libwacom/Makefile b/x11/libwacom/Makefile
index bc09daee54bc..f5a46c418d1a 100644
--- a/x11/libwacom/Makefile
+++ b/x11/libwacom/Makefile
@@ -2,10 +2,9 @@
 # $FreeBSD$
 
 PORTNAME=	libwacom
-PORTVERSION=	0.23
-PORTREVISION=	1
+PORTVERSION=	0.30
+DISTVERSIONPREFIX=libwacom-
 CATEGORIES=	x11
-MASTER_SITES=	https://sourceforge.net/projects/linuxwacom/files/libwacom/
 
 MAINTAINER=	[email protected]
 COMMENT=	Adds tablet support to libinput
@@ -13,9 +12,13 @@ COMMENT=	Adds tablet support to libinput
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/COPYING
 
+BUILD_DEPENDS=	${LOCALBASE}/include/linux/input.h:devel/evdev-proto
 LIB_DEPENDS=	libgudev-1.0.so:devel/libgudev
 
-USES=		gettext-runtime gmake libtool localbase pkgconfig \
+USE_GITHUB=	yes
+GH_ACCOUNT=	linuxwacom
+
+USES=		autoreconf gettext-runtime gmake libtool localbase pkgconfig \
 		pathfix tar:bzip2
 USE_GNOME=	glib20
 GNU_CONFIGURE=	yes
@@ -23,6 +26,6 @@ USE_LDCONFIG=	yes
 INSTALL_TARGET=	install-strip
 
 post-patch:
-	@${REINPLACE_CMD} -e 's/-printf "%P\\n"/-print0 | xargs -0 basename/' ${WRKSRC}/data/Makefile.in
+	@${REINPLACE_CMD} -e 's/-printf "%P\\n"/-print0 | xargs -0 basename/' ${WRKSRC}/data/Makefile.am
 
 .include <bsd.port.mk>
diff --git a/x11/libwacom/distinfo b/x11/libwacom/distinfo
index a77d835989e7..af9228daeaaa 100644
--- a/x11/libwacom/distinfo
+++ b/x11/libwacom/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1486412570
-SHA256 (libwacom-0.23.tar.bz2) = a08ac59ff26dbdf5888a6ad7bd97a66741807cda6bb1c7e7f299a555129c3162
-SIZE (libwacom-0.23.tar.bz2) = 473700
+TIMESTAMP = 1528549792
+SHA256 (linuxwacom-libwacom-libwacom-0.30_GH0.tar.gz) = 6ffba2c77af7cdb49db5d5ddef6d4c2cad95eea225288bcc2e37d10245be6278
+SIZE (linuxwacom-libwacom-libwacom-0.30_GH0.tar.gz) = 119261
diff --git a/x11/libwacom/pkg-plist b/x11/libwacom/pkg-plist
index efea85c7b54f..3e93ea0e756b 100644
--- a/x11/libwacom/pkg-plist
+++ b/x11/libwacom/pkg-plist
@@ -3,7 +3,7 @@ include/libwacom-1.0/libwacom/libwacom.h
 lib/libwacom.a
 lib/libwacom.so
 lib/libwacom.so.2
-lib/libwacom.so.2.5.1
+lib/libwacom.so.2.6.1
 libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/bamboo-0fg-s-p.tablet
 %%DATADIR%%/bamboo-16fg-m-pt.tablet
@@ -23,6 +23,8 @@ libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/bamboo-4fg-se-m-pt.tablet
 %%DATADIR%%/bamboo-4fg-se-s-pt.tablet
 %%DATADIR%%/bamboo-one.tablet
+%%DATADIR%%/bamboo-pad-wireless.tablet
+%%DATADIR%%/bamboo-pad.tablet
 %%DATADIR%%/cintiq-12wx.tablet
 %%DATADIR%%/cintiq-13hd.tablet
 %%DATADIR%%/cintiq-13hdt.tablet
@@ -38,11 +40,20 @@ libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/cintiq-companion-2.tablet
 %%DATADIR%%/cintiq-companion-hybrid.tablet
 %%DATADIR%%/cintiq-companion.tablet
+%%DATADIR%%/cintiq-pro-13.tablet
+%%DATADIR%%/cintiq-pro-16.tablet
+%%DATADIR%%/cintiq-pro-24-p.tablet
+%%DATADIR%%/cintiq-pro-24-pt.tablet
+%%DATADIR%%/cintiq-pro-32.tablet
+%%DATADIR%%/dell-canvas-27.tablet
 %%DATADIR%%/dtf-720.tablet
+%%DATADIR%%/dth-1152.tablet
 %%DATADIR%%/dth-2242.tablet
+%%DATADIR%%/dth-2452.tablet
 %%DATADIR%%/dti-520.tablet
 %%DATADIR%%/dtk-1651.tablet
 %%DATADIR%%/dtk-2241.tablet
+%%DATADIR%%/dtk-2451.tablet
 %%DATADIR%%/dtu-1031.tablet
 %%DATADIR%%/dtu-1031x.tablet
 %%DATADIR%%/dtu-1141.tablet
@@ -50,8 +61,13 @@ libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/dtu-1931.tablet
 %%DATADIR%%/dtu-2231.tablet
 %%DATADIR%%/ek-remote.tablet
+%%DATADIR%%/elan-22e2.tablet
+%%DATADIR%%/elan-2537.tablet
 %%DATADIR%%/generic.tablet
+%%DATADIR%%/graphire-usb.tablet
 %%DATADIR%%/graphire-wireless-8x6.tablet
+%%DATADIR%%/graphire2-4x5.tablet
+%%DATADIR%%/graphire2-5x7.tablet
 %%DATADIR%%/graphire3-4x5.tablet
 %%DATADIR%%/graphire3-6x8.tablet
 %%DATADIR%%/graphire4-4x5.tablet
@@ -63,13 +79,21 @@ libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/intuos-9x12.tablet
 %%DATADIR%%/intuos-m-p.tablet
 %%DATADIR%%/intuos-m-p2.tablet
+%%DATADIR%%/intuos-m-p3-wl.tablet
+%%DATADIR%%/intuos-m-p3.tablet
 %%DATADIR%%/intuos-m-pt.tablet
 %%DATADIR%%/intuos-m-pt2.tablet
+%%DATADIR%%/intuos-pro-2-l-wl.tablet
+%%DATADIR%%/intuos-pro-2-l.tablet
+%%DATADIR%%/intuos-pro-2-m-wl.tablet
+%%DATADIR%%/intuos-pro-2-m.tablet
 %%DATADIR%%/intuos-pro-l.tablet
 %%DATADIR%%/intuos-pro-m.tablet
 %%DATADIR%%/intuos-pro-s.tablet
 %%DATADIR%%/intuos-s-p.tablet
 %%DATADIR%%/intuos-s-p2.tablet
+%%DATADIR%%/intuos-s-p3-wl.tablet
+%%DATADIR%%/intuos-s-p3.tablet
 %%DATADIR%%/intuos-s-pt.tablet
 %%DATADIR%%/intuos-s-pt2.tablet
 %%DATADIR%%/intuos2-12x12.tablet
@@ -96,19 +120,49 @@ libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/intuos5-touch-s.tablet
 %%DATADIR%%/isdv4-100.tablet
 %%DATADIR%%/isdv4-101.tablet
+%%DATADIR%%/isdv4-104.tablet
 %%DATADIR%%/isdv4-10d.tablet
+%%DATADIR%%/isdv4-10e.tablet
 %%DATADIR%%/isdv4-10f.tablet
 %%DATADIR%%/isdv4-114.tablet
 %%DATADIR%%/isdv4-116.tablet
+%%DATADIR%%/isdv4-117.tablet
+%%DATADIR%%/isdv4-124.tablet
 %%DATADIR%%/isdv4-12c.tablet
 %%DATADIR%%/isdv4-4004.tablet
 %%DATADIR%%/isdv4-4800.tablet
+%%DATADIR%%/isdv4-4809.tablet
+%%DATADIR%%/isdv4-4814.tablet
+%%DATADIR%%/isdv4-481a.tablet
+%%DATADIR%%/isdv4-4822.tablet
+%%DATADIR%%/isdv4-4824.tablet
+%%DATADIR%%/isdv4-4831.tablet
+%%DATADIR%%/isdv4-484c.tablet
+%%DATADIR%%/isdv4-485e.tablet
 %%DATADIR%%/isdv4-5000.tablet
 %%DATADIR%%/isdv4-5002.tablet
+%%DATADIR%%/isdv4-5010.tablet
+%%DATADIR%%/isdv4-5013.tablet
+%%DATADIR%%/isdv4-5014.tablet
+%%DATADIR%%/isdv4-503e.tablet
+%%DATADIR%%/isdv4-503f.tablet
 %%DATADIR%%/isdv4-5040.tablet
+%%DATADIR%%/isdv4-5044.tablet
+%%DATADIR%%/isdv4-5048.tablet
 %%DATADIR%%/isdv4-504a.tablet
+%%DATADIR%%/isdv4-5090.tablet
+%%DATADIR%%/isdv4-5099.tablet
+%%DATADIR%%/isdv4-509d.tablet
+%%DATADIR%%/isdv4-50b4.tablet
+%%DATADIR%%/isdv4-50b6.tablet
+%%DATADIR%%/isdv4-50b8.tablet
+%%DATADIR%%/isdv4-50f1.tablet
+%%DATADIR%%/isdv4-50f8.tablet
+%%DATADIR%%/isdv4-5110.tablet
+%%DATADIR%%/isdv4-5146.tablet
 %%DATADIR%%/isdv4-90.tablet
 %%DATADIR%%/isdv4-93.tablet
+%%DATADIR%%/isdv4-e2.tablet
 %%DATADIR%%/isdv4-e3.tablet
 %%DATADIR%%/isdv4-e5.tablet
 %%DATADIR%%/isdv4-e6.tablet
@@ -120,5 +174,8 @@ libdata/pkgconfig/libwacom.pc
 %%DATADIR%%/mobilestudio-pro-16.tablet
 %%DATADIR%%/n-trig-pen.tablet
 %%DATADIR%%/one-by-wacom-m-p.tablet
+%%DATADIR%%/one-by-wacom-m-p2.tablet
 %%DATADIR%%/one-by-wacom-s-p.tablet
+%%DATADIR%%/one-by-wacom-s-p2.tablet
 %%DATADIR%%/serial-wacf004.tablet
+%%DATADIR%%/xp-pen-star03.tablet
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.