This is an archive for Gestureworks 1.
To learn about the new Gestureworks, see the Gestureworks 2 Wiki
Gestureworks Flash is the predecessor to Gestureworks Core and is written in ActionScript. Gestureworks Flash is tightly integrated into Flash's display framework, and it works seamlessly with Flash/Air development and deployment. Gestureworks Flash provides a gesture based web solution and has many multitouch components built into the framework.
Gestureworks Core is completely language independent and allows the use of any language or platform that can call into DLL files. It utilizes thin language-specific bindings which create an interface between the Gestureworks Core and the application. Gestureworks Core utilizes the processing algorithms of the Flash version and optimizes them with the power and efficiency of C++.
All you need is a computer with Windows 7 or later and some type of input device. Gestureworks can receive touch points via a touchscreen or you can give it formatted input from any other type of device.
You need the Gestureworks Core SDK, Windows 7 or 8 and a compatible programming language of your choice.
GML is an extensible markup language used to define gestures that describe interactive object behavior and the relationships between interactive objects in an application. Gesture Markup Language has been designed to enhance the development of multi-user multitouch and other HCI device driven applications. For more information please visit The GestureML Wiki.
GestureWorks Core supports any language that allows you to load or call into a dynamic link library (DLL). It currently ships with pre-built bindings for C++, C#/.NET, Python and Java.
Gestureworks Core leverages the power and efficiency of C++.
Gestureworks Core currently works with Windows 7 and 8.
Gestureworks Core currently works only with Windows 7 and 8.
No, Gestureworks Core is a dynamic-link library.
The SDK includes Gestureworks Core libraries for use with 32 and 64 bit applications in Windows 7 and 8.
Yes, as long as the terms of the license agreement are satisfied.
Absolutely. The Gestureworks processing core is configurable using Gesture Markup Language (GML). This means that you can easily create or modify gestures outside of your application without needing to modify the source code.
Yes! Please use the Gestureworks Forums to discuss and share GML.
GestureWorks imposes no limitation on the number of touch points that can be processed. This is limited only by hardware.
Yes, as long as devices don’t try to use the same IDs for touchpoints at the same time.
Yes, see above.
Not directly. However, Gestureworks allows developers to create their own “touch” input. An example of this is on the way, keep an eye on the tutorials.
OCGM (pronounced like Occam in Occam’s Razor) describes a set of fundamental metaphors of Natural User Interfaces. It was proposed by Ron George as a replacement for the WIMP philosophy for GUI design. For more information, please read this paper by Ron George and Joshua Blake.
Yes, please see the GML Example Index.
A binding creates an interface or API that provides services from another library. In this case, each binding provides access to the Gestureworks Core in different languages.
Any version after 3.5.
Any version of Python will work with Gestureworks as long as you can load the functions from the DLL. Since the ctypes library was introduced in version 2.5 we don’t recommend using an older version.
Any version of the JDK should work with Gestureworks.
Any version with a Windows-compatible linker.
This usually depends on the display frame rate of the client application. It is recommended that you try to match Gestureworks' frame rate to that of your application.
Registering a window is a separate operation from registering a touch object. After you register the window, every object that you want to receive touch or gesture events must also be registered with Gestureworks.
You can stop calling processFrame.
You can either stop processing gesture events in the client application or use the disableGesture function.
Following are some cursory troubleshooting tips, however, you may find more details on the Gestureworks Core Forums as well as details in the Tutorials.
Are you calling loadGML through the core API? If so, make sure you are giving Gestureworks a fully qualified path to the GML file you wish to use. You will also need to use escape characters where necessary for your language (e.g., "C:\\path\\to\\my_gestures.gml“). Finally, make sure you are using proper syntax and formatting for your GML. You can find examples of syntax here.
There are many possible reasons that this could happen. First, make sure that you have registered the object you wish to manipulate with Gestureworks. Are you adding touch points to the object when they happen (via a hit test or other means)? Are you using the same name in both function calls? Finally, are you receiving gesture events? If not, you may have incorrectly configured your gesture in the GML. If so, there may be a problem with your transformation algorithms. Please check the Tutorials for the proper methods for receiving and handling gesture events.
Ensure that you initialized Gestureworks with the proper resolution of the touch display your are using. Gestureworks considers the upper left corner of the display to the origin with x values increasing toward the right and y values increasing toward the bottom of the screen. If the application or framework you are using to draw to the screen uses a different coordinate system you will have to manually compensate for the difference.