Touch Split


The 'touch split' feature allows a single touch screen to be associated with two or more desktops, such as an infra-red touch frame surrounding two or more monitors.

 Y axis  X axis
   

Desktops are normally individual monitors, but a desktop could consist of multiple monitors.

We have implemented two touch split methods; one that scales the entire touch co-ordinate range with the complete desktop co-ordinate range, and one that uses segmentations to redirect touch input to the individual desktops.

Video scaling

This method rescales the touch co-ordinate range to the complete desktop range based on the number of individual desktops that are configured.

Two global settings, X_multiplier and Y_multiplier, are used to specify the multiplier value to use. This value represents the number of configured desktops in the X or Y plane.

For this to work...

  • Desktop layouts must be defined with increasing co-ordinate ranges, so that configured left to right (increasing X) or top to  bottom (increasing Y).
  • Desktop resolution must be identical in the multiplier plane (X or Y).
  • This function simply multiplies the x (or y) calibrated co-ordinate by the specified multiplier value.

In this example with the touch screen spanning three desktops, configured left to right, the touch co-ordinates are scaled to a co-ordinate range of 0 - 11519 and posted to the appropriate desktop based on the multiplier setting:

 Monitor 1 Monitor 2   Monitor 3
Left:   0
Top:    0
Right:  3839
Bottom: 2159
Left:   3840
Top:    0
Right:  7679
Bottom: 2159
Left:   7680
Top:    0
Right:  11519
Bottom: 2159 

 To cater for the above, the X_multipler would be set to 3 in the UPDD Console, Advanced, Settings or using the command 'upddutils nodevice set x_multiplier 3'.

 When the calibration procedure is run, the calibration points will span the entire system co-ordinate range, so will cover all desktops.

If this method does not achieve the desired results or does not offer perfect calibration, then try the Redirected Segmentation method described below.

Segment redirection

This method uses UPDD segmentation to direct touches to the individual touch desktops and treat them as separate entities.

This feature utilises aspects of the 'Touch over IP' function.

To achieve this, we use the routing option from the touch over ip (toip) support, but in this case only using the source computer.

The examples shown in the TOIP documentation can be used with the following variations:

1. It is not necessary to set toip.client 
2. In the example configuration, only the setup for COMPUTERA is required 

e.g.

The physical touch frame will be plugged in and be listed as device handle id 1 in the UPDD software

This feature was originally developed in UPDD V6 for Windows.

In Aug 2022 it was further updated in UPDD V7 and tested in macOS using UPDD Commander for multi-touch support, hence two separate examples below:

For UPDD V6, Windows run the commands...

cd \program files (x86)\updd  (this is only required for Windows systems)
upddutils adddevice 1 - this adds a 2nd 'touch device' based on the touch device with device handle id 1
upddutils adddevice 1 - this adds a 3rd 'touch device' based on the touch device with device handle id 1
UPDD will now list 3 touch devices, device 1 will list as OK, device 2 and 3 will list as not NOK (as these do not really exist)
We now set device 2 and device 3 as virtual devices
upddutils device 2 set virtual_device 1
upddutils device 3 set virtual_device 1
We now need to inform the driver of the touch screen segment layout
upddutils set source_segment_map 2x1 (or 1x2 depending on layout)
We now inform the driver how to route the touches from the real touchscreen to the virtual touch screens
upddutils nodevice set+ toip.routing "1:1;localhost;2" - route touch device input associated with Monitor 1, segment 1 to device 2 on the local host
upddutils nodevice set+ toip.routing "1:2;localhost;3" - route touch device input associated with Monitor 1, segment 2 to device 3 on the local host
We now associate the virtual touch devices with individual real monitors
upddutils device 2 set monitor_number 1 - associate device 2 with the appropriate monitor
upddutils device 3 set monitor_number 2 - associate device 3 with the appropriate monitor

With these settings in place, it is important to restart the driver by rebooting the system or stop/starting the driver:  Windows / macOS

All three devices should now show up as OK in the UPDD Console.

UPDDV7 - Windows / macOS example.  

The following statements provide a working example for a 2x1 configuration and can be directly pasted as one block to a terminal or command window.

These commands are available in a .txt file here to preserve quotes. Copying from html text may convert to “smart quotes” which can’t be used in commands.

cd \program files\updd (this is only required for Windows systems)

upddutils device 1 set toip.source 1 – this informs the driver that touches will be directed to virtual devices via toip routing and not sent to the OS directly
upddutils adddevice 1 
- this adds a 2nd 'touch device' based on the touch device with device handle id 1
upddutils device 2 set virtual_device 1 – this informs the driver this is a virtual device
upddutils adddevice 1 
- this adds a 3rd 'touch device' based on the touch device with device handle id 1
upddutils device 3 set virtual_device 1
UPDD will now list 3 touch devices, all of which will show OK

We now need to inform the driver of the touch screen segment layout
upddutils set device 1 source_segment_map 2x1 (or 1x2 depending on layout)
We now inform the driver how to route the touches from the real touchscreen to the virtual touch screens
upddutils nodevice set toip.routing "1:1;localhost;2" - route touch device input associated with Monitor 1, segment 1 to device 2 on the local host
upddutils nodevice set+ toip.routing "1:2;localhost;3" - route touch device input associated with Monitor 1, segment 2 to device 3 on the local host
We now associate the virtual touch devices with individual real monitors/desktops
upddutils device 2 set monitor_number 1 - associate device 2 with the appropriate monitor
upddutils device 3 set monitor_number 2 - associate device 3 with the appropriate monitor
Inform the driver that monitor identification has been set
upddutils device 2 set identified 1
upddutils device 3 set identified 1

With these settings in place, it is important to restart the daemon process by rebooting the system or stop/starting the daemon

Windows

     taskkill /f /im “updd Daemon.exe”
     “updd daemon.exe”

Mac

    upddprocesses stop -a
    upddprocesses start -a

With this in place, each individual monitor must be calibrated via its own virtual device.

This means that the exact positioning of the touch frame and the separation of the screens (e.g. due to mountings or bezels) is compensated for by the software.

UPDD Commander

The above setting examples cater for the driver being responsible for posting touch data into the OS.

However, in some situations, especially on macOS whereby Commander is used to handle multitouch gestures, it is necessary to indicate that the touch data, delivered to Commander via the driver's API, is in fact coming from a single physical touch device.

The setting toip.treat_as_device is used for this purpose. This is a UPDD V7 setting only.

In the above examples, whereby 2 virtual devices have been created (device 2 and 3) to represent the 2 physical monitors/desktops, you need to direct all touches to Commander as though they are coming from a single device 

upddutils device 2 set toip.treat_as_device 2
upddutils device 3 set toip.treat_as_device 2

This will allow you to perform gestures on the single physical touch screen.

Search