Discussion:
[Linuxwacom-devel] [PATCH libwacom] tools: add a quirk for the HUION Consumer Control device in the udev rules
Peter Hutterer
2016-04-01 00:44:00 UTC
Permalink
These devices have the same VID/PID as the tablet devices but are effectively
keyboards. Labelling them as tablets causes a libinput crash (fixed in
libinput with 1.2.1-5-g5d904b6).

https://bugzilla.redhat.com/show_bug.cgi?id=1314955

Signed-off-by: Peter Hutterer <***@who-t.net>
---
tools/generate-udev-rules.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/tools/generate-udev-rules.c b/tools/generate-udev-rules.c
index 338ab82..87d43fe 100644
--- a/tools/generate-udev-rules.c
+++ b/tools/generate-udev-rules.c
@@ -52,6 +52,17 @@ static void print_udev_header (void)
printf ("\n");
}

+static void print_huion_quirk (void)
+{
+ /* Huion tablets have a "consumer control" device with the same
+ * VID/PID as the tablet but only a few buttons and no axes.
+ *
+ */
+ printf("# HUION consumer control devices are not tablets.\n");
+ printf("ATTRS{name}==\"HUION * Consumer Control\", GOTO=\"libwacom_end\"\n");
+ printf ("\n");
+}
+
static char * generate_device_match(WacomDevice *device, const WacomMatch *match)
{
WacomBusType type = libwacom_match_get_bustype (match);
@@ -208,6 +219,7 @@ int main(int argc, char **argv)
}

print_udev_header ();
+ print_huion_quirk ();
for (p = list; *p; p++)
print_udev_entry ((WacomDevice *) *p, WBUSTYPE_USB);
--
2.5.0
Peter Hutterer
2016-04-13 23:43:26 UTC
Permalink
Post by Peter Hutterer
These devices have the same VID/PID as the tablet devices but are effectively
keyboards. Labelling them as tablets causes a libinput crash (fixed in
libinput with 1.2.1-5-g5d904b6).
https://bugzilla.redhat.com/show_bug.cgi?id=1314955
ping? going once, twice, ....

Cheers,
Peter
Post by Peter Hutterer
---
tools/generate-udev-rules.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tools/generate-udev-rules.c b/tools/generate-udev-rules.c
index 338ab82..87d43fe 100644
--- a/tools/generate-udev-rules.c
+++ b/tools/generate-udev-rules.c
@@ -52,6 +52,17 @@ static void print_udev_header (void)
printf ("\n");
}
+static void print_huion_quirk (void)
+{
+ /* Huion tablets have a "consumer control" device with the same
+ * VID/PID as the tablet but only a few buttons and no axes.
+ *
+ */
+ printf("# HUION consumer control devices are not tablets.\n");
+ printf("ATTRS{name}==\"HUION * Consumer Control\", GOTO=\"libwacom_end\"\n");
+ printf ("\n");
+}
+
static char * generate_device_match(WacomDevice *device, const WacomMatch *match)
{
WacomBusType type = libwacom_match_get_bustype (match);
@@ -208,6 +219,7 @@ int main(int argc, char **argv)
}
print_udev_header ();
+ print_huion_quirk ();
for (p = list; *p; p++)
print_udev_entry ((WacomDevice *) *p, WBUSTYPE_USB);
--
2.5.0
Ping Cheng
2016-04-14 00:43:02 UTC
Permalink
On Thu, Mar 31, 2016 at 5:44 PM, Peter Hutterer
Post by Peter Hutterer
These devices have the same VID/PID as the tablet devices but are effectively
keyboards. Labelling them as tablets causes a libinput crash (fixed in
libinput with 1.2.1-5-g5d904b6).
https://bugzilla.redhat.com/show_bug.cgi?id=1314955
---
tools/generate-udev-rules.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tools/generate-udev-rules.c b/tools/generate-udev-rules.c
index 338ab82..87d43fe 100644
--- a/tools/generate-udev-rules.c
+++ b/tools/generate-udev-rules.c
@@ -52,6 +52,17 @@ static void print_udev_header (void)
printf ("\n");
}
+static void print_huion_quirk (void)
+{
+ /* Huion tablets have a "consumer control" device with the same
+ * VID/PID as the tablet but only a few buttons and no axes.
Is that the same as Wacom Expresskey Remote, the expresskey only device?
Post by Peter Hutterer
+ *
+ */
+ printf("# HUION consumer control devices are not tablets.\n");
Don't we allow the buttons to be configured later?

I don't have the device. So, I'm trying to see the whole picture...

Cheers,

Ping
Post by Peter Hutterer
+ printf("ATTRS{name}==\"HUION * Consumer Control\", GOTO=\"libwacom_end\"\n");
+ printf ("\n");
+}
+
static char * generate_device_match(WacomDevice *device, const WacomMatch *match)
{
WacomBusType type = libwacom_match_get_bustype (match);
@@ -208,6 +219,7 @@ int main(int argc, char **argv)
}
print_udev_header ();
+ print_huion_quirk ();
for (p = list; *p; p++)
print_udev_entry ((WacomDevice *) *p, WBUSTYPE_USB);
--
2.5.0
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Linuxwacom-devel mailing list
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
Peter Hutterer
2016-04-14 03:28:19 UTC
Permalink
Post by Ping Cheng
On Thu, Mar 31, 2016 at 5:44 PM, Peter Hutterer
Post by Peter Hutterer
These devices have the same VID/PID as the tablet devices but are effectively
keyboards. Labelling them as tablets causes a libinput crash (fixed in
libinput with 1.2.1-5-g5d904b6).
https://bugzilla.redhat.com/show_bug.cgi?id=1314955
---
tools/generate-udev-rules.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tools/generate-udev-rules.c b/tools/generate-udev-rules.c
index 338ab82..87d43fe 100644
--- a/tools/generate-udev-rules.c
+++ b/tools/generate-udev-rules.c
@@ -52,6 +52,17 @@ static void print_udev_header (void)
printf ("\n");
}
+static void print_huion_quirk (void)
+{
+ /* Huion tablets have a "consumer control" device with the same
+ * VID/PID as the tablet but only a few buttons and no axes.
Is that the same as Wacom Expresskey Remote, the expresskey only device?
no, it's afaict an device for the routing of macros (?) and it doesn't
correspond to any physical device.
Post by Ping Cheng
Post by Peter Hutterer
+ *
+ */
+ printf("# HUION consumer control devices are not tablets.\n");
Don't we allow the buttons to be configured later?
I don't have the device. So, I'm trying to see the whole picture...
I don't actually know how to trigger events on that, so far no one's
reported any events coming out of that device :)
Benjamin has one, maybe he can test it but I suspect it corresponds to a hid
collection the device announces.

Cheers,
Peter
Post by Ping Cheng
Post by Peter Hutterer
+ printf("ATTRS{name}==\"HUION * Consumer Control\", GOTO=\"libwacom_end\"\n");
+ printf ("\n");
+}
+
static char * generate_device_match(WacomDevice *device, const WacomMatch *match)
{
WacomBusType type = libwacom_match_get_bustype (match);
@@ -208,6 +219,7 @@ int main(int argc, char **argv)
}
print_udev_header ();
+ print_huion_quirk ();
for (p = list; *p; p++)
print_udev_entry ((WacomDevice *) *p, WBUSTYPE_USB);
--
2.5.0
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Linuxwacom-devel mailing list
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
Ping Cheng
2016-04-14 17:30:46 UTC
Permalink
On Wed, Apr 13, 2016 at 8:28 PM, Peter Hutterer
Post by Peter Hutterer
Post by Ping Cheng
On Thu, Mar 31, 2016 at 5:44 PM, Peter Hutterer
Post by Peter Hutterer
These devices have the same VID/PID as the tablet devices but are effectively
keyboards. Labelling them as tablets causes a libinput crash (fixed in
libinput with 1.2.1-5-g5d904b6).
https://bugzilla.redhat.com/show_bug.cgi?id=1314955
---
tools/generate-udev-rules.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tools/generate-udev-rules.c b/tools/generate-udev-rules.c
index 338ab82..87d43fe 100644
--- a/tools/generate-udev-rules.c
+++ b/tools/generate-udev-rules.c
@@ -52,6 +52,17 @@ static void print_udev_header (void)
printf ("\n");
}
+static void print_huion_quirk (void)
+{
+ /* Huion tablets have a "consumer control" device with the same
+ * VID/PID as the tablet but only a few buttons and no axes.
Is that the same as Wacom Expresskey Remote, the expresskey only device?
no, it's afaict an device for the routing of macros (?) and it doesn't
correspond to any physical device.
Post by Ping Cheng
Post by Peter Hutterer
+ *
+ */
+ printf("# HUION consumer control devices are not tablets.\n");
Don't we allow the buttons to be configured later?
I don't have the device. So, I'm trying to see the whole picture...
I don't actually know how to trigger events on that, so far no one's
reported any events coming out of that device :)
Benjamin has one, maybe he can test it but I suspect it corresponds to a hid
collection the device announces.
If it is just a fake tablet, let's make sure it won't take the stage ;-).

Thank you for fixing the issue. The patch is

Reviewed-by: Ping Cheng <***@wacom.com>

Ping
Post by Peter Hutterer
Post by Ping Cheng
Post by Peter Hutterer
+ printf("ATTRS{name}==\"HUION * Consumer Control\", GOTO=\"libwacom_end\"\n");
+ printf ("\n");
+}
+
static char * generate_device_match(WacomDevice *device, const WacomMatch *match)
{
WacomBusType type = libwacom_match_get_bustype (match);
@@ -208,6 +219,7 @@ int main(int argc, char **argv)
}
print_udev_header ();
+ print_huion_quirk ();
for (p = list; *p; p++)
print_udev_entry ((WacomDevice *) *p, WBUSTYPE_USB);
--
2.5.0
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Linuxwacom-devel mailing list
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
Loading...