Before I was using 5.2 (actually plasma5-workspace 5.2.99) I upgraded to 5.3 using openSUSE RPMs (openSUSE Factory with the KF5 repo). Reproducible: Always Steps to Reproduce: Touch the start menu, the task bar or any icon in the system tray, nothing happens. Actual Results: Same action as mouse Expected Results: Nothing happens. When touching a task bar item though, it just highlights the icon. This is a regression from 5.2 I know it worked before because I used the touchscreen to reboot the computer after running "zypper dup". I have a Dell XPS 13 9333 that came with a touchscreen.
RPM packages installed: plasma5-workspace-5.3.0-66.1.x86_64 libQt5Core5-5.4.1-2.1.x86_64 Touchscreen kernel module: hid_multitouch Kernel 3.19.4-1-desktop (was 3.19.3 before the upgrade) Please note that the touchscreen works in applications like Firefox or Konsole. Maybe Plasma is trying to be clever with touch events by differentiating them from click events, but it doesn't work properly ?
Kai, David, you have touch devices ...
Working here. Vincent, Can you confirm a mouse is working on those plasma parts? Under system settings, can you see if this app: systemsettings-> workspace -> look and feel works correctly, underneath it uses the same tech as plasma.
The following works: - using the laptop touchpad and using tap (for left clik) on any taskbar item - with a USB trackball I can also properly click on these elements The problem is only with the touchscreen. When I tap the taskbar, the pointer "teleports" there but nothing happens. I also remember that in Plasma 5.2 when I touched a window entry in the task bar, it wouldn't activate the window but show its thumbnail, and only touching the thumbnail would then activate it. I thought that it was maybe by design, having a different workflow for touch devices. In system settings, touching any element on the touchscreen doesn't do anything: - dragging the scrollbar doesn't scroll - touching "Configure" in the toolbar only hovers on it, doesn't click it - within the "look and feel" section, same problem: whatever I touch only teleports the pointer there but it doesn't react to events. Now the reason you asked me to try system settings is probably because it is using Qt 5. I think we're onto something. I have also installed the ownCloud client 1.8.1~rc1 which ALSO uses Qt 5: in that app, the touchscreen also doesn't work ! So it is very likely to be a regression in Qt 5.4.1
I'm running Plasma 5.3 on Qt 5.4.1 and touch is working flawlessly in all of Plasma (Task Manager, etc) as well as widget applications (System Settings, Dolphin, etc)
I had the described issue where the cursor would only move but not actually click anything before Qt 5.3.2 was released with this [1] patch, perhaps there's something else broken in the stack somewhere as well with your particular hardware configuration? [1] https://codereview.qt-project.org/#/c/88361/
I tried to update the openSUSE packages and make sure that all plasma packages are from the kde frameworks 5 repo, and also that the libqt5 ones are up to date. S | Name | Type | Version | Arch | Repository --+-------------------------------------+---------+------------+--------+------------------------------- i | libqt5keychain-devel | package | 0.4-4.4 | x86_64 | isv:ownCloud:community:testing i | libqt5keychain0 | package | 0.4.0-1.2 | x86_64 | repo-oss i | kwin5 | package | 5.3.0-69.2 | x86_64 | kf5 i | kwin5-lang | package | 5.3.0-69.2 | noarch | kf5 i | plasma5-addons | package | 5.3.0-41.1 | x86_64 | kf5 i | plasma5-addons-kimpanel | package | 5.3.0-41.1 | x86_64 | kf5 i | plasma5-addons-lang | package | 5.3.0-41.1 | noarch | kf5 i | plasma5-desktop | package | 5.3.0-67.1 | x86_64 | kf5 i | plasma5-desktop-branding-openSUSE | package | 13.2-47.1 | x86_64 | kf5 i | plasma5-desktop-lang | package | 5.3.0-67.1 | noarch | kf5 i | plasma5-openSUSE | package | 13.2-47.1 | x86_64 | kf5 i | plasma5-workspace | package | 5.3.0-67.3 | x86_64 | kf5 i | plasma5-workspace-branding-openSUSE | package | 13.2-47.1 | x86_64 | kf5 i | plasma5-workspace-lang | package | 5.3.0-67.3 | noarch | kf5 i | plasma5-workspace-libs | package | 5.3.0-67.3 | x86_64 | kf5 i | plasma5-workspace-wallpapers | package | 5.3.0-27.1 | noarch | kf5 i | libQt5CLucene5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Concurrent-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Concurrent5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Core-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Core5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5DBus-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5DBus5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Declarative5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Designer5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5DesignerComponents5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Gui-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Gui5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Help5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Multimedia5 | package | 5.4.1-2.1 | x86_64 | repo-oss i | libQt5Network-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Network5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5OpenGL-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5OpenGL5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5PlatformHeaders-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Positioning5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5PrintSupport-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5PrintSupport5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Script5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Sensors5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Sensors5-imports | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Sql-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Sql5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Sql5-mysql | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Sql5-sqlite | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Svg5 | package | 5.4.1-2.1 | x86_64 | repo-oss i | libQt5Test-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Test5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5WebChannel5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5WebChannel5-imports | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5WebKit5 | package | 5.4.1-3.2 | x86_64 | repo-oss i | libQt5WebKit5-devel | package | 5.4.1-3.2 | x86_64 | repo-oss i | libQt5WebKit5-imports | package | 5.4.1-3.2 | x86_64 | repo-oss i | libQt5WebKitWidgets-devel | package | 5.4.1-3.2 | x86_64 | repo-oss i | libQt5WebKitWidgets5 | package | 5.4.1-3.2 | x86_64 | repo-oss i | libQt5Widgets-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Widgets5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5X11Extras5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Xml-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5Xml5 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libQt5XmlPatterns5 | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-linguist | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-linguist-devel | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtbase-common-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libqt5-qtbase-devel | package | 5.4.1-2.2 | x86_64 | repo-oss i | libqt5-qtbase-doc | package | 5.4.1-2.2 | x86_64 | repo-oss i | libqt5-qtbase-platformtheme-gtk2 | package | 5.4.1-2.2 | x86_64 | repo-oss i | libqt5-qtdeclarative-devel | package | 5.4.1-2.1 | x86_64 | repo-oss i | libqt5-qtdeclarative-tools | package | 5.4.1-2.1 | x86_64 | repo-oss i | libqt5-qtgraphicaleffects | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtimageformats | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtquickcontrols | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtsensors-devel | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtsvg-devel | package | 5.4.1-2.1 | x86_64 | repo-oss i | libqt5-qttools | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qttools-devel | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtx11extras-devel | package | 5.4.1-1.1 | x86_64 | repo-oss i | libqt5-qtxmlpatterns-devel | package | 5.4.1-1.1 | x86_64 | repo-oss i | libQt5Core-private-headers-devel | package | 5.4.1-2.2 | noarch | repo-oss i | libQt5Gui-private-headers-devel | package | 5.4.1-2.2 | noarch | repo-oss i | libqt5keychain0-lang | package | 0.4.0-1.2 | noarch | repo-oss But I still have the issue. I could try and investigate whether the patch you mentioned is included in Qt5. But I think I'll wait for the next plasma / qt5 update. Or if it appears in the main repo of openSUSE I could try that at well later. Anyway this isn't critical, so let's leave the fields as is. I'll keep you updated. :-)
Can you provide the output of xinput list? Maybe there were some unrelated X/kernel updates that came along at the same time that broke it.
I see mention of the master pointer in the patch description, so posting my devices: ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SYNAPTICS Synaptics Large Touch Screen id=9 [slave pointer (2)] ⎜ ↳ DLL060A:00 06CB:2734 id=11 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Integrated_Webcam_HD id=10 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)] ↳ Dell WMI hotkeys id=13 [slave keyboard (3)] The one with id 11 is the touchpad of my laptop, which works fine. I'll try and see whether the patch is indeed in the package (possibly this one https://build.opensuse.org/package/show/KDE:Qt54/libqt5-qtbase)
Ok actually this one is more likely to be my current version: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase There is also a slight chance that the patch is indeed in, but doesn't work for me for some reason. Or one of the openSUSE patches cancels the fix.
I had a quick look in the source code from the package, and I can confirm that the patch is there. Also there is no package patch that removes/touches it. So I guess this means I'll need to debug this somehow (adding debug statements in the Qt code). Just in case it matters, here is my xcb versions: S | Name | Type | Version | Arch | Repository --+-----------------------+---------+-----------+--------+----------- i | libX11-xcb1 | package | 1.6.3-1.1 | x86_64 | repo-oss i | libxcb-composite0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-cursor0 | package | 0.1.2-1.1 | x86_64 | repo-oss i | libxcb-damage0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-devel | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-dpms0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-dri2-0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-dri3-0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-glx0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-icccm4 | package | 0.4.1-3.2 | x86_64 | repo-oss i | libxcb-image0 | package | 0.4.0-1.2 | x86_64 | repo-oss i | libxcb-keysyms1 | package | 0.4.0-1.1 | x86_64 | repo-oss i | libxcb-present0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-randr0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-record0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-render-util0 | package | 0.3.9-3.1 | x86_64 | repo-oss i | libxcb-render0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-res0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-screensaver0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-shape0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-shm0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-sync1 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-util1 | package | 0.4.0-1.2 | x86_64 | repo-oss i | libxcb-xevie0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xf86dri0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xfixes0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xinerama0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xkb1 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xprint0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xtest0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xv0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xvmc0 | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb1 | package | 1.11-3.2 | x86_64 | repo-oss i | xcb-util-devel | package | 0.4.0-1.2 | x86_64 | repo-oss i | libX11-xcb1-32bit | package | 1.6.3-1.1 | x86_64 | repo-oss i | libxcb-dri2-0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-dri3-0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-glx0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-present0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-render0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-shm0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-sync1-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb-xfixes0-32bit | package | 1.11-3.2 | x86_64 | repo-oss i | libxcb1-32bit | package | 1.11-3.2 | x86_64 | repo-oss and xinput: i | xinput | package | 1.6.1-5.2 | x86_64 | repo-oss
The package containing the xcb handler is the following: libQt5Gui5-5.4.1-2.2.x86_64 From /usr/lib64/qt5/plugins/platforms/libqxcb.so I managed to compile the package and install it. The original bug report also mentions that the real bug is in xorg-server, so posting my xorg-server version too: S | Name | Type | Version | Arch | Repository --+------------------------+---------+----------------+--------+------------------ i | xorg-x11-Xvnc | package | 1.4.3-1.1 | x86_64 | (System Packages) i | xorg-x11-driver-video | package | 7.6_1-15.1 | x86_64 | repo-oss i | xorg-x11-server | package | 7.6_1.17.1-4.1 | x86_64 | (System Packages) i | xorg-x11-server-extra | package | 7.6_1.17.1-4.1 | x86_64 | (System Packages) i | xorg-cf-files | package | 1.0.5-5.1 | noarch | repo-oss i | xorg-sgml-doctools | package | 1.11-9.1 | noarch | repo-oss i | xorg-x11-devel | package | 7.6-47.1 | noarch | repo-oss i | xorg-x11-driver-input | package | 7.6_1-13.1 | noarch | repo-oss i | xorg-x11-essentials | package | 7.6_1-16.1 | noarch | repo-oss i | xorg-x11-fonts | package | 7.6-31.2 | noarch | repo-oss i | xorg-x11-fonts-core | package | 7.6-31.2 | noarch | repo-oss i | xorg-x11-libX11-ccache | package | 7.6-20.1 | noarch | repo-oss i | xorg-x11-libs | package | 7.6-47.1 | noarch | repo-oss i | xorg-x11-util-devel | package | 7.6_1-10.1 | noarch | repo-oss The patch seems to be quite old, however I remember that the touchscreen worked fine a few months ago. So the issue is more likely to be due to some other changes in the stack. Next step: add debug stuff.
Hmm, I found something interesting, not sure if relevant: When I do this: xinput query-state on my touchpad while holding down the button, I get this: 2 classes : ButtonClass button[1]=down button[2]=up button[3]=up button[4]=up button[5]=up button[6]=up button[7]=up ValuatorClass Mode=Relative Proximity=In valuator[0]=780 valuator[1]=576 valuator[2]=282 valuator[3]=1286 However with the touchscreen when I do the same, button[1] is always up (I touch the screen and drag a bit): 2 classes : ButtonClass button[1]=up button[2]=up button[3]=up button[4]=up button[5]=up button[6]=up button[7]=up ValuatorClass Mode=Absolute Proximity=In valuator[0]=2667 valuator[1]=43780 valuator[2]=0 valuator[3]=0 The button 1 is always up. So this could be a bug in xinput ? @David could you try the same on your env for comparison ? Not sure how other apps (like the qt4 ones and xev can get the events then, maybe they use a different mechanism)
Hmmm no, never mind. I tested the device with "xinput test" and it can properly get touch events. button press 1 a[0]=1168 a[1]=37153 motion a[0]=1168 a[1]=37153 button release 1 a[0]=1168 a[1]=37153 motion a[0]=1300 a[1]=38128 button press 1 a[0]=1300 a[1]=38128 motion a[0]=1300 a[1]=38167 motion a[0]=1278 a[1]=38167 motion a[0]=1278 a[1]=38167 button release 1 a[0]=1278 a[1]=38167 (note: I'm still discovering the parameters of xinput, interesting stuff!)
A bit more tinkering: debugging showed me that has_touch_without_mouse_emulation is true for me. I tried forcing it to false as well, but it didn't solve my issue. I added some dummy logging and can confirm that it is going through the XINPUT22 code path. Similar bug report found here: https://code.google.com/p/chromium/issues/detail?id=350630 Also found this: https://forum.qt.io/topic/20617/qt5-raspbian-egalax-failing-touchscreen-interaction/6 The latter suggest to run Qt5 apps with the following arguments: % appname -plugin evdevtouch:/dev/input/event13 (where event13 is the touchscreen device) When I do this, touch events suddenly work in that specific app!
I discovered "xinput -test-xi2" so I tried it with: 1) touchpad: click events appear as RawButtonPress, RawButtonRelease, etc 2) touchscreen: no clicks, only touch events: % xinput test-xi2 9 !10027 SYNAPTICS Synaptics Large Touch Screen id=9 [slave pointer (2)] Reporting 6 classes: Class originated from: 9. Type: XIButtonClass Buttons supported: 7 Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" Button state: Class originated from: 9. Type: XIValuatorClass Detail for Valuator 0: Label: Abs X Range: 0.000000 - 65535.000000 Resolution: 0 units/m Mode: absolute Current value: 4915.000000 Class originated from: 9. Type: XIValuatorClass Detail for Valuator 1: Label: Abs Y Range: 0.000000 - 65535.000000 Resolution: 0 units/m Mode: absolute Current value: 9200.000000 Class originated from: 9. Type: XIValuatorClass Detail for Valuator 2: Label: Rel Horiz Scroll Range: -1.000000 - -1.000000 Resolution: 0 units/m Mode: relative Class originated from: 9. Type: XIValuatorClass Detail for Valuator 3: Label: Rel Vert Scroll Range: -1.000000 - -1.000000 Resolution: 0 units/m Mode: relative Class originated from: 9. Type: XITouchClass Touch mode: direct Max number of touches: 15 EVENT type 22 (RawTouchBegin) device: 9 (9) detail: 69 valuators: 0: 2887.68 (2887.68) 1: 11929.63 (11929.63) EVENT type 18 (TouchBegin) device: 9 (9) detail: 69 root: 84.60/196.59 event: 84.60/147.59 buttons: modifiers: locked 0x10 latched 0 base 0 effective: 0x10 group: locked 0 latched 0 base 0 effective: 0 valuators: 0: 2887.68 1: 11929.63 windows: root 0xac event 0x1a00001 child 0x1a00001 EVENT type 23 (RawTouchUpdate) device: 9 (9) detail: 69 valuators: 0: 2887.68 (2887.68) 1: 12085.57 (12085.57) EVENT type 19 (TouchUpdate) device: 9 (9) detail: 69 root: 84.60/199.16 event: 84.60/150.16 buttons: modifiers: locked 0x10 latched 0 base 0 effective: 0x10 group: locked 0 latched 0 base 0 effective: 0 valuators: 0: 2887.68 1: 12085.57 windows: root 0xac event 0x1a00001 child 0x1a00001 EVENT type 24 (RawTouchEnd) device: 9 (9) detail: 69 valuators: 0: 2887.68 (0.00) 1: 12085.57 (0.00) EVENT type 20 (TouchEnd) device: 9 (9) detail: 69 root: 84.60/199.16 event: 84.60/150.16 buttons: modifiers: locked 0x10 latched 0 base 0 effective: 0x10 group: locked 0 latched 0 base 0 effective: 0 valuators: 0: 2887.68 1: 12085.57 windows: root 0xac event 0x1a00001 child 0x1a00001 So I suspect that my device or xinput2 is not synthesizing clicks. I wonder if there is a way to configure this either at driver level or in xinput2. From my understanding Qt5 is supposed to synthesize clicks whenever xinput2 does not do it (has_touch_without_mouse_emulation), but maybe that code path isn't working properly.
I have now raised a ticket in the Qt bug tracker: https://bugreports.qt.io/browse/QTBUG-46142
Thanks for your investigation! Closing as Qt bug then.
I dived deeper and it might even be a XCB bug, see https://bugreports.qt.io/browse/QTBUG-46142?focusedCommentId=281885&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-281885 For you guys where the touchscreen works properly, would you mind sharing your xorg, xcb, xinput and libQt5 versions so I can compare ? (with a bit of hope the fix is around the corner in an update that you guys have but I don't)