Skip to content

Conversation

@InfinityGhost
Copy link
Member

Rewrote generate-rules.sh to use jq gawk and tr

@InfinityGhost InfinityGhost added enhancement New feature or request linux/gtk Affects the Linux platform ci Affects CI labels Oct 20, 2023
@InfinityGhost InfinityGhost requested a review from X9VoiD October 20, 2023 20:37
@InfinityGhost InfinityGhost changed the title Packaging/generate udev rules Rewrite udev rule generation Oct 20, 2023
Copy link
Member

@X9VoiD X9VoiD left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some distro packages and/or packaging scripts might need to be updated to reflect new build time requirements. Not necessarily needed to be addressed in this PR, just taking a note of it.

@gonX
Copy link
Member

gonX commented Oct 20, 2023

diff from 43c350e

--- /tmp/tmp.1frkEfhP8b/usr/lib/udev/rules.d/70-opentabletdriver.rules	2023-10-20 22:59:17.000000000 +0200
+++ 70-opentabletdriver.rules	2023-10-20 23:00:56.000000000 +0200
@@ -1,6 +1,4 @@
-/home/gonx/prog/pkgbuild/opentabletdriver-git/src/OpenTabletDriver/OpenTabletDriver.Desktop/Interop/Input/MacOSVirtualMouse.cs(71,66): warning CS8629: Nullable value type may be null. [/home/gonx/prog/pkgbuild/opentabletdriver-git/src/OpenTabletDriver/OpenTabletDriver.Desktop/OpenTabletDriver.Desktop.csproj]
-# Dynamically generated with the OpenTabletDriver.udev tool. https://github.com/OpenTabletDriver/OpenTabletDriver
-KERNEL=="js[0-9]*", SUBSYSTEM=="input", ATTRS{name}=="OpenTabletDriver Virtual Tablet", RUN+="/usr/bin/env rm %E{DEVNAME}"
+# OpenTabletDriver udev rules generated by eng/linux/generate-rules.sh
 KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", TAG+="udev-acl"
 # Genius G-Pen 560
 KERNEL=="hidraw*", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="5003", TAG+="uaccess", TAG+="udev-acl"
@@ -269,7 +267,6 @@
 # Wacom CTL-4100WL
 KERNEL=="hidraw*", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0376", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0376", TAG+="uaccess", TAG+="udev-acl"
-# Wacom CTL-4100WL
 KERNEL=="hidraw*", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0377", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0377", TAG+="uaccess", TAG+="udev-acl"
 # Wacom CTL-6100WL
@@ -315,7 +312,7 @@
 KERNEL=="hidraw*", ATTRS{idVendor}=="0b57", ATTRS{idProduct}=="9091", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="0b57", ATTRS{idProduct}=="9091", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="0b57", ATTRS{idProduct}=="9091", ENV{LIBINPUT_IGNORE_DEVICE}="1"
-# Waltop Slim Tablet 5.8"
+# Waltop Slim Tablet 5.8
 KERNEL=="hidraw*", ATTRS{idVendor}=="172f", ATTRS{idProduct}=="0032", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="172f", ATTRS{idProduct}=="0032", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="172f", ATTRS{idProduct}=="0032", ENV{LIBINPUT_IGNORE_DEVICE}="1"
@@ -323,6 +320,9 @@
 KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0061", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0061", TAG+="uaccess", TAG+="udev-acl"
 # Gaomon 1060 Pro
+KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0064", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0064", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0064", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Gaomon M6
 # Huion H1060P
 # Huion H1161
@@ -336,14 +336,14 @@
 # Huion HS610
 # Huion RTE-100
 # Huion RTM-500
-KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0064", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0064", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0064", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Huion H641P
 KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0066", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0066", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="0066", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Artisul A1201
+KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006d", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006d", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006d", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Gaomon 1060 Pro
 # Gaomon GM156HD
 # Gaomon M106K Pro
@@ -391,10 +391,10 @@
 # Huion Q620M
 # Huion RDS-160
 # Huion RTM-500
-KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006d", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006d", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006d", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Gaomon 1060 Pro
+KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Gaomon M106K
 # Gaomon M10K
 # Gaomon PD1560
@@ -427,18 +427,15 @@
 # Huion WH1409
 # Huion WH1409 V2
 # Monoprice 10594
-KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006e", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Gaomon M106K Pro
+KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", TAG+="uaccess", TAG+="udev-acl"
+SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Gaomon M1230
 # Gaomon S620
 # Huion H320M
 # Huion H430P
 # Huion HS611
-KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", TAG+="uaccess", TAG+="udev-acl"
-SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # XP-Pen Artist 13.3
 KERNEL=="hidraw*", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="000b", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="000b", TAG+="uaccess", TAG+="udev-acl"
@@ -464,11 +461,11 @@
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0071", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0071", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # XP-Pen Star G430
-# XP-Pen Star G430S
-# XP-Pen Star G540
 KERNEL=="hidraw*", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0075", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0075", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0075", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# XP-Pen Star G430S
+# XP-Pen Star G540
 # XP-Pen Star 06
 KERNEL=="hidraw*", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0078", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0078", TAG+="uaccess", TAG+="udev-acl"
@@ -498,10 +495,10 @@
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0904", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0904", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # XP-Pen Deco 01 V2
-# XP-Pen Deco 01 V2 (variant 2)
 KERNEL=="hidraw*", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0905", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0905", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0905", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# XP-Pen Deco 01 V2 (variant 2)
 # XP-Pen Star G640S
 KERNEL=="hidraw*", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0906", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="0906", TAG+="uaccess", TAG+="udev-acl"
@@ -646,25 +643,25 @@
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2d80", ATTRS{idProduct}=="6001", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2d80", ATTRS{idProduct}=="6001", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # VEIKK S640
-# VEIKK S640 V2
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0001", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0001", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0001", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# VEIKK S640 V2
 # VEIKK A30
-# VEIKK A30 V2
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0002", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0002", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0002", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# VEIKK A30 V2
 # VEIKK A50
-# VEIKK A50 V2
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0003", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0003", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0003", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# VEIKK A50 V2
 # VEIKK A15
-# VEIKK A15 V2
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0004", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0004", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0004", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# VEIKK A15 V2
 # VEIKK VK640
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0005", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0005", TAG+="uaccess", TAG+="udev-acl"
@@ -678,10 +675,10 @@
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0008", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0008", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # VEIKK VK430
-# VEIKK VK430 V2
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0009", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0009", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="0009", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# VEIKK VK430 V2
 # VEIKK Viola (VO1060)
 KERNEL=="hidraw*", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="000b", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="2feb", ATTRS{idProduct}=="000b", TAG+="uaccess", TAG+="udev-acl"
@@ -702,11 +699,11 @@
 SUBSYSTEM=="usb", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0054", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0054", ENV{LIBINPUT_IGNORE_DEVICE}="1"
 # Artisul M0610 Pro
-# UC-Logic 1060N
-# UGTABLET M708
 KERNEL=="hidraw*", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0081", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0081", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0081", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+# UC-Logic 1060N
+# UGTABLET M708
 # Acepen AP 1060
 KERNEL=="hidraw*", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0082", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="5543", ATTRS{idProduct}=="0082", TAG+="uaccess", TAG+="udev-acl"

Summed up:

Also mangles names (Waltop Slim Tablet 5.8"), which is fine.

@gonX gonX added the meta Dotfiles, scripts or Github files label Oct 20, 2023
Copy link
Member

@gonX gonX left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're missing KERNEL=="js[0-9]*", SUBSYSTEM=="input", ATTRS{name}=="OpenTabletDriver Virtual Tablet", RUN+="/usr/bin/env rm %E{DEVNAME}" in rules.

Also note that comment ordering seems different - please double check that they're commented to the appropriate convention, e.g.:

# Tablet One
# Tablet Two
<rule for Tablet One and Two>

and not

# Tablet One
<rule for Tablet One and Two>
# Tablet Two

I noted that e.g. UGTABLET M708 seems to exhibit the latter behavior.

@InfinityGhost InfinityGhost force-pushed the packaging/generate-udev-rules branch from 03660c3 to 55dd310 Compare October 23, 2023 03:15
@gonX
Copy link
Member

gonX commented Oct 24, 2023

updated diff after 55dd310

--- usr/lib/udev/rules.d/70-opentabletdriver.rules	2023-10-24 17:58:32.000000000 +0200
+++ ../tmp.IsuIGbBz1s/usr/lib/udev/rules.d/70-opentabletdriver.rules	2023-10-24 17:55:05.000000000 +0200
@@ -1,7 +1,6 @@
-/home/gonx/prog/pkgbuild/opentabletdriver-git/src/OpenTabletDriver/OpenTabletDriver.Desktop/Interop/Input/MacOSVirtualMouse.cs(71,66): warning CS8629: Nullable value type may be null. [/home/gonx/prog/pkgbuild/opentabletdriver-git/src/OpenTabletDriver/OpenTabletDriver.Desktop/OpenTabletDriver.Desktop.csproj]
-# Dynamically generated with the OpenTabletDriver.udev tool. https://github.com/OpenTabletDriver/OpenTabletDriver
-KERNEL=="js[0-9]*", SUBSYSTEM=="input", ATTRS{name}=="OpenTabletDriver Virtual Tablet", RUN+="/usr/bin/env rm %E{DEVNAME}"
+# OpenTabletDriver udev rules (https://github.com/OpenTabletDriver/OpenTabletDriver)
 KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", TAG+="udev-acl"
+KERNEL=="js[0-9]*", SUBSYSTEM=="input", ATTRS{name}=="OpenTabletDriver Virtual Tablet", RUN+="/usr/bin/env rm %E{DEVNAME}"
 # Genius G-Pen 560
 KERNEL=="hidraw*", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="5003", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="5003", TAG+="uaccess", TAG+="udev-acl"
@@ -315,7 +314,7 @@
 KERNEL=="hidraw*", ATTRS{idVendor}=="0b57", ATTRS{idProduct}=="9091", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="0b57", ATTRS{idProduct}=="9091", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="0b57", ATTRS{idProduct}=="9091", ENV{LIBINPUT_IGNORE_DEVICE}="1"
-# Waltop Slim Tablet 5.8"
+# Waltop Slim Tablet 5.8
 KERNEL=="hidraw*", ATTRS{idVendor}=="172f", ATTRS{idProduct}=="0032", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="usb", ATTRS{idVendor}=="172f", ATTRS{idProduct}=="0032", TAG+="uaccess", TAG+="udev-acl"
 SUBSYSTEM=="input", ATTRS{idVendor}=="172f", ATTRS{idProduct}=="0032", ENV{LIBINPUT_IGNORE_DEVICE}="1"

Approving aside from the 1 change I've suggested a few minutes ago. I don't really care about the Waltop name being mangled.

Co-authored-by: Sebastian Jensen <gonx@gonx.dk>
@X9VoiD X9VoiD merged commit b996c8f into OpenTabletDriver:master Oct 24, 2023
@X9VoiD X9VoiD added the needs-backport PR or its features needs to be backported to stable branch label Dec 10, 2023
@X9VoiD X9VoiD removed the needs-backport PR or its features needs to be backported to stable branch label Dec 10, 2023
@gonX gonX added backport-added A backport is already merged packaging Build scripts and removed meta Dotfiles, scripts or Github files labels Oct 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-added A backport is already merged ci Affects CI enhancement New feature or request linux/gtk Affects the Linux platform packaging Build scripts

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants