====== FAQ ====== **This is an archive for Gestureworks 1.** To learn about the new Gestureworks, see the [[http://gwiki.gestureworks.com/|Gestureworks 2 Wiki]] ---- ===== Getting Started ===== ==== What is the difference between Gestureworks Flash and Gestureworks Core? ==== 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++. ==== What hardware do I need in order to create applications with Gestureworks Core? ==== 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. ==== What software do I need in order to create applications with Gestureworks Core? ==== You need the Gestureworks Core SDK, Windows 7 or 8 and a compatible programming language of your choice. ==== What is GML? ==== 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 [[http://www.gestureml.org/|The GestureML Wiki]]. ---- ===== Gestureworks Features ===== ==== What languages does Gestureworks Core support? ==== 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. ==== What language is Gestureworks core written in? ==== Gestureworks Core leverages the power and efficiency of C++. ==== What version of Windows is Gestureworks Core compatible with? ==== Gestureworks Core currently works with Windows 7 and 8. ==== Does Gestureworks Core work with Linux or OSX? ==== Gestureworks Core currently works only with Windows 7 and 8. ---- ===== Creating Applications ===== ==== Is Gestureworks Core compiled into my application? ==== No, Gestureworks Core is a [[http://en.wikipedia.org/wiki/Dynamic-link_library|dynamic-link library]]. ==== What libraries are included in the SDK package? ==== The SDK includes Gestureworks Core libraries for use with 32 and 64 bit applications in Windows 7 and 8. ==== Can Gestureworks Core be used to create commercial software? ==== Yes, as long as the terms of the license agreement are satisfied. ---- ===== Gestures & Multitouch ===== ==== Can I create my own gestures? ==== Absolutely. The Gestureworks processing core is configurable using [[http://www.gestureml.org/|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. ==== Can I share gestures that I create with Gestureworks ? ==== Yes! Please use the [[http://forums-core.gestureworks.com/|Gestureworks Forums]] to discuss and share GML. ==== How many touch points can Gestureworks process? ==== GestureWorks imposes no limitation on the number of touch points that can be processed. This is limited only by hardware. ==== Does Gestureworks allow multi-device input? ==== Yes, as long as devices don’t try to use the same IDs for touchpoints at the same time. ==== Can Gestureworks be used on multiple displays? ==== Yes, see above. ==== Does Gestureworks allow TUIO input? ==== Not directly. However, Gestureworks allows developers to create their own "touch" input. An example of this is on the way, keep an eye on [[tutorials|the tutorials]]. ==== What is OCGM? ==== 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 [[http://openexhibits.org/paper/objects-containers-gestures-and-manipulations-universal-foundational-metaphors-of-natural-user-interfaces/|paper]] by Ron George and Joshua Blake. ==== Is there a list of all the supported gesture types in GML? ==== Yes, please see the [[http://www.gestureml.org/dokuwiki/doku.php#gml_example_index|GML Example Index]]. ---- ===== Bindings ===== ==== What is a binding? ==== 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. ==== What version of .NET is compatible with Gestureworks Core? ==== Any version after 3.5. ==== What version of Python is compatible with Gestureworks Core? ==== 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. ==== What version of Java is compatible with Gestureworks Core? (Java SE 6) ==== Any version of the JDK should work with Gestureworks. ==== What version of C++ is compatible with Gestureworks Core? ==== Any version with a Windows-compatible linker. ==== What is the recommended frame rate for Gestureworks Core? ==== 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. ==== If I have more than one touch object inside a window that I have registered as a touch object do I have to also register each child touch object? ==== 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. ==== What do I do If I want to pause event consumption from Gestureworks? ==== You can stop calling processFrame. ==== How do I pause processing gestures on a specific touch object? ==== You can either stop processing gesture events in the client application or use the disableGesture function. ---- ===== Trouble Shooting ===== Following are some cursory troubleshooting tips, however, you may find more details on the [[http://forums-core.gestureworks.com/|Gestureworks Core Forums]] as well as details in the [[tutorials|Tutorials]]. ==== The GML file will not load properly - what could be going wrong? ==== 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 [[http://www.gestureml.org/dokuwiki/doku.php/gestureml#mapping|here]]. ==== What do I do if I have touch data and I registered a gesture on a touch object but it will not respond to the gesture? ==== 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|Tutorials]] for the proper methods for receiving and handling gesture events. ==== What do I do if I am receiving touch data but it does not align properly with where I touch the screen? ==== 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.