Re: Can Tk 9.0 handle touch events of a touch display?

Liste des GroupesRevenir à cl tcl 
Sujet : Re: Can Tk 9.0 handle touch events of a touch display?
De : robert.csok (at) *nospam* gmx.de (Robert Csok)
Groupes : comp.lang.tcl
Date : 01. Mar 2025, 00:41:20
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vpthj0$3ssti$1@dont-email.me>
References : 1 2
User-Agent : Mozilla Thunderbird
Hello Harald,
hello Christian,
Thank you very much for your answers. I wanted to get back to you with some new information. First of all, I came across the Touchégg tool (https://github.com/JoseExposito/touchegg), but this tool is insufficient as it does not provide coordinates. It is more suitable for indirect touch devices such as touchpads, but not for touch-enabled displays. Then I tried to develop a solution that does not require any modification of Tk, and this solution works surprisingly well. Maybe I can make the code available. But perhaps the following hints are already useful for some of you:
So the idea is (a bit similar to Touchégg) to start a helper program (e.g. "touchHelper") in the background for each window/widget that needs touch events. Within a Tk application, the window could be a canvas with a map, for example. The "touchHelper" acts as an additional X client that selects for touch events on a specific window and forwards them to the associated Tk application using Tk_SendObjCmd(), i.e. Tk's send command.
The "touchHelper" uses libXi to select for the touch events (see XISelectEvents() from X11/extensions/XInput2.h). The events XI_TouchBegin, XI_TouchUpdate and XI_TouchEnd are selected on the specific window (ID) of the Tk application (determined by [winfo id window] in the Tk application and passed as a command line argument to the "touchHelper" together with [tk appname]). On the basis of these three events, a gesture recognition (swipe, pinch-to-zoom etc.) can be realized quite easily in Tcl.
Care must be taken to ensure that the queue of the Tk application is not flooded with events from the "touchHelper"; this can be done in the "touchHelper" and/or in the Tk application, namely by ignoring XI_TouchUpdate events that are triggered too frequently (taking the XIDeviceEvent::time field into account). Furthermore, one must ensure that a touch event does not trigger an additional click in the Tk application (button 1 event), as it may interfere. This can be done using a grab in the "touchHelper", e.g. via XIGrabButton().
I am aware that this is only a workaround for "legacy" Tk applications (on the X Window System). The long-term goal should of course be to make at least these three events (TouchBegin, TouchUpdate and TouchEnd) available in core Tk (via the bind command)
I found the following blog posts helpful, even if they don't go too much into detail:
http://who-t.blogspot.com/2009/05/xi2-recipes-part-1.html
http://who-t.blogspot.com/2010/11/high-level-overview-of-grabs.html
Best regards,
Robert
Am 21.12.24 um 17:45 Uhr schrieb Harald Oehlmann:
Robert,
 I have authored the TIP in 2020 and the described knowledge there has not changed.
As it is clear that this in an important feature, there was never any movement here.
Eventually, undrowish by Christian Werner has some support on Linux.
 On Windows, we only have the button press emulation, that's all.
 And the branch by Peter Sputh did not get any love since 2022.
Aparently, Peters work also has some Mac aspects.
 Any initiative appreciated - we need that !
 Take care,
Harald
 Am 21.12.2024 um 13:57 schrieb Robert Csok:
Hello everyone,
>
While reading through the “Highlights of Tk 9.0” I noticed the point “Platform Features and Conventions: many improvements, including two- finger gesture support where available”. I was initially pleased because I thought that Tcl 9 could react to touch events of a touch display. This function would make it easier to operate our cadastre application on devices with a touch-capable display (“Pinch To Zoom” etc.).
>
However, I had to realize that this message probably refers more to the possibility of scrolling with two fingers on a touchpad (new event type “TouchpadScroll”). I also came across TIP 570, which describes the desired feature:
>
https://core.tcl-lang.org/tips/doc/trunk/tip/570.md
>
The proposal has been in a draft state since 2020.
>
Can anyone give a hint on a possibility, trick or workaround to react to touch events of a touch display in a Tk application under Linux?
>
Best regards
>
Robert
 

Date Sujet#  Auteur
21 Dec 24 * Can Tk 9.0 handle touch events of a touch display?6Robert Csok
21 Dec 24 `* Re: Can Tk 9.0 handle touch events of a touch display?5Harald Oehlmann
21 Dec 24  +* Re: Can Tk 9.0 handle touch events of a touch display?2undroidwish
21 Dec 24  i`- Re: Can Tk 9.0 handle touch events of a touch display?1undroidwish
1 Mar 25  `* Re: Can Tk 9.0 handle touch events of a touch display?2Robert Csok
3 Mar 25   `- Re: Can Tk 9.0 handle touch events of a touch display?1Harald Oehlmann

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal