Am 2017-08-05 17:23, schrieb René J. V.  Bertin:
David Edmundson wrote:

In wayland you never query anything, only track events.

There are applications for which this isn't good enough but I guess there must be other, low-level ways to query the current state of a given input device or

Short answer: no there isn't. Even libinput does not provide the state of the buttons, but just sends the press events. I'm pretty sure that not even the kernel knows it, otherwise libinput would expose it.

What actually do you want to do?

I'm toying around with a click-and-hold-opens-the-contextmenu feature (ported
from Mac where this makes a bit more sense), based on the TapAndHold
gesture. It
looks like that event is good demonstration why event tracking isn't 100% reliable. When I activate processing of that gesture on a QToolButton with a menu, it finishes (triggers) even when I am not holding any mouse button. The event filter in which I implement this feature also catches MouseRelease and MouseMove events (to turn off the gesture processing); I'm not getting those
either when the QToolButton's menu is open.

IOW, when I click once on the button to open its menu, the contextmenu
is opened
too after the expected delay. The only reliable way I found to prevent this is
to check if the mouse button is still pressed when the TapAndHold
gesture claims
to be finished.

For Wayland you can use the KWayland Client library to low level listen to the button press/release events. Example code for how to do this is in breeze kstyle for manual moving of the window.


Reply via email to