Multi Touch In DAT

From TouchDesigner 099 Wiki


The Multi Touch In DAT is used for receiving messages and events from the Windows 7+ standard multi-touch API. It captures all the messages, where each new message changes the table it outputs. When a messages is added to the DAT, any script can be called pointing to the new message. The Multi Touch In DAT is most frequently sent to the Render Pick DAT.

It can output either of two table formats: (1) Raw Events as a FIFO (first in - first out) list, or (2) ID Table, which is the events processed into a more usable one-row-per-finger table.

The Raw Events format creates a FIFO-type DAT (see also FIFO DAT) which, for each multi-touch event, has a row added to the bottom of the table while at the same time a row at the top is deleted.

Note: To operate panel gadgets with multi-touch screens that send events through the Windows 7, 8 or 10 event stream, multi-touch works without requiring DATs. You need to use the DAT when using multiple fingers on one panel, like in a container displaying a 3D render whose objects you want to pick.

The ID table format includes the columns:

  • id - every finger press increases the id by 1
  • sn - an ongoing count of each finger press.
  • select - when 1, this row represents a finger is down.
  • downf - the absolute frame number when the finger press occurred.
  • upf - the absolute frame number that the finger press ended
  • x, y - the position, in pixels in the horizontal and vertical directions. NOTE: The x and y values are expressed in screen pixels, not panel width/height pixels. For example, the top-right corner of a panel will be different if the panel is scaled within another panel, window or network viewer. It is better to use u and v, and scale them by the panel Width and Height.
  • u, v - the position, 0 to 1 in the horizontal and vertical directions
  • downu, downv - the position, 0 to 1 in the horizontal and vertical directions when the touch first occured (ie. initial touch down location).

contactx, contacty - the width of the contact area. contactu, contactv - the height of the contact area.

  • monitor - monitor number, starting with 0
  • clicktime - like downf, in seconds
  • elapsedtime - the number of seconds that finger has been down.
  • changedtime - the time since the finger press that the most recent u or v value changed.
  • dclick - double-tap occurred
  • aux - user supplied data via PanelCOMP_Class method interactTouch.

You can use the attached callback DAT (named mtouchin1_callbacks) to react to multi-touch events. This is suitable for 2D interfaces that do not require a Render Pick DAT.

See the "multitouch" example in the Palette under Tools.

See also the Multi-Touch page.

PythonIcon.png MultitouchinDAT_Class

Parameters - Multi-Touch In Page

Active active - Registers event when Active is On.

Output /outputtype - Sets how the output is displayed in the table.

  • Raw Events - events are added to the table in a first in - first out (FIFO) order.
  • ID Table - events are processed using one-row-per-finger in the table.

Panel /panel - The Panel Component to capture the touch events from.

Relative IDs /relativeid - Reorder the touch ids so only the ones within the specified panel are counted.

Relative Position /relativepos - Output position and normalized coordinates relative to lower left corner of the specified panel.

Include Mouse /mouse - When on, the mouse add a touch event when clicked. This event always shares ID 1 with the first touch. Using mouse and multitouch at the same time may result in unexpected behaviours.

Position Threshold /posthresh - A new message will not be added if a finger has moved less than this number of units. The units are determined by the input device, not necessarily the resolution of the screen that it is associated with.

Contact Threshold /contactthresh - Some touch devices have a width and height of a press, representing pressure of amount of finger contact. This is a minimum threshold below which no events are recognized.

Min Rows Displayed /minrows - The minimum number of rows always displayed in the table.

Double Click (secs) /doubleclickthresh - The maximum time allowed between clicks to be registered as a 'double-click'.

Parameters - Received Messages Page

Script DAT /script - the Script DAT will execute once for each message coming in. The first argument ($arg1) is the message, the second argument ($arg2) is the line number (index starting at 0) in the DAT of the message. To list all the arguments, put in the script: echo $args

Execute From /executeloc - Determines the location the script is run from.

  • Current Node /current - The script is executed from the current node location (for example, where 'cc' points to).
  • Script DAT /script - The script is executed from the location of the DAT specified in the Script DAT parameter.
  • Specified Operator /op - The script is executed from the component specified in the Component parameter below.

From Operator /from - The path that the script will be executed from if the Execute From parameter is set to Specified Operator.

Clamp Output /clamp - The DAT is limited to 100 messages by default but with Clamp Output, this can be set to anything including unlimited.

Maximum Lines /maxlines - Limits the number of messages, older messages are removed from the list first.

Clear Output /clear - Deletes all lines except the heading. To clear with a script command, here is an example: opparm -c /serial1 clear

Keep First Row /firstrow - Keeps the first row of the table to maintain column names.