| Deutsch English Français Italiano |
|
<vpthj0$3ssti$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Robert Csok <robert.csok@gmx.de> Newsgroups: comp.lang.tcl Subject: Re: Can Tk 9.0 handle touch events of a touch display? Date: Sat, 1 Mar 2025 00:41:20 +0100 Organization: A noiseless patient Spider Lines: 98 Message-ID: <vpthj0$3ssti$1@dont-email.me> References: <vk6e0i$1eqd$1@dont-email.me> <vk6rbg$4imb$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 01 Mar 2025 00:41:20 +0100 (CET) Injection-Info: dont-email.me; posting-host="0d96034879979237c2bb524dc4bc0db4"; logging-data="4092850"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19JtMq3nAiiiKOvZli3aiBs" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:nuN/wzOvLJ69Z7eyO8xScKqiZtw= In-Reply-To: <vk6rbg$4imb$1@dont-email.me> Content-Language: en-US Bytes: 5397 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 >