Skip to main content

Reference

Protocol Documentation

Reference Implementations

NameRoleURLs
wlrootsServer libraryDocumentation:

https://github.com/swaywm/wlroots
https://github.com/swaywm/wlroots/wiki/Getting-started
https://drewdevault.com/2018/07/17/Input-handling-in-wlroots.html

Commits:

2285e36b0c10 ("Add zwp-tablet-unstable-v2 client support")
47a30957d1ce ("backend/wayland: scale tablet tool position into [0, 1] range")

Files:

https://github.com/swaywm/wlroots/blob/master/backend/wayland/tablet_v2.c
MutterServerFiles:

https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-manager.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-seat.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-tool.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-pad.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-pad-group.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-pad-ring.c
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/wayland/meta-wayland-tablet-pad-strip.c
SwayServer (based on wlroots)Commits:

9114d3b84cf4 ("Implement tablet tool support")
7e420cb6e4a3 ("input: Add support for tablet protocol.")

Files:

https://github.com/swaywm/sway/blob/master/sway/input/tablet.c
https://github.com/swaywm/sway/blob/master/sway/input/cursor.c
https://github.com/swaywm/sway/blob/master/sway/input/seat.c
KWinServerCommits:

f5a73b87e3e7 ("Initial support for tablets on Wayland")
f6128ec8757b ("Provide a fake approach to tablet event propagation")
e0052cedcb9c ("Implement the tablet wayland protocol in kwin")
43969122a2b1 ("Remove changes from a patch from the future")
6abd23ed0220 ("Make it possible to have a separate cursor for the tablet")
89fca06bdb26 ("Make sure tablet coordinates take decorations into account")
3a85b57ec2ab ("Send out an additional TabletMove event before TabletPress.")
1ad88bdf7c65 ("tablet: acknowledge that findTabletSeat might return nullptr")

Files:* https://invent.kde.org/plasma/kwin/-/blob/master/input.cpp
_ https://invent.kde.org/plasma/kwin/-/blob/master/input_event.cpp
_ https://invent.kde.org/plasma/kwin/-/blob/master/tablet_input.cpp
https://invent.kde.org/plasma/kwin/-/blob/master/libinput/device.cpp
https://invent.kde.org/plasma/kwin/-/blob/master/libinput/connection.cpp
XwaylandClientFiles:

* https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/hw/xwayland/xwayland-input.c
GTK+3 / GDKClientFiles:

https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/wayland/gdkdevice-wayland.c
https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkevents.c
https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkdevicetool.c
https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gdk/gdkdevicepad.c
* https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gtk/gtkpadcontroller.c
QtClientCommits:

222455cd643c ("Client: Add basic support for tablet-unstable-v2")

Files:

https://github.com/qt/qtwayland/blob/dev/src/client/qwaylandtabletv2.cpp

Miscellaneous

Chrome OS Stylus Protocol (non-recommended "alternative" to the tablet protocol available only on Chrome OS).