linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Чапля Иван" <87554y23210@gmail.com>
To: linux-input@vger.kernel.org
Subject: [Bug Report] Libwacom broken user space
Date: Tue, 28 Oct 2025 17:13:23 +0300	[thread overview]
Message-ID: <CAADDCK7SgZvOdpoPMwBGQp=bFTQsrD8fTaj7KpDGfCKMUPd_zA@mail.gmail.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 6995 bytes --]

[libwacom](https://github.com/linuxwacom/libwacom)  is a library to
identify graphics tablets and their model-specific features. It provides
easy access to information such as "is this a built-in-screen tablet",
"what is the size of this model", etc. libwacom is currently used by GUI
toolkits (GNOME, KDE, others?) to map built-in tablets to the correct
screen and by libinput to determine configuration options such as the
left-handed settings. SVG layout files are used to describe the tablet
visually.
Until recently, this library worked perfectly fine. I have a GAOMON S620
graphics tablet that used to work correctly some time ago. I decided to use
it now, and it turned out that I can no longer use the buttons on it; they
simply don't work. This functionality is handled precisely by the libwacom
library. The configuration for each device in this library is stored in a
static .tablet file. Such a file exists for my tablet as well and looks
like this:

```
[Device]
Name=GAOMON S620
ModelName=
DeviceMatch=usb|256c|006d|GAOMON Gaomon Tablet Pen;usb|256c|006d|GAOMON
Gaomon Tablet Pad;usb|256c|006d|GAOMON Gaomon Tablet
Pen|OEM02_T18e;usb|256c|006d|GAOMON Gaomon Tablet Pad|OEM02_T18e;
Width=6
Height=4
Layout=gaomon-s620.svg
IntegratedIn=
Styli=@generic-no-eraser;

[Features]
Stylus=true
Reversible=true

[Buttons]
Left=A;B;C;D
EvdevCodes=BTN_0;BTN_1;BTN_2;BTN_3
```

But for some reason, the library no longer recognizes it.
`libwacom-list-local-devices` output:
```
/dev/input/event8 (usb:256c:006d - "GAOMON Gaomon Tablet Dial") is a tablet
but not supported by libwacom
/dev/input/event7 (usb:256c:006d - "GAOMON Gaomon Tablet Touch Strip") is a
tablet but not supported by libwacom
/dev/input/event6 (usb:256c:006d - "GAOMON Gaomon Tablet") is a tablet but
not supported by libwacom
/dev/input/event5 (usb:256c:006d - "GAOMON Gaomon Tablet") is a tablet but
not supported by libwacom
Failed to find any devices known to libwacom.
```

The library retrieves device information from the `/proc/bus/input/devices`
file. I tested the tablet's functionality on various kernel versions and
obtained the following results:

- 6.17.4 problem occurs
- 6.16.12 problem occurs
- 6.15.10 problem occurs
- 6.14.11 problem occurs
- 6.14.8 problem occurs
- 6.14.7 marked as "obsolete" in fedora koji, unable to install
- 6.14.6 problem do not occurs

`cat /proc/bus/input/devices` output when tablet is broken:

```
I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input8
U: Uniq=OEM02_T18e_200919
H: Handlers=mouse2 event5
B: PROP=1
B: EV=1b
B: KEY=1c01 0 0 0 0 0
B: ABS=d000003
B: MSC=10


I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input9
U: Uniq=OEM02_T18e_200919
H: Handlers=event6 js0
B: PROP=0
B: EV=1b
B: KEY=800 201ff 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Touch Strip"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input10
U: Uniq=OEM02_T18e_200919
H: Handlers=event7 js1
B: PROP=0
B: EV=b
B: KEY=1 0 0 0 0
B: ABS=1000000001b

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Dial"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input11
U: Uniq=OEM02_T18e_200919
H: Handlers=mouse3 event8 js2
B: PROP=0
B: EV=1f
B: KEY=1 0 0 0 0
B: REL=900
B: ABS=10000000003
B: MSC=10
```

`cat /proc/bus/input/devices` output when tablet works fine:
```
I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Pen"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0004/input/input11
U: Uniq=OEM02_T18e_200919
H: Handlers=mouse2 event8
B: PROP=1
B: EV=1b
B: KEY=1c01 0 0 0 0 0
B: ABS=d000003
B: MSC=10

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Pad"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0004/input/input12
U: Uniq=OEM02_T18e_200919
H: Handlers=event9 js0
B: PROP=0
B: EV=1b
B: KEY=800 3ff0000000003ff 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Touch Strip"
P: Phys=usb-0000:00:1d.0-1.5/input0
S:
Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0004/input/input13
U: Uniq=OEM02_T18e_200919
H: Handlers=event10 js1
B: PROP=0
B: EV=b
B: KEY=1 0 0 0 0
B: ABS=1000000001b

```

It turns out that for some reason, the pen and pad parameters necessary for
identifying the device are now missing from this file. Simply replacing the
old names `GAOMON Gaomon Tablet Pen` and `GAOMON Gaomon Tablet Pad` with
the new `GAOMON Gaomon Tablet` in the configuration didn't solve the
problem. It leads to the recognition of the tablet
```
devices:
  - name: 'GAOMON S620'
    bus: 'usb'
    vid: 0x256c
    pid: 0x006d
    nodes:
      - /dev/input/event11: 'GAOMON Gaomon Tablet Dial'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []
  - name: 'GAOMON S620'
    bus: 'usb'
    vid: 0x256c
    pid: 0x006d
    nodes:
      - /dev/input/event10: 'GAOMON Gaomon Tablet Touch Strip'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []
  - name: 'GAOMON S620'
    bus: 'usb'
    vid: 0x256c
    pid: 0x006d
    nodes:
      - /dev/input/event9: 'GAOMON Gaomon Tablet'
      - /dev/input/event8: 'GAOMON Gaomon Tablet'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []

```
Although an option to assign key combinations for the tablet buttons now
appears, the physical buttons themselves are not detected and do not react
when pressed.

For some reason, starting after version 6.14.6, the pen and pad pointers
disappear during device initialization. There is also at least one other
known case of the [same issue](
https://github.com/linuxwacom/libwacom/issues/914). Unlike me, the user's
problem no longer occurs after renaming DeviceMatch. I have also opened an
[issue](https://github.com/linuxwacom/libwacom/issues/928) on libwacom's
GitHub.

I'm not a programmer, just an end user, I do not know how to write code or
solve problems of such type. So I would be grateful for your help

[-- Attachment #1.2: Type: text/html, Size: 8261 bytes --]

[-- Attachment #2: libwacom broken user space.html --]
[-- Type: text/html, Size: 15601 bytes --]

[-- Attachment #3: libwacom broken user space.pdf --]
[-- Type: application/pdf, Size: 38022 bytes --]

[-- Attachment #4: libwacom broken user space.md --]
[-- Type: text/markdown, Size: 7028 bytes --]

# [bug] Libwacom broken user space
[libwacom](https://github.com/linuxwacom/libwacom)  is a library to identify graphics tablets and their model-specific features. It provides easy access to information such as "is this a built-in-screen tablet", "what is the size of this model", etc. libwacom is currently used by GUI toolkits (GNOME, KDE, others?) to map built-in tablets to the correct screen and by libinput to determine configuration options such as the left-handed settings. SVG layout files are used to describe the tablet visually.
Until recently, this library worked perfectly fine. I have a GAOMON S620 graphics tablet that used to work correctly some time ago. I decided to use it now, and it turned out that I can no longer use the buttons on it; they simply don't work. This functionality is handled precisely by the libwacom library. The configuration for each device in this library is stored in a static .tablet file. Such a file exists for my tablet as well and looks like this:

```
[Device]
Name=GAOMON S620
ModelName=
DeviceMatch=usb|256c|006d|GAOMON Gaomon Tablet Pen;usb|256c|006d|GAOMON Gaomon Tablet Pad;usb|256c|006d|GAOMON Gaomon Tablet Pen|OEM02_T18e;usb|256c|006d|GAOMON Gaomon Tablet Pad|OEM02_T18e;
Width=6
Height=4
Layout=gaomon-s620.svg
IntegratedIn=
Styli=@generic-no-eraser;

[Features]
Stylus=true
Reversible=true

[Buttons]
Left=A;B;C;D
EvdevCodes=BTN_0;BTN_1;BTN_2;BTN_3
```

But for some reason, the library no longer recognizes it.
`libwacom-list-local-devices` output:
```
/dev/input/event8 (usb:256c:006d - "GAOMON Gaomon Tablet Dial") is a tablet but not supported by libwacom
/dev/input/event7 (usb:256c:006d - "GAOMON Gaomon Tablet Touch Strip") is a tablet but not supported by libwacom
/dev/input/event6 (usb:256c:006d - "GAOMON Gaomon Tablet") is a tablet but not supported by libwacom
/dev/input/event5 (usb:256c:006d - "GAOMON Gaomon Tablet") is a tablet but not supported by libwacom
Failed to find any devices known to libwacom.
```

The library retrieves device information from the `/proc/bus/input/devices` file. I tested the tablet's functionality on various kernel versions and obtained the following results:

- 6.17.4 problem occurs
- 6.16.12 problem occurs
- 6.15.10 problem occurs
- 6.14.11 problem occurs
- 6.14.8 problem occurs
- 6.14.7 marked as "obsolete" in fedora koji, unable to install
- 6.14.6 problem do not occurs

`cat /proc/bus/input/devices` output when tablet is broken:

```
I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input8
U: Uniq=OEM02_T18e_200919
H: Handlers=mouse2 event5
B: PROP=1
B: EV=1b
B: KEY=1c01 0 0 0 0 0
B: ABS=d000003
B: MSC=10


I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input9
U: Uniq=OEM02_T18e_200919
H: Handlers=event6 js0
B: PROP=0
B: EV=1b
B: KEY=800 201ff 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Touch Strip"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input10
U: Uniq=OEM02_T18e_200919
H: Handlers=event7 js1
B: PROP=0
B: EV=b
B: KEY=1 0 0 0 0
B: ABS=1000000001b

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Dial"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0002/input/input11
U: Uniq=OEM02_T18e_200919
H: Handlers=mouse3 event8 js2
B: PROP=0
B: EV=1f
B: KEY=1 0 0 0 0
B: REL=900
B: ABS=10000000003
B: MSC=10
```

`cat /proc/bus/input/devices` output when tablet works fine:
```
I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Pen"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0004/input/input11
U: Uniq=OEM02_T18e_200919
H: Handlers=mouse2 event8
B: PROP=1
B: EV=1b
B: KEY=1c01 0 0 0 0 0
B: ABS=d000003
B: MSC=10

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Pad"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0004/input/input12
U: Uniq=OEM02_T18e_200919
H: Handlers=event9 js0
B: PROP=0
B: EV=1b
B: KEY=800 3ff0000000003ff 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0003 Vendor=256c Product=006d Version=0111
N: Name="GAOMON Gaomon Tablet Touch Strip"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:256C:006D.0004/input/input13
U: Uniq=OEM02_T18e_200919
H: Handlers=event10 js1
B: PROP=0
B: EV=b
B: KEY=1 0 0 0 0
B: ABS=1000000001b

```

It turns out that for some reason, the pen and pad parameters necessary for identifying the device are now missing from this file. Simply replacing the old names `GAOMON Gaomon Tablet Pen` and `GAOMON Gaomon Tablet Pad` with the new `GAOMON Gaomon Tablet` in the configuration didn't solve the problem. It leads to the recognition of the tablet
```
devices:
  - name: 'GAOMON S620'
    bus: 'usb'
    vid: 0x256c
    pid: 0x006d
    nodes:
      - /dev/input/event11: 'GAOMON Gaomon Tablet Dial'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []
  - name: 'GAOMON S620'
    bus: 'usb'
    vid: 0x256c
    pid: 0x006d
    nodes:
      - /dev/input/event10: 'GAOMON Gaomon Tablet Touch Strip'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []
  - name: 'GAOMON S620'
    bus: 'usb'
    vid: 0x256c
    pid: 0x006d
    nodes:
      - /dev/input/event9: 'GAOMON Gaomon Tablet'
      - /dev/input/event8: 'GAOMON Gaomon Tablet'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []

```
Although an option to assign key combinations for the tablet buttons now appears, the physical buttons themselves are not detected and do not react when pressed.

For some reason, starting after version 6.14.6, the pen and pad pointers disappear during device initialization. There is also at least one other known case of the [same issue](https://github.com/linuxwacom/libwacom/issues/914). Unlike me, the user's problem no longer occurs after renaming DeviceMatch. I have also opened an [issue](https://github.com/linuxwacom/libwacom/issues/928) on libwacom's GitHub.

I'm not a programmer, just an end user, I do not know how to write code or solve problems of such type. So I would be grateful for your help

                 reply	other threads:[~2025-10-28 14:13 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAADDCK7SgZvOdpoPMwBGQp=bFTQsrD8fTaj7KpDGfCKMUPd_zA@mail.gmail.com' \
    --to=87554y23210@gmail.com \
    --cc=linux-input@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).