Contents
1.2.1 Supported Browsers and Operating Systems
1.3.2 Standalone Webplugin Installers
1.4.1 WacomNetscape.plugin (for
Firefox) WacomSafari.plugin (for Safari)
2.1 Supported Tablets and Webplugin versions
2.4 Webplugin Pen API (WebPAPI) Properties
2.6 Updating Web Apps from 1.0 to the
2.0.x.x Webplugin
3 Webplugin Feelª Multi-Touch API
3.5 Webplugin Feelª Multi-Touch API Properties
3.6 Webplugin Feelª Multi-Touch API Events
This document describes the usage and API for a new, updated version of the Wacom Webplugin. The Webplugin is a browser plugin (add-on) component that enables javascript web apps to receive Wacom tablet pen data and touch data (in supported Wacom touch-enabled tablets).
The new Webplubin, which can be used as a replacement for the older 1.0 Webplugin, includes the same pen properties supported in the older Webplugin. Applications may continue to use the older Webplugin for the present, but it is strongly encouraged that applications update to the new 2.0 Webplugin described in this document. See section 2.6 for details. At some point, support for the older Webplugin will be discontinued.
The
Wacom Tablet Plugin (Webplugin) is a browser extension that provides supports
for obtaining certain tablet properties, which can be used in web
applications. The plugin works in conjunction with an installed Wacom
tablet driver service to provide pen data such as pressure and pen position
(see section 2) and
touch data such as number of fingers touching tablet and finger data (see
section 3).
For example, a web drawing application (such as the one
provided in the 'Scribble' example) can be created that uses tablet pen
pressure and position properties to allow the user to do free-form drawing on a
web page.
This document provides a summary of the plugin API, with
an explanation of how the plugin can be installed and used on either Windows or
Mac OSX systems.
Examples showing how to use the Webplugin pen and touch
APIs can be found at Wacom Software Development Support: http://www.wacomeng.com/web/index.html.
Although plugin components are
automatically installed on the user system when a Wacom tablet driver software
is installed, standalone plugin installers can be found at: http://www.wacom.com/productsupport/plugin.php, for those
systems that have not updated their tablet driver software.
|
Windows Versions |
Mac Versions |
Changes |
Date |
Author |
|
1.0.0.1 |
1.0.0.1 |
Initial plugin release - Windows and Mac OS support |
12/11/2008 |
B. Straub |
|
1.0.0.3 |
1.0.0.1 |
Added Version property, support for Opera, Chrome, Safari browsers, bugfixes |
09/01/2009 |
R. Cohn |
|
1.1.0.4 |
1.0.0.1 |
Added info on Windows plugins, URL locations, issues |
09/29/2009 |
R. Cohn |
|
1.1.0.4 |
1.0.0.1 |
Fixed installer URL |
12/02/2009 |
R. Cohn |
|
1.1.0.5 |
1.0.0.1 |
Added sub-pixel resolution & tablet position Windows support |
06/17/2010 |
R. Cohn |
|
1.1.0.8
(IE) 1.1.0.6 (NP) |
1.0.0.1 |
Added TabletModel property. |
11/29/2010 |
R. Cohn |
|
1.1.0.9
(IE) 1.1.0.7 (NP) |
1.0.0.1 |
Added SetFocus (Windows only) |
01/10/2010 |
R. Cohn |
|
1.1.0.10
(IE) 1.1.0.8 (NP) |
1.0.0.1 |
Fixed string handling. (Windows only) |
01/26/2010 |
R. Cohn |
|
|
|
|
|
|
|
2.0 |
2.0 |
Updated to
Firebreath platform; combined PenAPI and TouchAPI info |
05/23/2010 |
R. Cohn D. Ralley |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note that Firefox, Safari, Chrome and Opera are whatÕs known as ÒNetscapeÓ browsers. Use of the Webplugin for these browsers requires a different API than for Internet Explorer, which uses the ÒActiveXÓ API. The Webplugin described in this document supports both API types in the same plugin component.
The Webplugin is supported on these browsers and operating systems:
|
|
Windows 7, Vista, XP |
Mac OSX 10.5.8, 10.6 |
|
Firefox v4 |
yes |
yes |
|
Safari v5 |
yes |
yes |
|
Chrome v10 |
Yes |
n/a |
|
Internet Explorer v8 |
Yes |
n/a |
There
are is one plugin module that supports plugin operation for both Internet
Explorer (IE) and Netscape-plugin (NP) browsers.
When a
user installs the Wacom tablet driver software, all of the necessary Webplugin
components are installed on the system, and the user can immediately create
javascript applications that can use Webplugin properties to get pen and touch
data (on supported tablets).
See programming examples at http://wacomeng.com/web/index.html.
In
addition to the plugin components installed by the Wacom tablet driver
installation, there are standalone Webplugin installers (Windows only). Normally, the standalone Webplugin
installers would not be needed as the Webplugin components are installed
automatically with the Wacom tablet driver software. However, if the Webplugin is not
installed (because the user has inadvertently uninstalled it, or the user has
an older version of the tablet driver software installed), then there is
another option to get the Webplugin.
See section 1.3.2
for details.
The Webplugin can be identified in an HTML web app by its mime-type. Here are the mime-types for the older and newer Webplugins:Version 1.0 Webplugin uses type="application/x-wacom-tablet"Version 2.0 Webplugin uses type="application/x-wacomtabletplugin" The IE browser uses the ActiveX API and identifies the Webplugin by a CLASSID (GUID). Here are the older and newer Webplugin GUIDs:Version 1.0 Webplugin uses classid="449E4080-7C69-4767-A1AE-6AAE25B0B906"Version 2.0 Webplugin uses classid="092dfa86-5807-5a94-bf3b-5a53ba9e5308"
á
FBWTPInstall.exe:
This
standalone Webplugin installer, which supports both IE and NP browsers, is
available from: http://www.wacom.com/productsupport/plugin.php
. This is the installer that is
automatically installed when the Wacom tablet driver is installed.
á FBWacomTabletPlugin.cab:
This standalone Webplugin installer, which supports IE browsers only, is available from: http://www.wacom.com/U/plugins/Windows
á FBWacomTabletPlugin.xpi:
This standalone Webplugin installer, which can be installed only on Firefox, is available from: http://www.wacom.com/U/plugins/Windows
OS X plugins for all supported Netscape-compatible
browsers. To install:
cp
-r WacomNetscape.plugin "/Library/Internet Plug-Ins"
cp
-r WacomSafari.plugin "/Library/Internet Plug-Ins"
The Wacom Webplugin pen API (WebPAPI) is a browser plugin interface for pen data access from all Wacom consumer and professional tablets. The WebPAPI is included in the Webplugin component that also includes the Wacom Webplugin Feelª Multi-Touch API (WebTAPI).
WebPAPI can be used by web developers who want access to Wacom tablet pen data for development of applications that use pen data. Highlights of WebPAPI include data reports of:
á Pen location
á Pen pressure data
á Pen rotation data
á Pen tilt data
á Pen eraser or tip indication
á WebPAPI properties are supported on Webplugin versions 1.0 through 2.0.
á WebPAPI is currently supported on all Wacom professional and consumer tablets.
The necessary developer components to use WebPAPI are installed with the tablet driver (see Error! Reference source not found. for supported driver versions and tablets); there are no additional "SDKs" or modules to add to immediately begin programming web applications to WebPAPI.
WebTAPI examples can be found at http://www.wacomeng.com/web/index.html
The diagram in Figure 1 shows an overview of where the WebPAPI fits into the system architecture. For simplicity, the plugin is shown as being within the process space of the browser. In actuality, most browsers have gone to an "out-of-process" model , in which the plugin instance is launched in its own process.
The WebPAPI is accessed from the Webplugin component, which is installed on the user's system with the tablet driver installation. The Webplugin caches pen data as it is produced by the user drawing the pen across the tablet. When a javascript app wants to read the latest pen data, it simply makes one of the WebPAPI property calls (see Properties list below). A standard way to sync up the userÕs pen movement with pen data is for the javascript app to read pen data on system mouse events (see examples below).
Figure 1 - Webplugin Pen API Architecture Overview
Components installed with the
tablet driver. javascript web application WebPAPI (in
Webplugin) Pen data Raw pen
data Wacom
tablet pen
driver Wacom pen tablet Wintab32 Operating system Pen data Browser
(IE, Firefox,...)
All
versions of the plugin expose the same properties. Note, however, that
only the professional Wacom tablets (Intuos, Cintiq) support all
properties. Unsupported properties return a zero value. The following table describes the
supported properties:
|
Property |
Type |
Default
Value |
Description |
Supported Tablets |
Read/Write |
|
isEraser |
BYTE |
0
(false) |
TRUE if the
last-seen packet came from an eraser, FALSE otherwise. |
Consumer,
Professional |
Read-only |
|
isWacom |
BYTE |
1 (true: connected) 0 (false: not
connected) |
TRUE if the
object is attached to a Wacom Wintab, FALSE otherwise. |
Consumer,
Professional |
Read-only |
|
pointerType |
LONG |
0 |
0 = Out of
Proximity 1 = Pen 2 = Mouse (also
known as 'puck') 3 = Eraser |
Consumer,
Professional |
Read-only |
|
posX |
LONG |
0 |
The
last-seen packet's X position in pixel coordinates. |
Consumer,
Professional |
Read-only |
|
posY |
LONG |
0 |
The last-seen
packet's Y position in pixel coordinates. |
Consumer,
Professional |
Read-only |
|
pressure |
FLOAT |
0.0 (if connected) 1.0 (if not
connected) |
The last-seen
packet's pressure, in the range [0.0,1.0]. |
Consumer,
Professional |
Read-only |
|
rotationDeg |
FLOAT |
0.0 |
The last-seen
packet's rotation value in degrees. |
Professional |
Read-only |
|
rotationRad |
FLOAT |
0.0 |
The last-seen
packet's rotation value in radians. |
Professional |
Read-only |
|
sysX |
FLOAT |
0.0 |
The last-seen
packet's X position in pixel coordinates (to sub-pixel resolution). |
Consumer,
Professional |
Read-only |
|
sysX |
FLOAT |
0.0 |
The last-seen
packet's Y position in pixel coordinates (to sub-pixel resolution). |
Consumer,
Professional |
Read-only |
|
tabX |
LONG |
0 |
The
last-seen packet's X position in tablet coordinates. |
Consumer,
Professional |
Read-only |
|
tabY |
LONG |
0 |
The last-seen
packet's Y position in tablet coordinates. |
Consumer,
Professional |
Read-only |
|
SetFocus |
BOOL |
n/a |
True: forces
browser page containing plugin to get focus for tablet data events. False: allows
another page to get focus for tablet data events. |
Consumer,
Professional |
Write-only |
|
TabletModel |
STRING |
""
(empty string) |
Returns model
name of last touched tablet. (Eg:
"Intuos4 Medium") |
Consumer,
Professional |
Read-only |
|
TabletModelID |
STRING |
""
(empty string) |
Returns tablet ID
of last touched tablet. (Eg:
"PTK-640") |
Consumer,
Professional |
Read-only |
|
tangentialPressure |
FLOAT |
0.0 |
The last-seen
packet's tangential pressure value, in the range [0.0,1.0] |
Professional |
Read-only |
|
tiltX |
FLOAT |
0.0 |
The last-seen
packet's X tilt value, in the range [-1.0, 1.0]. |
Professional |
Read-only |
|
tiltY |
FLOAT |
0.0 |
The last-seen
packet's Y tilt value, in the range [-1.0, 1.0]. |
Professional |
Read-only |
|
version |
LONG |
<plugin
version> |
The version of
the plugin in decimal form (eg: 1.1.0.1 is reported as 1101). |
Consumer,
Professional |
Read-only |
A javascript application using the WebPAPI should adopt a mouse event-driven model, in which the app would query for pen properties upon mouse down, mouse drag and mouse up events. For example, to get pressure and pen X and Y position, the following javascript can be used:
function mousedown(evt)
{
var canvas
= document.getElementById('canvas');
canvas.onmousemove=mousedrag;
É
}
function mousedrag(evt)
{
var plugin =
document.getElementById('wtPlugin');
var pressure = plugin.penAPI.pressure;
var posX = plugin.penAPI.posX;
var posY = plugin.penAPI.posY;
É
}
<body É >
<canvas
id="canvas"
onmousedown="mousedown(event);"
É>
</canvas>
</body>
Complete examples can be found on http://wacomeng.com/web/index.html
In updating a web app from Webplugin 1.0 to 2.0, the following should be done:
á Change the plugin mime-type from type="application/x-wacom-tablet" to type="application/x-wacomtabletpluginÓ
á Change access to the properties from plugin.<property> to plugin.penAPI.<property>
á
For example, using Webplugin 1.0:
<html>
<head>
<script
type="text/javascript">
function
getPressure()
{
var
plugin = document.getElementById('wtPlugin');
return
plugin.pressure;
}
É
</script>
</head>
<body>
<object id="wtPlugin" type="application/x-wacom-tablet" É>
É
</object>
</body>
É
</html>
á For example, using Webplugin 2.0:
<html>
<head>
<script
type="text/javascript">
function
getPressure()
{
var
plugin = document.getElementById('wtPlugin');
return
plugin.penAPI.pressure;
}
É
</script>
</head>
<body>
<object id="wtPlugin"
type="application/x-wacomtabletplugin" É>
É
</object>
</body>
É
</html>
Complete examples can be found at: http://wacomeng.com/web/index.html
The Wacom Webplugin Feelª Multi-Touch API (WebTAPI) is a browser plugin interface for touch data access from certain Wacom tablets. The WebTAPI is included in the Webplugin component that also includes the Wacom Webplugin pen API (WebPAPI).
WebTAPI can be used by web developers who want access to Wacom raw touch tablet data for development of touch applications. Note that WebTAPI gives the developer freedom to use finger data to control web applications or to define custom gestures for his application. Highlights of WebTAPI include reports of:
á Number and type of supported touch tablets attached to the system
á Capabilities of attached supported touch tablets
á Number of fingers touching the tablets
á Raw finger data for each touching finger
á Touch tablet raw finger data arrivals
á Touch tablet attach events
á Touch tablet detach events
á WebTAPI is not supported on Webplugin versions prior to 2.0
á WebTAPI is not supported on Wacom tablet drivers prior to 5.2.5 (Bamboo tablet driver)
á WebTAPI is currently supported on these Bamboo tablets: CTT-470, CTH-470, CTH-670.
The necessary developer components to use WebTAPI are installed with the tablet driver; there are no additional "SDKs" or modules to add to immediately begin programming web applications to WebTAPI.
WebTAPI examples can be found at http://www.wacomeng.com/web/index.html
The diagram in Figure 2 shows an overview of where the WebTAPI fits into the system architecture. For simplicity, the plugin is shown as being within the process space of the browser. In actuality, most browsers have gone to an "out-of-process" model , in which the plugin instance is launched in its own process.
The WebTAPI is accessed from the Webplugin component, which is installed on the user's system with the tablet driver installation. The Webplugin app registers to receive notification when touch devices are attached and detached from the system, as well as notifications of when data becomes available (when the user touches the tablet). When the app receives attach and detach events, it can query for the current list of devices, select one, and query for that device's touch device capabilities (eg: how many fingers supported, tablet dimensions, etc.). Upon receipt of a touch data notification, the app can query WebTAPI for touch data.
Note that the web app, through use of the Open.PassThru argument (see section 3.5.5), can decide whether to consume the data or just observe it and allow it be passed to other processes on the system. For example, the web app could implement a "scribble" app to draw touch data, and allow the data to be passed on to the system to move the system cursor.
Components
installed with the tablet driver. Raw
finger data Event Attach
Event Detach
Event javascript web
application WebTAPI (in Webplugin) Raw finger data Touch device
capabilities Raw finger data Events, Touch
device Capabilities Raw
finger data Wacom tablet
touch driver Wacom touch tablet Wacom tablet
touch driver I/F Operating system Browser (IE, Firefox,...)
A javascript application using the WebTAPI should adopt an event-driven model, waiting for notification from the Webplugin on touch device attach, detach and data events. In pseudo-code, such an application would be structured similar to the following:
Register for
attach events
Register for
detach events
On Attach event:
Read
the current list of attached touch devices
Open
a device to receive touch data from
Register to
receive touch data from that device
On Raw Finger
Data event:
Read
the touch data
Use
the data in the app
On Detach event:
Read
the current list of attached touch devices
If
device in use has gone away, close that device
See the examples in the properties
below for actual javascript examples.
Complete examples can be found on http://wacomeng.com/web/index.html
Here is an overview of the WebTAPI properties. They are described in detail in the following sections.
|
Property
or Event Name |
Param |
Return
Type |
Description |
Read/Write |
|
TouchRawFingerData |
deviceID |
FB::VariantMap |
Returns
latest raw finger touch data to the user from the specified touch device. |
Read-only |
|
TouchDeviceCapabilities |
deviceID |
FB::VariantMap |
Returns
the capabilities for the specified touch device. |
Read-only |
|
TouchDeviceAttached |
None |
Bool |
Returns
status of whether any touch devices are physically attached to the system. |
Read-only |
|
TouchDeviceIDList |
None |
FB::VariantList |
Returns
list of attached touch device IDs. |
Read-only |
|
Open |
deviceID passThru |
0 on
success; else non-0 |
Attach
to specified device. |
Write-only |
|
Close |
deviceID |
0 on
success; else non-0 |
Detach
from the specified touch device. |
Write-only |
|
TouchDataEvent |
n/a |
n/a |
Fires
when touch data is received when any touch data is received. |
|
|
TouchDeviceAttachEvent |
n/a |
n/a |
Fires
when any supported touch device is attached to the system. |
|
|
TouchDeviceDetachEvent |
n/a |
n/a |
Fires
when any supported touch device is detached from the system. |
|
Returns latest raw finger touch data to the user from the specified touch device.
deviceID Int
For now, the only deviceID
accepted will be -1 or a deviceID returned from TouchDeviceCapabilities, which will mean to return data from the
first touch device found, or the data for that specified device respectively. If a deviceID other than a valid ID is used, then the Status flag in the
returned FB::VariantMap will indicate an error.
FB::VariantMap[1] consisting of the following members:
NumFingers Int //
#fingers in this data packet
DeviceID Int //
device from which data is sent
Status Int //
indicates if data is valid (see below)
FingerList FB::VariantList //
list of finger data
FingerList[0]
FB::VariantMap // Data for Finger1
FingerID Int //
as specified in data packet
PosX float // X coord passed back from API (see
below)
PosY float // Y coord passed back from API (see
below)
Width float // logical width of finger contact area
Height float // logical height of finger contact area
Orientation float //
angle of finger contact ellipse from vertical
Confidence Int //
true if driver believe this is valid touch
Sensitivity Short //
strength of the contact
FingerState Int //
latest activity for this finger (see below)
FingerList[1]
FB::VariantMap // Data for Finger2
FingerID Int
PosX float
PosY float
Width float
Height float
Orientation float
Confidence Int
Sensitivity Short
FingerState Int
...
The size of the returned FB::VariantMap will depend on the number of fingers in the most recent touch data packet. If dynamic FB::VariantMap is not supported, then the plugin will pre-allocate a map for 10 fingers, and fill in the number of fingers of data from the latest touch API data packet.
NumFingers – number of detected fingers in the latest data packet. The WebPlugin will fill in touch data for each finger.
DeviceID – the unique identifier of the tablet from which the touch data comes
Status – indicates whether the FB::Variant returned contains valid data. If data is valid then, Status will be zero. If data is not valid, then Status will be the value -1.
PosX and PosY –
will be logical units in the range of 0 to 1.0 for opaque tablets.
will be pixel screen coordinates in the virtual desktop range for integrated tablets. *
Width and Height – represents logical width and height of a finger
contact. *
Sensitivity – strength of the contact. This is not pressure. This is a device/user specific indication of the strength of the contact point. Only valid in relation to other fingers within the same frame/gesture. *
Orientation – angle of finger contact ellipse from vertical*
FingerState = 0 (unknown), 1 (Down), 2 (Hold), 3 (Up)
Note that there is no Move state. The Hold state can be interpreted as a move if the finger position changes.
var fingerdata = plugin.TouchAPI.TouchRawFingerData(0);
var numFingers = fingerdata.NumFingers;
var status = fingerdata.Status;
if ( status == 0 )
{
var
finger1= FingerData.FingerList[0];
var
finger1ID = finger1.FingerID;
if
(finger1.Confidence == 1 && finger1.FingerState != 0)
{
var
finger1PosX = finger1.PosX;
var
finger1PosY = finger1.PosY;
...
}
var
finger2 = FingerData.FingerList[1];
etc...
}
Returns the capabilities for the specified touch device.
deviceID Int
See TouchRawFingerData for details on this parameter.
FB::VariantMap consisting of the following members:
Version Int //
data structure version
DeviceID Int // identifier of
this device
DeviceType Int // this value is
currently always set to zero
MaxFingers Int // max number of
fingers supported by device
ReportedSizeX Int //
Extent of touch points in X direction
ReportedSizeY Int //
Extent of touch points in Y direction
PhysicalSizeX float //
Width of the device active touch surface in mm
PhysicalSizeY float //
Height of the device active touch surface in mm
LogicalOriginX
float //
Device MinX. Relative to 0,0 point on current display
LogicalOriginY
float //
Device MinY. Relative to 0,0 point on current display
LogicalWidth float // Device logical width. MaxX =
LogicalOriginX+LogicalWidth
LogicalHeight float // Device logical height. MaxY = LogicalOriginY+LogicalHeight
If the call fails, then the returned FB::VariantMap will have Version == -1.
var touchDeviceCaps = plugin.TouchAPI.TouchDeviceCapabilities(0);
var maxNumFingers = touchDeviceCaps. MaxFingers;
var sizeX = touchDeviceCaps.ReportedSizeX;
var sizeY = touchDeviceCaps.ReportedSizeY;
etc...
Returns status of whether any touch devices are physically attached to the system.
None
bool True -> at least one touch device was found
var isTDAttached = plugin.IsTouchDeviceAttached();
Returns list of attached touch device IDs.
None
FB::VariantList of attached touch device IDs. If no touch device IDs are attached, the array is of zero size.
_touchDeviceIDList
= plugin().touchAPI.TouchDeviceIDList;
This is a method that will attach to the specified device and initialize the touch API for the client so that data from that device will be sent to the client. The client can elect to connect so that touch data is NOT passed to the system, or can connect so that touch data is passed to him (the client) as well as being sent to the system.
deviceID Int // -1 ->
open first touch device found; else open specified deviceID
passed
from TouchDeviceIDList
passThru Int //
1: data is passed to system; 0: data is not passed to system
0 on success; non-zero if error.
var caps = plugin.TouchAPI.TouchDeviceCapabilities(-1);// get
caps of first touch
// device
Either of
these will work:
var status = plugin.TouchAPI.Open(-1, 0); // open 1st device;
do NOT pass
// data to system
var status = plugin.TouchAPI.Open(caps.DeviceID, 0); // open specified device
This method detaches client from the specified device, so that no further data from that device nor all touch devices will be sent to the client.
deviceID Int // -1 ->
close all touch devices; else close deviceID
passed
from TouchDeviceCapabilities
0 on success; non-zero if error.
Either of these will work:
var status = plugin.TouchAPI.Close (-1); //
close all devices
var status = plugin.TouchAPI.Close (caps.DeviceID); // close specified device
Fires when touch data is received when any touch data is received from a supported touch device. The client's handler, upon receiving this event, can query for data (see below).
"onTouchDataEvent"
Registering for the event:
if (window.addEventListener)
{
obj.addEventListener("TouchDataEvent",
touchDataHandler, false);
}
else
{
obj.attachEvent("onTouchDataEvent",
touchDataHandler);
}
Function handler for the event:
function touchDataHandler()
{
// Use
TouchRawFingerData to query for cached data
//
process/render finger data in client display area
}
Fires when any supported touch device is attached to the system.
"onTouchDeviceAttachEvent"
Registering for the event:
if (window.addEventListener)
{
obj.addEventListener("TouchDeviceAttachEvent",
touchDeviceAttachHandler, false);
}
else
{
obj.attachEvent("onTouchDeviceAttachEvent
", touchDeviceAttachHandler);
}
Function handler for the event:
function touchDeviceAttachHandler ()
{
// Get
current list of touch devices and open first device.
_touchDeviceIDList
= plugin().touchAPI.TouchDeviceIDList;
_touchDeviceID
= _touchDeviceIDList[0];
plugin().touchAPI.Open(_touchDeviceID,
0);
}
Fires when any supported touch device is detached from the system.
"onTouchDeviceDetachEvent"
Registering for the event:
if (window.addEventListener)
{
obj.addEventListener("TouchDeviceDetachEvent",touchDeviceDetachHandler,false);
}
else
{
obj.attachEvent("onTouchDeviceDetachEvent",
touchDeviceDetachHandler);
}
Function handler for the event:
function touchDeviceDetachHandler ()
{
//
close connection to the current touch device
plugin().touchAPI.Close(_touchDeviceID);
}
[1] FB::VariantMap and FB::VariantList are data structures recognized by javascript. These structures are defined by the Firebreath framework (http://www.firebreath.org), from which this plugin is built.
* This property may not be supported in all Feelª Multi-Touch devices and is reserved for future use.