Bug 279884 - [Widgets] Add API for multi-touch events and gestures
Summary: [Widgets] Add API for multi-touch events and gestures
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 3.6   Edit
Hardware: Macintosh Mac OS X
: P3 enhancement with 4 votes (vote)
Target Milestone: 3.7   Edit
Assignee: Scott Kovatch CLA
QA Contact: Silenio Quarti CLA
URL:
Whiteboard:
Keywords: plan
: 293307 303208 315735 (view as bug list)
Depends on:
Blocks: 335131 396949
  Show dependency tree
 
Reported: 2009-06-10 19:07 EDT by Scott Kovatch CLA
Modified: 2021-04-30 10:06 EDT (History)
30 users (show)

See Also:


Attachments
work in progress (67.90 KB, patch)
2010-09-21 19:14 EDT, Scott Kovatch CLA
no flags Details | Diff
work in progress - common files (25.06 KB, patch)
2010-11-30 18:18 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - Mac OS X (141.44 KB, patch)
2010-11-30 18:19 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - Win32 (71.26 KB, patch)
2010-11-30 18:24 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - Win32 (66.18 KB, patch)
2010-12-08 19:49 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - common files (26.24 KB, patch)
2010-12-08 19:51 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - Mac OS X (57.06 KB, patch)
2010-12-08 19:55 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - Win32 (82.17 KB, patch)
2010-12-09 19:06 EST, Scott Kovatch CLA
no flags Details | Diff
work in progress - Mac OS X (56.84 KB, patch)
2010-12-09 19:09 EST, Scott Kovatch CLA
no flags Details | Diff
Gestures only for Win32 (94.88 KB, patch)
2010-12-13 19:02 EST, Scott Kovatch CLA
no flags Details | Diff
Gestures only for Win32 (96.94 KB, patch)
2010-12-14 13:25 EST, Scott Kovatch CLA
no flags Details | Diff
Gestures only for Win32 (97.44 KB, patch)
2010-12-14 19:02 EST, Scott Kovatch CLA
no flags Details | Diff
Gestures only for Win32 (107.70 KB, patch)
2010-12-20 13:47 EST, Scott Kovatch CLA
no flags Details | Diff
Gestures only for Mac (44.46 KB, patch)
2010-12-20 14:04 EST, Scott Kovatch CLA
no flags Details | Diff
Common gesture code (25.29 KB, patch)
2010-12-20 14:05 EST, Scott Kovatch CLA
no flags Details | Diff
Common gesture code (15.16 KB, patch)
2010-12-20 17:14 EST, Scott Kovatch CLA
no flags Details | Diff
Gestures only for Mac (43.33 KB, patch)
2010-12-20 17:26 EST, Scott Kovatch CLA
no flags Details | Diff
Touch code for Mac (22.65 KB, patch)
2011-01-04 17:32 EST, Scott Kovatch CLA
no flags Details | Diff
Touch code for Win32 (10.83 KB, patch)
2011-01-04 17:33 EST, Scott Kovatch CLA
no flags Details | Diff
Touch common code (15.40 KB, patch)
2011-01-04 17:33 EST, Scott Kovatch CLA
no flags Details | Diff
Touch common code (14.79 KB, patch)
2011-01-10 20:05 EST, Scott Kovatch CLA
no flags Details | Diff
Touch code for Win32 (10.80 KB, patch)
2011-01-10 20:06 EST, Scott Kovatch CLA
no flags Details | Diff
Touch code for Mac (22.76 KB, patch)
2011-01-10 20:12 EST, Scott Kovatch CLA
no flags Details | Diff
Touch code for Mac (22.17 KB, patch)
2011-01-13 12:44 EST, Scott Kovatch CLA
no flags Details | Diff
Touch code for Win32 (10.78 KB, patch)
2011-01-13 12:45 EST, Scott Kovatch CLA
no flags Details | Diff
Touch stubs (25.80 KB, patch)
2011-01-13 12:46 EST, Scott Kovatch CLA
no flags Details | Diff
Touch common code (16.67 KB, patch)
2011-01-13 12:46 EST, Scott Kovatch CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Scott Kovatch CLA 2009-06-10 19:07:23 EDT
Windows 7 and Snow Leopard (10.6) have API now for multi-touch events. We should come up with some kind of SWT API to receive these events.
Comment 1 Kevin Barnes CLA 2009-10-26 10:02:24 EDT
*** Bug 293307 has been marked as a duplicate of this bug. ***
Comment 2 Mirko Raner CLA 2010-02-18 23:26:07 EST
Related to this, I created this project a while ago: http://eclipsemultitch.sourceforge.net

So far, the plug-in has only a low-level API (Touch, TouchListener), and recognized gestures are directly translated into actions or commands. It would be easily possible to add event notification for higher level events such as "three-finger swipe down", etc.

The code is already licensed under EPL, so I'm happy to contribute it to Eclipse if there is interest.
Comment 3 Scott Kovatch CLA 2010-04-05 16:55:34 EDT
Not for 3.6 at this point, as we are past API freeze.
Comment 4 Chris Aniszczyk CLA 2010-05-05 03:59:36 EDT
+1 for this in 3.7
Comment 5 Scott Kovatch CLA 2010-06-04 11:08:17 EDT
*** Bug 315735 has been marked as a duplicate of this bug. ***
Comment 6 Scott Kovatch CLA 2010-06-17 14:09:38 EDT
(In reply to comment #2)

> The code is already licensed under EPL, so I'm happy to contribute it to
> Eclipse if there is interest.

Is the code available from sourceforge? I couldn't find a download link. I'm investigating possible APIs for this, and wouldn't mind seeing what you've done so far.
Comment 7 Prakash Rangaraj CLA 2010-06-17 23:33:02 EDT
(In reply to comment #6)
> Is the code available from sourceforge? I couldn't find a download link. I'm
> investigating possible APIs for this, and wouldn't mind seeing what you've done
> so far.

Code is accessible from: http://sourceforge.net/projects/eclipsemultitch/develop you can also browse it from:http://eclipsemultitch.git.sourceforge.net/git/gitweb-index.cgi
Comment 8 Mirko Raner CLA 2010-06-18 00:17:12 EDT
The main API so far is in package net.sf.multitouch.api (http://eclipsemultitch.git.sourceforge.net/git/gitweb.cgi?p=eclipsemultitch/eclipsemultitch;a=tree;f=net.sf.eclipsemultitouch/src/java/net/sf/eclipsemultitouch/api). It's more of a low-level API for receiving raw data from a Multi-Touch device, not what we'd probably would want to expose at application level. I'm currently working on more flexible gesture recognition, though.

The way I envision it, the gesture recognition would use something like net.sf.multitouch.api (which itself would not be Eclipse API) and expose some higher-level "GestureListener" style of API. If you look at  net.sf.eclipsemultitouch.MultiTouchListener (the actual listener implementation that adds Multi-Touch functionalities to Eclipse), you can get an idea what sorts of higher-level events we might want to support (threeFingerSwipeLeft, threeFingerSwipeRight, threeFingerControlClick, etc.). We'd probably start out with a selected set of standard gestures, but eventually it would be nice if users could hook up their own custom "gesture recognizers".
Comment 9 Scott Kovatch CLA 2010-06-18 19:38:46 EDT
(In reply to comment #8)

> The way I envision it, the gesture recognition would use something like
> net.sf.multitouch.api (which itself would not be Eclipse API) and expose some
> higher-level "GestureListener" style of API. If you look at 
> net.sf.eclipsemultitouch.MultiTouchListener (the actual listener implementation
> that adds Multi-Touch functionalities to Eclipse), you can get an idea what
> sorts of higher-level events we might want to support (threeFingerSwipeLeft,
> threeFingerSwipeRight, threeFingerControlClick, etc.). We'd probably start out
> with a selected set of standard gestures, but eventually it would be nice if
> users could hook up their own custom "gesture recognizers".

Gestures are interesting. We definitely want to handle all of the system-supplied gestures, but I don't know if we want programmatically defined gestures. I want to read up on that a bit more.

I've set up a wiki page at http://wiki.eclipse.org/SWT/Multitouch_support so we can gather the discussion in one place -- design by bugzilla is painful. Let's keep the discussion going there.Thanks!
Comment 10 Scott Kovatch CLA 2010-09-02 13:48:15 EDT
*** Bug 303208 has been marked as a duplicate of this bug. ***
Comment 11 Vlad Alexa CLA 2010-09-06 07:22:11 EDT
The eclipsemultitch projects implements it's own low level handling of the touches, it would me much easier to just implement NSEvent Apple's API like Firefox did even tho it is more limited it guarantees compatibility

http://developer.apple.com/mac/library/documentation/cocoa/reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html

"Support for touch and gesture events masks have been added to NSEvent in Mac OS X v10.6. Magnify (pinch), swipe, and rotate masks are supported, as are more generic gesture masks. Using touchesMatchingPhase:inView: method a view can get all of the touch events associated with a gesture without overriding the individual touch responder methods defined in NSResponder."
Comment 12 Mirko Raner CLA 2010-09-13 00:28:47 EDT
It's possible that NSEvent might be the better choice for implementing this feature on the Mac. At any rate, we need to make sure that the multi-touch support is designed in such a fashion that different implementations are easily interchangeable. We might need an internal API that could then be implemented by different solutions based on different low-level APIs.
Comment 13 Gorkem Ercan CLA 2010-09-20 07:38:40 EDT
I am working to get multi-touch support to eSWT on mobile devices. Ideally we will use the same APIs in eSWT that SWT implements. Looking at the wiki page I am OK with the direction that this is taking, couple of questions though. 

Is touch events planned to be available for all Controls all the time? What about a style flag to enable them for a particular Control?

Has there been any work started related to this. Some code that I can look at and work on it on eSWT context?
Comment 14 Scott Kovatch CLA 2010-09-20 13:35:50 EDT
(In reply to comment #13)
> I am working to get multi-touch support to eSWT on mobile devices. Ideally we
> will use the same APIs in eSWT that SWT implements. Looking at the wiki page I
> am OK with the direction that this is taking, couple of questions though. 
> 
> Is touch events planned to be available for all Controls all the time? What
> about a style flag to enable them for a particular Control?

Currently I'm planning to add a method setTouchEventsEnabled() that turns them on or off for a given control. 

> Has there been any work started related to this. Some code that I can look at
> and work on it on eSWT context?

I have a working implementation up and running on Mac OS X, and I wrote a Win32 implementation, but I'm waiting for the go-ahead to get hardware to test for the Win32 support. Unfortunately there are no trackpads that do true Windows 7-style gestures; you need a monitor.

Fortunately, the API appears to be holding up pretty well on Mac and Windows, so I'll try to post my work in progress later today.
Comment 15 Scott Kovatch CLA 2010-09-21 19:14:57 EDT
Created attachment 179350 [details]
work in progress

Work in progress with the Mac implementation.
Comment 16 Gorkem Ercan CLA 2010-09-22 14:15:48 EDT
I will work to implement this on Qt. Will let you know how that goes. 

Did you plan an API for checking if the multi touch capability is available? Applications may want to adjust their behavior for multi touch.
Comment 17 Scott Kovatch CLA 2010-09-28 12:49:30 EDT
(In reply to comment #16)

> Did you plan an API for checking if the multi touch capability is available?
> Applications may want to adjust their behavior for multi touch.

I hadn't but that does seem like a good idea. Right now this will only work on Cocoa (10.5 and 10.6) and Windows 7. I would like to implement a full-blown capabilities API for things like this so we don't have to rely on things like checking to see if an API succeeds or not, which isn't sustainable.
Comment 18 Silenio Quarti CLA 2010-10-18 10:03:22 EDT
I saw this post. It seems there is some work to get multi touch API on Ubuntu 10.10 (which is suppose to be released soon). We should see what is the state of the API.

http://www.markshuttleworth.com/archives/455

We should also take a look at:

http://www.tuio.org/
Comment 19 Scott Kovatch CLA 2010-10-31 20:52:21 EDT
For Windows 7, this project looks like it will get me a bit further along without a touch monitor. I was able to install it today on my BootCamp partition and it's working well.

http://multitouchvista.codeplex.com/

The monitor has been requested -- I'm waiting for the approvals to get through the system.
Comment 20 Scott Kovatch CLA 2010-11-01 15:22:37 EDT
(In reply to comment #19)
> For Windows 7, this project looks like it will get me a bit further along
> without a touch monitor. I was able to install it today on my BootCamp
> partition and it's working well.
> 
> http://multitouchvista.codeplex.com/

hmm.. It was working well until I rebooted, and now it's not working again. So much for progress on this today.
Comment 21 Scott Kovatch CLA 2010-11-17 16:46:52 EST
This presentation describes the proposed GTK api for touch events:

http://www.slideshare.net/fscons/multitouching-your-apps

but says that gestures are still to come. 

Canonical has a gesture interface right now, described here:

https://edge.launchpad.net/canonical-multitouch/utouch-geis

It will map well to the current proposed SWT API, but of course, would only work on Ubuntu, assuming I'm reading it properly.
Comment 22 Scott Kovatch CLA 2010-11-30 18:18:36 EST
Created attachment 184198 [details]
work in progress - common files

Latest update:

-- TouchState class rewritten
-- Touch event replaces TouchesBegin, TouchesMoved, TouchesEnded, etc.
Comment 23 Scott Kovatch CLA 2010-11-30 18:19:17 EST
Created attachment 184199 [details]
work in progress - Mac OS X

Mac implementation of touch and gestures
Comment 24 Scott Kovatch CLA 2010-11-30 18:24:22 EST
Created attachment 184200 [details]
work in progress - Win32

Win32 implementation
Comment 25 Scott Kovatch CLA 2010-11-30 20:10:12 EST
Latest work based on HEAD as of 11/30/2010.

Here's what works:

-- Magnify, rotate, and pan gestures on Win32 and Mac
-- Swipe gesture on Mac only
-- Touch events on Win32 and Mac
    - Primary touch, screen X and Y, normalized X and Y on Win32 and Mac.
    - Mac implements 'screenX' and 'screenY' for a touch as relative to the cursor location and the primary touch point on the trackpad.
    - Win32 implements 'normalizedX' and 'normalizedY' as a percentage of the screen location relative to the Control's monitor. So, a touch at 500, 500 on a 1024x768 monitor would have a normalizedX of 0.48828 and normalizedY of 0.65104
    - The equivalent of Windows' 2-fingered pan gesture on the Mac is a scroll-wheel operation, so when a gesture-begin is detected and subsequent scroll wheel events occur, I treat it as a pan gesture and fill in the xDirection and yDirection fields as appropriate.

Still planned:
-- Swipe gesture on Win32
-- Linux support (Community contributions greatly appreciated)

Not planned:
-- Contact area of the touch. This is provided in the TOUCHPOINT structure on Windows 7, but you have to hack it in on Mac OS X via some reverse engineering of a private framework. It's also not clear if we can get this information in Linux.
Comment 26 Scott Kovatch CLA 2010-12-08 17:19:00 EST
If you are following this bug, presumably you have an application in mind that would take advantage of the new API. If so, please take a moment to review the API and make sure it will meet your needs. We are planning to check this in for the M5 milestone, so there's time to adjust the API before the freeze.
Comment 27 Scott Kovatch CLA 2010-12-08 19:49:57 EST
Created attachment 184827 [details]
work in progress - Win32

Win32 update: rotation now works; I was calling SetGestureConfig with the wrong values. Swipe is implemented as a flick -- this is temporary and may not be in the final version.

Touch events now report if they are from a direct or indirect input source.
Comment 28 Scott Kovatch CLA 2010-12-08 19:51:02 EST
Created attachment 184828 [details]
work in progress - common files

New constants for touch input source types.
Comment 29 Scott Kovatch CLA 2010-12-08 19:55:24 EST
Created attachment 184829 [details]
work in progress - Mac OS X

-- Lock rotate and magnify gestures so they don 't interleave. Once a rotate or magnify gesture starts, events of the other type will not be sent until the first gesture is finished.
-- Swipe and pan directions are now consistent. Left or up is negative, down or right is positive.
Comment 30 Scott Kovatch CLA 2010-12-09 19:06:47 EST
Created attachment 184914 [details]
work in progress - Win32

Swipe on Win32 implemented with tablet flicks. Flick up, down, left, or right generates a SWT.Gesture with GESTURE_SWIPE detail and xDirection and yDirection set accordingly.

Added Display.isTouchEnabled(), which returns true if a touch device is attached, ready, and generating multi-touch events. On Mac this always returns true if the OS version is greater than 10.5.3 (when gesture support was added to MacBooks.)
Comment 31 Scott Kovatch CLA 2010-12-09 19:09:46 EST
Created attachment 184915 [details]
work in progress - Mac OS X

Last change to Mac to get back in sync with Win32.

With this change I'm feature complete on Win32 and Mac.
Comment 32 Scott Kovatch CLA 2010-12-13 19:02:53 EST
Created attachment 185101 [details]
Gestures only for Win32

Win32 implementation of gestures. This also has the PI calls for touch, but we're working out details in the API. 

Felipe, I cleaned up the natives so it builds with the Windows Server 2003 SDK -- can you please apply it and make sure it builds for you before I check it in?
Comment 33 Scott Kovatch CLA 2010-12-14 13:25:29 EST
Created attachment 185155 [details]
Gestures only for Win32

Cleanup of previous attempt, with WinCE defines.
Comment 34 Scott Kovatch CLA 2010-12-14 19:02:39 EST
Created attachment 185192 [details]
Gestures only for Win32

Changes after code review. GestureBegin and GestureEnd were removed and moved to the event detail field. GESTURE_BEGIN and GESTURE_END are now set when GESTUREINFO reports it in the flags.
Comment 35 Scott Kovatch CLA 2010-12-20 13:47:42 EST
Created attachment 185582 [details]
Gestures only for Win32

Should be the last iteration for Win32 gestures. Mac patch shortly.
Comment 36 Scott Kovatch CLA 2010-12-20 14:04:02 EST
Created attachment 185586 [details]
Gestures only for Mac
Comment 37 Scott Kovatch CLA 2010-12-20 14:05:18 EST
Created attachment 185587 [details]
Common gesture code

Common bits for gestures. Use this plus the Mac-only attachment for the Mac. Win32 has the platform code plus the common bits.
Comment 38 Scott Kovatch CLA 2010-12-20 17:14:57 EST
Created attachment 185600 [details]
Common gesture code

Forgot to take out EndGesture, and the touch API isn't ready yet.
Comment 39 Scott Kovatch CLA 2010-12-20 17:26:48 EST
Created attachment 185601 [details]
Gestures only for Mac

Left behind some touch API in Display.
Comment 40 Scott Kovatch CLA 2010-12-20 19:49:00 EST
Gesture code checked in for all platforms (stubs on all but Win32 and Mac OS X.) Touch is being reviewed; we're looking into a new object to represent the input source.
Comment 41 Scott Kovatch CLA 2011-01-04 17:32:11 EST
Created attachment 186057 [details]
Touch code for Mac

Latest touch support for Mac diff. Also has a bug fix or two for gestures.
Comment 42 Scott Kovatch CLA 2011-01-04 17:33:00 EST
Created attachment 186058 [details]
Touch code for Win32

Touch for Win32. Has small gesture fixes as well.
Comment 43 Scott Kovatch CLA 2011-01-04 17:33:57 EST
Created attachment 186059 [details]
Touch common code

TouchEvent, TouchAdapter, TouchListener, plus touch state-related classes.
Comment 44 Silenio Quarti CLA 2011-01-10 11:13:22 EST
We should not have the adapter classes (TouchAdapter and GestureAdapter). Both listener have only on method, the adapter is not useful.
Comment 45 Scott Kovatch CLA 2011-01-10 20:05:51 EST
Created attachment 186448 [details]
Touch common code
Comment 46 Scott Kovatch CLA 2011-01-10 20:06:16 EST
Created attachment 186449 [details]
Touch code for Win32
Comment 47 Scott Kovatch CLA 2011-01-10 20:12:34 EST
Created attachment 186450 [details]
Touch code for Mac
Comment 48 Silenio Quarti CLA 2011-01-12 16:42:29 EST
Some comments:

- Do not forget to delete the GestureAdpter class.

- TouchEvent.touches need java doc

- Sorry I am changing my mind. Let's add back the primary boolean in Touch and remove TOUCHSTATE_PRIMARY. The state represents what changed in a given Touch from the last TouchEvent. So having the primary state would make the application code harder because it would have to mask TOUCHSTATE_PRIMARY out all the time to determine what changed.

- We should not have the TOUCHSTATE_STATIONARY constant at all. Without TOUCHSTATE_PRIMARY, it is easy to test state==0 to determine that there is no change in the state of the Touch since the last TouchEvent. This info can be added in the java doc of Touch.state.

- Control.setTouchEventsEnabled() on windows does not have the @since 3.7 tag

- I believe the values Touch.x/y should not be in screen coordinates. They should be in touch source coordinates. On Windows, the current patch is correct because the touch source is the screen. On Mac, the x,y would be calculated as follows:

NSPoint normalizedPos = touch.normalizedPosition();
double normalizedX = normalizedPos.x;
double normalizedY = 1 - normalizedPos.y;
int x = (int) (normalizedX * deviceSize.width);
int y = (int) (normalizedY * deviceSize.height);

If the application needs screenX,screenY, it can calculate it using the device x,y and the pointer position when the first touch (primary) happened.

- The constructor of TouchSource should not be public. Clients are not allowed to create these objects.

- TouchSource should not have public fields because anyone could change their values and this would affect future touch events since we are always returning the same object (hashtable). We should add getters and remove the public modifiers of the fields.

	TouchSource.getBounds()
	TouchSource.isDirect()

- Touch does not need serialVersionUID since it is not Serializable (events are).

- We need the stubs for the other platforms
Comment 49 Scott Kovatch CLA 2011-01-12 18:08:02 EST
No argument on the other comments.

> - I believe the values Touch.x/y should not be in screen coordinates. They
> should be in touch source coordinates. On Windows, the current patch is correct
> because the touch source is the screen. On Mac, the x,y would be calculated as
> follows:
> 
> NSPoint normalizedPos = touch.normalizedPosition();
> double normalizedX = normalizedPos.x;
> double normalizedY = 1 - normalizedPos.y;
> int x = (int) (normalizedX * deviceSize.width);
> int y = (int) (normalizedY * deviceSize.height);
> 
> If the application needs screenX,screenY, it can calculate it using the device
> x,y and the pointer position when the first touch (primary) happened.

Actually, the notion of coming up with a screen x and y value on the Mac always felt like a hack to me. It was an idea I saw in Qt, and while I understood it how it was calculated I wasn't sure how you would go about using it. You really have no need for it on the Mac -- deltas are what matter. 

Making x and y be touch device coordinates makes more sense. It's consistent and works on all platforms. I'm building a test app right now with the API and haven't found the need to worry about the absolute position of the touch yet.
Comment 50 Scott Kovatch CLA 2011-01-13 12:44:49 EST
Created attachment 186761 [details]
Touch code for Mac

Hopefully final Mac touch code
Comment 51 Scott Kovatch CLA 2011-01-13 12:45:32 EST
Created attachment 186762 [details]
Touch code for Win32
Comment 52 Scott Kovatch CLA 2011-01-13 12:46:02 EST
Created attachment 186763 [details]
Touch stubs

Stubs for other platforms.
Comment 53 Scott Kovatch CLA 2011-01-13 12:46:36 EST
Created attachment 186764 [details]
Touch common code

Hopefully last common changes
Comment 54 Scott Kovatch CLA 2011-01-17 17:58:56 EST
At long last, done!

Touch and gesture API is now in HEAD > 20110117.
Comment 55 Scott Kovatch CLA 2011-01-17 17:59:07 EST
.
Comment 56 Mario Winterer CLA 2011-02-28 11:10:42 EST
Is it possible to simulate multi-touch events/gestures via display.postEvent(...)? I can't see any changes on that method.
Comment 57 Scott Kovatch CLA 2011-02-28 12:51:58 EST
(In reply to comment #56)
> Is it possible to simulate multi-touch events/gestures via
> display.postEvent(...)? I can't see any changes on that method.

No, not with the current API. To be honest, we hadn't considered the possibility of sending them via Display.post(), but I suspect it's not possible on Windows 7 and I'm pretty sure it can't be done right now on OS X. There are no low-level equivalents for touch events in CoreGraphics in OS X 10.6.
Comment 58 Markus Keller CLA 2015-11-12 09:39:54 EST
Filed bug 482018 for the missing implementation on GTK.

Added a warning to the APIs: http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=638f934232d5f4888b370b7f5d90cae4c955117c