2024-05-24 11:26:18

by José Expósito

[permalink] [raw]
Subject: [PATCH 0/2] Improve HUION Kamvas Pro 24 support

This series includes 2 patches to improve support for the HUION Kamvas
Pro 24. See [1] and [2] for additional context.

[1] https://gitlab.freedesktop.org/libinput/libinput/-/issues/989
[2] https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/989

José Expósito (2):
HID: uclogic: Support HUION devices with up to 20 buttons
HID: uclogic: Use Rx and Ry for touch strips

drivers/hid/hid-uclogic-rdesc.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

--
2.45.1



2024-05-24 11:26:30

by José Expósito

[permalink] [raw]
Subject: [PATCH 1/2] HID: uclogic: Support HUION devices with up to 20 buttons

The HID descriptor for HUION tablets was limited to 13 buttons. However,
there are devices with more buttons in their frames.

So far, the device with more buttons released by HUION is the Huion
Kamvas Pro 24 (GT-240, QHD) [1], with 20 buttons.

Tweak the HID descriptor to support it.

Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/989 [1]
Signed-off-by: José Expósito <[email protected]>
---
drivers/hid/hid-uclogic-rdesc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/hid-uclogic-rdesc.c b/drivers/hid/hid-uclogic-rdesc.c
index b6dfdf6356a6..7cbd673747a5 100644
--- a/drivers/hid/hid-uclogic-rdesc.c
+++ b/drivers/hid/hid-uclogic-rdesc.c
@@ -689,10 +689,10 @@ const size_t uclogic_rdesc_v2_pen_template_size =
0xA0, /* Collection (Physical), */ \
0x05, 0x09, /* Usage Page (Button), */ \
0x19, 0x01, /* Usage Minimum (01h), */ \
- 0x29, 0x03, /* Usage Maximum (03h), */ \
- 0x95, 0x03, /* Report Count (3), */ \
+ 0x29, 0x0A, /* Usage Maximum (0Ah), */ \
+ 0x95, 0x0A, /* Report Count (10), */ \
0x81, 0x02, /* Input (Variable), */ \
- 0x95, ((_size) * 8 - 45), \
+ 0x95, ((_size) * 8 - 52), \
/* Report Count (padding), */ \
0x81, 0x01, /* Input (Constant), */ \
0xC0, /* End Collection, */ \
--
2.45.1


2024-05-24 11:26:43

by José Expósito

[permalink] [raw]
Subject: [PATCH 2/2] HID: uclogic: Use Rx and Ry for touch strips

Currently, HUION devices use ABS_WHEEL as the usage for touch strips.

There are 2 main issues with this approach:

The first one is that the descriptor for touch rings
(uclogic_rdesc_v2_frame_touch_ring_arr) also uses ABS_WHEEL.
From user-space it is impossible to know which device sends the events.

The second one is that Wacom uses ABS_RX/ABS_RY to notify events from
touch strips and user-space was designed to handle those axes.

Change the usage of touch strips to Rx/Ry to fix both issues.

Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/989
Signed-off-by: José Expósito <[email protected]>
---
drivers/hid/hid-uclogic-rdesc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/hid/hid-uclogic-rdesc.c b/drivers/hid/hid-uclogic-rdesc.c
index 7cbd673747a5..dfd74a043b39 100644
--- a/drivers/hid/hid-uclogic-rdesc.c
+++ b/drivers/hid/hid-uclogic-rdesc.c
@@ -789,7 +789,8 @@ const __u8 uclogic_rdesc_v2_frame_touch_strip_arr[] = {
0x95, 0x01, /* Report Count (1), */
0x81, 0x02, /* Input (Variable), */
0x05, 0x01, /* Usage Page (Desktop), */
- 0x09, 0x38, /* Usage (Wheel), */
+ 0x09, 0x33, /* Usage (Rx), */
+ 0x09, 0x34, /* Usage (Ry), */
0x95, 0x01, /* Report Count (1), */
0x15, 0x00, /* Logical Minimum (0), */
0x25, 0x07, /* Logical Maximum (7), */
--
2.45.1


2024-06-04 08:13:44

by Jiri Kosina

[permalink] [raw]
Subject: Re: [PATCH 0/2] Improve HUION Kamvas Pro 24 support

On Fri, 24 May 2024, José Expósito wrote:

> This series includes 2 patches to improve support for the HUION Kamvas
> Pro 24. See [1] and [2] for additional context.
>
> [1] https://gitlab.freedesktop.org/libinput/libinput/-/issues/989
> [2] https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/989
>
> José Expósito (2):
> HID: uclogic: Support HUION devices with up to 20 buttons
> HID: uclogic: Use Rx and Ry for touch strips

Applied, thanks José.

--
Jiri Kosina
SUSE Labs