Introduction

Updated

UPDD (Universal Pointer Device Driver) is a cross-platform touch screen, pen, digitizer and whiteboard driver that can be used as an alternative driver to native or 3rd party supplied drivers in cases where these drivers do not meet required functionality or where no driver exists.

The drivers support HID, non-HID (legacy) USB and serial devices. Under Windows UPDD V7 also supports i2c HID devices.

UPDD V6 is currently available for Windows desktop (XP thro' Win 11), macOSX Intel/Rosetta (10.7 and above) and Linux.
UPDD V7 is available for Win 7 thro' Win 11, 32 and 64 bit, macOSX native Intel/ARM (10.14 and above) and modern Linux distributions.

It supports any number of system monitors, in any layout, in native or extended desktop modes, running in landscape or portrait orientation.

The UPDD software suite consists of the driver and a number of related utilities that together implement the following functionality:

The driver’s main role is to handle the hardware interface and receive all incoming stylus touch data and related information and make it available to other processes via the Application Programming Interface.

Thereafter, there are a number of standard system interfaces available to post touch data into the desktop and applications.

By default the driver will automatically select the most appropriate interface based on the operating system and / or software components being installed and therefore the touch should work after installation.

Depending on your requirements you may wish to switch the system interface or extend the touch interface to use additional methods of touch interaction as described below:

Requirement Description 
Basic single touch Standard driver interfaces exist to post single touch data into the operating system.
Native touch support Where an operating system implements native touch support the driver implements a number of interfaces to post data into the OS to interact with the native touch features, such as a Virtual HID interface in Windows or a Virtual touch device interface to post data to the Linux kernel input subsystem.
Specialist touch support In cases whereby the operating system does not directly support touch interface but utilises touch type functionality, such a MacOS with gestures, we have implemented specialised functionality to interact with the native features as best as possible.
TUIO TUIO is a standard protocol across all operating systems to allow cross-platform touch based client applications to receive touch data in a standard way.  We have implemented a TUIO server to read touch data from the driver and broadcast it to TUIO Client applications.
API The driver implements an API interface so that UPDD client applications can receive all stylus, gesture and touch information directly from the driver. Our our own utility programs utilise the API.
JavaFX Starting with JavaFX 2.2, users can interact with JavaFX applications using touches and gestures on touch-enabled devices. Touches and gestures can involve a single point or multiple points of contact. The type of event that is generated is determined by the touch or type of gesture that the user makes. This link describes working with events from Touch-enabled devices. We have compiled and tested the Gesture Events example program with our Mac OS X gesture implementation and found it all to work as expected, therefore any JavaFX touch event driven applications should work as expected.
Touch aware applications There are many ways to drive an application via touch. It could be via the simple “mouse emulation” interface to more direct touch specific interface as implemented by the Integrated Development Environment or specific development libraries such as QT, SDL Multimedia Library, Clutter Library, Pigment Toolkit, GTK etc, that may also dictate the touch interface in use. For example, under Linux, applications written with SDL or Clutter may utilise the TSlib interface if direct access to the touch device is required by the application.
If using a library interface, it is important that the underlying touch event is satisfied by one of the UPDD touch interfaces or the touch event will not be satisfied.  It is also important to ensure that touch events can be shared such that a UPDD posted touch event is not blocked by a high level request, e.g. a touch aware Windows Manager makes exclusive use of the touch and the event is not available to underlying applications.
Browser applications Browser based touch applications should work as expected in operating systems that support native touch support. However, in OS such as MacOS, this is not the case and this is discussed further in the MacOS documentation.
Direct application interface We had a customer with a dual monitor system whereby one monitor was touch and it was running a dedicated touch application, that when in use, should not interfere (e.g not move the system pointer) with the user running an application on the non touch monitor.  They did not have the source code to modify the application to use TUIO or UPDD API, so we wrote some experimental code to inject the touch directly in to the 'named' touch application to satisfy the application's touch events.  As a prototype it worked very well but as yet this remains experimental and has not been fully implemented as an optional interface but could be if required.
 User written Write you own application to receive and process the incoming touch data.
Search