Improve Tablet support
I tested the support of a Wacom Intros Pro PTH-651 on KWin and Fedora 36. And I found these messages are missing:
- ring and modes during pad group initialisation (Mutter OK) but implemented in KWin, so something is wrong ???
- current mode (Mutter NOK)
- mode_switch (Mutter NOK)
- distance (Mutter NOK) and tilt (Mutter OK) for tool
I started to write a patch for distance and tilt. I don't know how to handle the airbrush. I don't have it and I am not sure if it is usefull nowadays.
I asked Wayland how we should pass the current mode during the pad initialisation. Documentation is unclear.
Actually pinch gesture are forwared. TODO: check if this tablet send other types of gestures.
Could we send the raw touch events as if this tablet was a touch screen ? It could be usefull to test Qt touch handling for example.
KWIN Log
[ 190362.159] wl_registry@2.global(2, "zwp_tablet_manager_v2", 1)
[ 190362.215] -> wl_registry@2.bind(2, "zwp_tablet_manager_v2", 1, new id [unknown]@5)
[ 190362.586] -> zwp_tablet_manager_v2@5.get_tablet_seat(new id zwp_tablet_seat_v2@8, wl_seat@7)
[ 190388.928] zwp_tablet_seat_v2@8.tablet_added(new id zwp_tablet_v2@4278190080)
[ 190389.243] zwp_tablet_v2@4278190080.name("Wacom Intuos Pro M Pad")
[ 190389.292] zwp_tablet_v2@4278190080.id(1386, 789)
[ 190389.325] zwp_tablet_v2@4278190080.path("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/0003:056A:0315.0002/input/input11/event9")
[ 190389.369] zwp_tablet_v2@4278190080.done()
[ 190389.395] zwp_tablet_seat_v2@8.pad_added(new id zwp_tablet_pad_v2@4278190081)
[ 190389.453] zwp_tablet_pad_v2@4278190081.buttons(9)
[ 190389.483] zwp_tablet_pad_v2@4278190081.path("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/0003:056A:0315.0002/input/input11/event9")
[ 190389.547] zwp_tablet_pad_v2@4278190081.group(new id zwp_tablet_pad_group_v2@4278190082)
[ 190389.589] zwp_tablet_pad_v2@4278190081.done()
[ 190676.315] wl_registry@15.global(2, "zwp_tablet_manager_v2", 1)
[ 204760.220] zwp_tablet_pad_v2@4278190081.enter(6719, zwp_tablet_v2@4278190080, wl_surface@27)
[ 204760.283] zwp_tablet_pad_v2@4278190081.button(1726781612, 1, 1)
[ 204930.349] zwp_tablet_pad_v2@4278190081.button(1726781782, 1, 0)
[ 205529.951] zwp_tablet_pad_v2@4278190081.button(1726782382, 2, 1)
[ 205665.024] zwp_tablet_pad_v2@4278190081.button(1726782517, 2, 0)
[ 206310.473] zwp_tablet_pad_v2@4278190081.button(1726783162, 3, 1)
[ 206460.552] zwp_tablet_pad_v2@4278190081.button(1726783312, 3, 0)
[ 207360.020] zwp_tablet_pad_v2@4278190081.button(1726784212, 4, 1)
[ 207585.083] zwp_tablet_pad_v2@4278190081.button(1726784437, 4, 0)
[ 209849.799] zwp_tablet_pad_v2@4278190081.button(1726786702, 5, 1)
[ 210029.832] zwp_tablet_pad_v2@4278190081.button(1726786882, 5, 0)
[ 210420.168] zwp_tablet_pad_v2@4278190081.button(1726787272, 6, 1)
[ 210570.099] zwp_tablet_pad_v2@4278190081.button(1726787422, 6, 0)
[ 210929.908] zwp_tablet_pad_v2@4278190081.button(1726787782, 7, 1)
[ 211080.016] zwp_tablet_pad_v2@4278190081.button(1726787932, 7, 0)
[ 211470.237] zwp_tablet_pad_v2@4278190081.button(1726788322, 8, 1)
[ 211649.811] zwp_tablet_pad_v2@4278190081.button(1726788502, 8, 0)
[ 216540.234] zwp_tablet_pad_v2@4278190081.button(1726793392, 0, 1)
[ 216749.874] zwp_tablet_pad_v2@4278190081.button(1726793602, 0, 0)
[ 220256.354] zwp_tablet_seat_v2@8.tool_added(new id zwp_tablet_tool_v2@4278190086)
[ 220256.387] zwp_tablet_tool_v2@4278190086.type(320)
[ 220256.397] zwp_tablet_tool_v2@4278190086.hardware_serial(0, 1015052659)
[ 220256.404] zwp_tablet_tool_v2@4278190086.hardware_id_wacom(0, 1050626)
[ 220256.410] zwp_tablet_tool_v2@4278190086.capability(2)
[ 220256.416] zwp_tablet_tool_v2@4278190086.capability(3)
[ 220256.421] zwp_tablet_tool_v2@4278190086.capability(1)
[ 220256.429] zwp_tablet_tool_v2@4278190086.done()
[ 221916.219] zwp_tablet_tool_v2@4278190086.proximity_in(6722, zwp_tablet_v2@4278190080, wl_surface@27)
[ 221916.282] zwp_tablet_tool_v2@4278190086.motion(53.59375000, 365.53515625)
[ 221916.351] zwp_tablet_tool_v2@4278190086.pressure(0)
[ 221916.367] zwp_tablet_tool_v2@4278190086.frame(10805078)
[ 221942.967] zwp_tablet_tool_v2@4278190086.motion(53.04296875, 365.48046875)
[ 221943.019] zwp_tablet_tool_v2@4278190086.pressure(0)
[ 221943.037] zwp_tablet_tool_v2@4278190086.frame(10805108)
[ 222748.066] zwp_tablet_tool_v2@4278190086.motion(69.94140625, 389.64062500)
[ 222748.173] zwp_tablet_tool_v2@4278190086.down(6723)
[ 222748.200] zwp_tablet_tool_v2@4278190086.pressure(21564)
[ 222748.215] zwp_tablet_tool_v2@4278190086.frame(10805913)
[ 222753.345] zwp_tablet_tool_v2@4278190086.motion(69.82031250, 389.55859375)
[ 222753.403] zwp_tablet_tool_v2@4278190086.pressure(22534)
[ 222753.432] zwp_tablet_tool_v2@4278190086.frame(10805918)
[ 226307.544] zwp_tablet_tool_v2@4278190086.button(6724, 331, 1)
[ 226312.233] zwp_tablet_tool_v2@4278190086.motion(495.46093750, 346.37500000)
[ 226312.296] zwp_tablet_tool_v2@4278190086.pressure(47235)
[ 226312.316] zwp_tablet_tool_v2@4278190086.frame(10809477)
[ 226484.479] zwp_tablet_tool_v2@4278190086.button(6725, 331, 0)
[ 226487.846] zwp_tablet_tool_v2@4278190086.motion(495.67578125, 346.32031250)
[ 226487.890] zwp_tablet_tool_v2@4278190086.pressure(47203)
[ 226487.907] zwp_tablet_tool_v2@4278190086.frame(10809653)
[ 227233.421] zwp_tablet_tool_v2@4278190086.button(6726, 332, 1)
[ 227236.854] zwp_tablet_tool_v2@4278190086.motion(479.60546875, 338.48828125)
[ 227236.901] zwp_tablet_tool_v2@4278190086.pressure(51826)
[ 227236.917] zwp_tablet_tool_v2@4278190086.frame(10810402)
[ 227459.642] zwp_tablet_tool_v2@4278190086.button(6727, 332, 0)
[ 227464.307] zwp_tablet_tool_v2@4278190086.motion(477.25000000, 339.36718750)
[ 227464.379] zwp_tablet_tool_v2@4278190086.pressure(47558)
[ 227464.401] zwp_tablet_tool_v2@4278190086.frame(10810629)
[ 227935.826] zwp_tablet_tool_v2@4278190086.up()
[ 227935.875] zwp_tablet_tool_v2@4278190086.pressure(0)
[ 227935.903] zwp_tablet_tool_v2@4278190086.frame(10811101)
[ 227941.063] zwp_tablet_tool_v2@4278190086.motion(478.16796875, 336.53515625)
[ 227941.160] zwp_tablet_tool_v2@4278190086.pressure(0)
[ 227941.192] zwp_tablet_tool_v2@4278190086.frame(10811106)
[ 228056.324] zwp_tablet_tool_v2@4278190086.proximity_out()
[ 228056.375] zwp_tablet_tool_v2@4278190086.pressure(0)
[ 228056.391] zwp_tablet_tool_v2@4278190086.frame(10811221)
[ 234530.159] -> zwp_tablet_v2@4278190080.destroy()
[ 234530.177] -> zwp_tablet_tool_v2@4278190086.destroy()
[ 234530.193] -> zwp_tablet_pad_v2@4278190081.destroy()
[ 234530.208] -> zwp_tablet_seat_v2@8.destroy()
Mutter log
[3209813.960] wl_registry@2.global(15, "zwp_tablet_manager_v2", 1)
[3209813.966] -> wl_registry@2.bind(15, "zwp_tablet_manager_v2", 1, new id [unknown]@17)
[3209847.710] -> zwp_tablet_manager_v2@17.get_tablet_seat(new id zwp_tablet_seat_v2@26, wl_seat@21)
[3209848.453] zwp_tablet_seat_v2@26.tablet_added(new id zwp_tablet_v2@4278190080)
[3209848.463] zwp_tablet_v2@4278190080.name("Wacom Intuos Pro M Pen")
[3209848.469] zwp_tablet_v2@4278190080.path("/dev/input/event18")
[3209848.476] zwp_tablet_v2@4278190080.id(1386, 789)
[3209848.485] zwp_tablet_v2@4278190080.done()
[3209848.556] zwp_tablet_seat_v2@26.pad_added(new id zwp_tablet_pad_v2@4278190081)
[3209848.564] zwp_tablet_pad_v2@4278190081.path("/dev/input/event19")
[3209848.570] zwp_tablet_pad_v2@4278190081.buttons(9)
[3209848.577] zwp_tablet_pad_v2@4278190081.group(new id zwp_tablet_pad_group_v2@4278190082)
[3209848.586] zwp_tablet_pad_group_v2@4278190082.buttons(array[36])
[3209848.595] zwp_tablet_pad_group_v2@4278190082.ring(new id zwp_tablet_pad_ring_v2@4278190083)
[3209848.602] zwp_tablet_pad_group_v2@4278190082.modes(4)
[3209848.608] zwp_tablet_pad_group_v2@4278190082.done()
[3209848.614] zwp_tablet_pad_v2@4278190081.done()
[3209883.304] wl_registry@2.global(15, "zwp_tablet_manager_v2", 1)
[3209883.308] -> wl_registry@2.bind(15, "zwp_tablet_manager_v2", 1, new id [unknown]@14)
[3209883.343] -> zwp_tablet_manager_v2@14.get_tablet_seat(new id zwp_tablet_seat_v2@18, wl_seat@15)
[3209883.825] zwp_tablet_seat_v2@18.tablet_added(new id zwp_tablet_v2@4278190080)
[3209883.831] zwp_tablet_v2@4278190080.name("Wacom Intuos Pro M Pen")
[3209883.835] zwp_tablet_v2@4278190080.path("/dev/input/event18")
[3209883.838] zwp_tablet_v2@4278190080.id(1386, 789)
[3209883.842] zwp_tablet_v2@4278190080.done()
[3209883.844] zwp_tablet_seat_v2@18.pad_added(new id zwp_tablet_pad_v2@4278190081)
[3209883.849] zwp_tablet_pad_v2@4278190081.path("/dev/input/event19")
[3209883.853] zwp_tablet_pad_v2@4278190081.buttons(9)
[3209883.855] zwp_tablet_pad_v2@4278190081.group(new id zwp_tablet_pad_group_v2@4278190082)
[3209883.860] zwp_tablet_pad_v2@4278190081.done()
[3209893.923] wl_registry@23.global(15, "zwp_tablet_manager_v2", 1)
[3210096.105] zwp_tablet_pad_v2@4278190081.enter(1442, zwp_tablet_v2@4278190080, wl_surface@26)
[3215639.482] zwp_tablet_pad_v2@4278190081.button(40777275, 1, 1)
[3215759.387] zwp_tablet_pad_v2@4278190081.button(40777395, 1, 0)
[3216029.253] zwp_tablet_pad_v2@4278190081.button(40777665, 2, 1)
[3216179.138] zwp_tablet_pad_v2@4278190081.button(40777815, 2, 0)
[3216434.865] zwp_tablet_pad_v2@4278190081.button(40778070, 3, 1)
[3216554.364] zwp_tablet_pad_v2@4278190081.button(40778190, 3, 0)
[3216779.444] zwp_tablet_pad_v2@4278190081.button(40778415, 4, 1)
[3216914.403] zwp_tablet_pad_v2@4278190081.button(40778550, 4, 0)
[3217498.949] zwp_tablet_pad_v2@4278190081.button(40779135, 5, 1)
[3217619.290] zwp_tablet_pad_v2@4278190081.button(40779255, 5, 0)
[3217874.197] zwp_tablet_pad_v2@4278190081.button(40779510, 6, 1)
[3218009.180] zwp_tablet_pad_v2@4278190081.button(40779645, 6, 0)
[3218294.202] zwp_tablet_pad_v2@4278190081.button(40779930, 7, 1)
[3218414.101] zwp_tablet_pad_v2@4278190081.button(40780050, 7, 0)
[3218789.658] zwp_tablet_pad_v2@4278190081.button(40780425, 8, 1)
[3218998.921] zwp_tablet_pad_v2@4278190081.button(40780635, 8, 0)
[3227163.564] zwp_tablet_seat_v2@18.tool_added(new id zwp_tablet_tool_v2@4278190085)
[3227163.637] zwp_tablet_tool_v2@4278190085.type(320)
[3227163.657] zwp_tablet_tool_v2@4278190085.hardware_serial(0, 1015052659)
[3227163.674] zwp_tablet_tool_v2@4278190085.hardware_id_wacom(0, 1050626)
[3227163.689] zwp_tablet_tool_v2@4278190085.capability(2)
[3227163.703] zwp_tablet_tool_v2@4278190085.capability(3)
[3227163.717] zwp_tablet_tool_v2@4278190085.capability(1)
[3227163.775] zwp_tablet_tool_v2@4278190085.done()
[3227163.791] zwp_tablet_tool_v2@4278190085.proximity_in(1458, zwp_tablet_v2@4278190080, wl_surface@26)
[3227163.813] zwp_tablet_tool_v2@4278190085.frame(40788800)
[3227164.079] zwp_tablet_tool_v2@4278190085.motion(185.09765625, 412.37109375)
[3227164.097] zwp_tablet_tool_v2@4278190085.pressure(0)
[3227164.111] zwp_tablet_tool_v2@4278190085.distance(65535)
[3227164.125] zwp_tablet_tool_v2@4278190085.tilt(0.00000000, 0.00000000)
[3227164.142] zwp_tablet_tool_v2@4278190085.frame(40788800)
[3227919.108] zwp_tablet_tool_v2@4278190085.down(1459)
[3227919.126] zwp_tablet_tool_v2@4278190085.frame(40789555)
[3227923.571] zwp_tablet_tool_v2@4278190085.motion(172.14062500, 424.82421875)
[3227923.592] zwp_tablet_tool_v2@4278190085.pressure(30779)
[3227923.608] zwp_tablet_tool_v2@4278190085.distance(1040)
[3227923.622] zwp_tablet_tool_v2@4278190085.tilt(14.07421875, 24.12500000)
[3227923.674] zwp_tablet_tool_v2@4278190085.frame(40789560)
[3229441.282] zwp_tablet_tool_v2@4278190085.up()
[3229441.344] zwp_tablet_tool_v2@4278190085.frame(40791078)
[3229441.497] zwp_tablet_tool_v2@4278190085.motion(307.32031250, 428.56250000)
[3229441.543] zwp_tablet_tool_v2@4278190085.pressure(0)
[3229441.568] zwp_tablet_tool_v2@4278190085.distance(0)
[3229441.596] zwp_tablet_tool_v2@4278190085.tilt(12.06250000, 19.09765625)
[3229441.635] zwp_tablet_tool_v2@4278190085.frame(40791078)
[3240872.439] zwp_tablet_tool_v2@4278190085.proximity_out()
[3240872.496] zwp_tablet_tool_v2@4278190085.frame(40802509)
[3244253.192] -> zwp_tablet_v2@4278190080.destroy()
[3244253.203] -> zwp_tablet_tool_v2@4278190085.destroy()
[3244253.209] -> zwp_tablet_pad_v2@4278190081.destroy()
[3244253.215] -> zwp_tablet_seat_v2@18.destroy()