diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2019-12-17 12:08:54 +0100 |
---|---|---|
committer | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2020-01-08 15:33:50 +0100 |
commit | 222455cd643c128fa9730c9c527a7fdcadd0acfe (patch) | |
tree | c1a6c8f39cb9d1405ade2bc63d380a38ff4f36d3 /src/client/qwaylandinputdevice.cpp | |
parent | 7542dc765002d0512ed56f23f9f5727c77ae7aff (diff) | |
download | qtwayland-222455cd643c128fa9730c9c527a7fdcadd0acfe.tar.gz |
Client: Add basic support for tablet-unstable-v2
[ChangeLog][QPA plugin] Added support for drawing tablets through the
tablet-unstable-v2 protocol.
Adds support for the basic one tablet, one tool, no pads scenario.
Besides the auto tests, I tested with a Huion Kamvas Pro 16 with a simple
pressure sensitive pen with two buttons. As far as I can tell, it works the
same way as on xcb on Sway and Gnome Shell.
Also tested on a Wacom PTZ-630 with a mouse, art pen, airbrush and a stylus.
Mapped the distance event to QTabletEvent::Z and slider to
QTabletEvent::tangentialPressure.
For now we send QTabletEvents even when there's a mouse or finger on the
tablet. Those should ideally be sent as QMouseEvents/QTouchEvents, but that's
out of scope for this patch, but at least we will send synthesized mouse events
if the tablet events are not accepted.
Change-Id: I93291ffa5f00fa2bb8533eddd8d873b84a3386b8
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/client/qwaylandinputdevice.cpp')
-rw-r--r-- | src/client/qwaylandinputdevice.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp index ce086ee4..e0f0c6c8 100644 --- a/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp @@ -50,6 +50,7 @@ #if QT_CONFIG(wayland_client_primary_selection) #include "qwaylandprimaryselectionv1_p.h" #endif +#include "qwaylandtabletv2_p.h" #include "qwaylandtouch_p.h" #include "qwaylandscreen_p.h" #include "qwaylandcursor_p.h" @@ -418,6 +419,8 @@ QWaylandInputDevice::QWaylandInputDevice(QWaylandDisplay *display, int version, if (mQDisplay->textInputManager()) mTextInput.reset(new QWaylandTextInput(mQDisplay, mQDisplay->textInputManager()->get_text_input(wl_seat()))); + if (auto *tm = mQDisplay->tabletManager()) + mTabletSeat.reset(new QWaylandTabletSeatV2(tm, this)); } QWaylandInputDevice::~QWaylandInputDevice() |