Support for multiple identical tablets within one machine.
The tablet controls apply settings to both attached screens/tablets, and not to just one screen/tablet.
Relevant information
-
GNOME Settings version
gnome-control-center 45.0
-
Operating system (distribution)
Ubuntu 23.10
-
Error message
None.
-
Backtrace (if you are experiencing a crash)
None.
-
Screenshots
Steps to reproduce:
- Use a Lenovo Yoga Book 9i with Ubuntu installed (Wayland is the window manager).
- Set up a .tablet file within libwacom so the screens/tablets are acknowledged, and settings are created for them.
- Go to the settings window, then the Wacom Settings.
- Attempt to make a change to one tablet, such as mapping an particular tablet to a specific monitor.
- Witness the mapping being applied to the other tablet as well.
Hardware notes:
Output from libwacom-list-local-devices:
- name: 'INGENIC Gadget Serial and keyboard Stylus'
bus: 'usb'
vid: '0x17ef'
pid: '0x6161'
nodes:
- /dev/input/event10: 'INGENIC Gadget Serial and keyboard Touchpad'
- /dev/input/event9: 'INGENIC Gadget Serial and keyboard Stylus'
- /dev/input/event8: 'INGENIC Gadget Serial and keyboard Stylus'
- /dev/input/event7: 'INGENIC Gadget Serial and keyboard'
Focused lsusb output:
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
|__ Port 6: Dev 2, If 0, Class=Communications, Driver=, 480M
ID 17ef:6161 Lenovo
|__ Port 6: Dev 2, If 1, Class=Vendor Specific Class, Driver=, 480M
ID 17ef:6161 Lenovo
|__ Port 6: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 480M
ID 17ef:6161 Lenovo
|__ Port 6: Dev 2, If 3, Class=Human Interface Device, Driver=usbhid, 480M
ID 17ef:6161 Lenovo
|__ Port 6: Dev 2, If 4, Class=Human Interface Device, Driver=usbhid, 480M
ID 17ef:6161 Lenovo
|__ Port 6: Dev 2, If 5, Class=Human Interface Device, Driver=usbhid, 480M
ID 17ef:6161 Lenovo
|__ Port 6: Dev 2, If 6, Class=Human Interface Device, Driver=usbhid, 480M
ID 17ef:6161 Lenovo
dconf configuration output:
$ dconf dump /org/gnome/desktop/peripherals/tablets/
[17ef:6161]
area=[0.0, 0.0, 0.0, 0.0]
keep-aspect=false
mapping='absolute'
modaliases:
$ for x in {0..6}; do echo 3-6\:1.$x/; cat /sys/bus/usb/devices/usb3/3-6/3-6\:1.$x/modalias; done
3-6:1.0/
usb:v17EFp6161d1130dcEFdsc02dp01ic02isc02ip00in00
3-6:1.1/
usb:v17EFp6161d1130dcEFdsc02dp01icFFisc00ip00in01
3-6:1.2/
usb:v17EFp6161d1130dcEFdsc02dp01ic03isc00ip01in02
3-6:1.3/
usb:v17EFp6161d1130dcEFdsc02dp01ic03isc00ip00in03
3-6:1.4/
usb:v17EFp6161d1130dcEFdsc02dp01ic03isc00ip00in04
3-6:1.5/
usb:v17EFp6161d1130dcEFdsc02dp01ic03isc00ip00in05
3-6:1.6/
usb:v17EFp6161d1130dcEFdsc02dp01ic03isc00ip00in06
libwacom tablet file contents:
# Ingenic Touch/Pen Display
[Device]
Name=INGENIC Gadget Serial and keyboard Stylus
ModelName=Gadget_Serial_and_keyboard
Class=PenDisplay
DeviceMatch=usb:17ef:6161
Width=11
Height=6
# No pad buttons, so no layout
IntegratedIn=
[Features]
Stylus=true
Reversible=false
Touch=false
Ring=false
Buttons=0
Other Research notes:
This appears to be due to how the inputs are organized under /org/gnome/desktop/peripherals/tablets, as they use the USB vid:pid as the main identifier. Under Windows, the devices are differentiated through collection identifiers (Col1/Col2), but I don't believe those are implemented the same way in linux.
I've done some digging, and landed on the device_get_settings function within plugins/wacom/gsd-wacom-manager.c being a part of this. I'd love to see something that separates the controls in this dconf path (ie. peripherals/tablets/17ef:6161/{tab1, tab2}), but I suspect that kind of a change touches on much more than just the one function.