Multi-monitor and device support

 
 


Revision 1.6, 9th  Apr 2008

 

Notes

Windows

Mac OS X

Linux

Custom area

Examples

Contact

 

UPDD supports both multi-monitor and multiple pointer device configurations. This means that UPDD can cater with a system that has more than one monitor or more than one pointer device and any combination thereof can be supported by UPDD.

 

This document describes the multi-monitor and device considerations for each of the supported desktop operating systems.

 

Please ensure you read the notes section before using multi touch devices or multi touch monitors.

Multi-monitor and multi-device notes

Different video resolution

Native video mode allows different screen resolutions to be set on the individual monitors. Some custom video drivers may not allow different screen resolutions and all monitors will have to be the resolution of the largest resolution defined on one of the monitors. However, they may allow the viewable area to be a lesser resolution and ‘scroll’ the desktop around the full resolution. In this instance a custom segment will need to be defined to calibrate the viewable area and the scrolling capability will have to be locked as calibration does not work on scrolling desktops unless UPDD has been written to specifically interface with the video driver such that the two drivers work together and maintain calibration. This has been developed for one specialised system only. Please contact Touch-Base for more information.

Multiple devices

UPDD has no restriction on the number of devices it can handle. As long as the controller can be connected via one of the supported hardware ports UPDD can be configured to support it.

Hardware port binding (port and desktop segment association)

In a multi-device environment a hardware port will be required for each pointer device. Most devices used in a multi-monitor/device environment are serial or USB and any of these ports can be used. In a multi-monitor / multi-touch device environment it is important to be able to associate a specific touch device (controller) with a given monitor (desktop).

 

Serial controllers are connected to unique ports (com1, com2 etc) which offers a unique identifier to the device.

 

For USB the binding method is different depending on the OS is use, as follows:

 

OS

Description

Windows

In a situation where multiple controllers are used that have a distinct Product id (PID), Vendor id (VID) or serial number, UPDD will reliably associate a controller with a selected monitor or segment. We can also enable iproduct binding if required. This association will remain even if the controller is replugged into a new USB port or other controllers are added.

 

Where the controllers are identical UPDD will associate the controllers with monitors in the order that the operating system lists the devices. If this order does not change then the monitor or segment association will be consistent. However this behavior is undefined and might change, for example with new OS version releases, or with the insertion of other usb devices.

Mac OS X

In a situation where multiple controllers are used that have a distinct Product id (PID), Vendor id (VID) or serial number UPDD will reliably associate a controller with a selected monitor or segment. This association will remain even if the controller is replugged into a new USB port or other controllers are added.

 

With the exception of Hampshire USB controllers, where the controllers are identical UPDD will associate the controllers with monitors in the order that the operating system lists the devices. If this order does not change then the monitor or segment association will be consistent. However this behavior is undefined and might change, for example with new OS version releases, or with the insertion of other usb devices.

 

For Hampshire USB controllers with onboard EEPROM the driver will write a unique id to each controller as it is detected and use this id in the binding process.  Provision has also been made for user access to the EEPROM storage and retrieval along with access to the UPDD serial number

 

To achieve this, the UPDD API has been extended with two new functions to set and get a block of data from EEPROM storage and a further api to retrieve the controller serial number that updd has identified. In the case of the Hampshire TSHARC USB controller UPDD will setup an appropriate value for this serial number.

 

The maximum length of data that can be written to EEPROM storage is 2 less bytes than are available on the controller (updd uses the first 2 bytes to save serial number data).

 

Examples of the apis follow.

 

To write data

 

char data[4] = {‘1’, ‘2’, ‘3’, ‘4’};

TBApiWriteTSHARCEEPROM(TBApiGetRelativeDevice(0), data, sizeof(data));

 

To read data

 

char storeddata[4];

TBApiReadTSHARCEEPROM(TBApiGetRelativeDevice(0), storeddata, sizeof(storeddata));

 

To retrieve internal UPDD EEPROM serial number from controller:-

 

char serialNumber[256];

TBApiReadSerialNumber(TBApiGetRelativeDevice(0), serialNumber, sizeof(serialNumber));

 

Linux

No binding is currently undertaken and UPDD will associate the controllers with monitors in the order that the operating system lists the devices.

 

When using USB devices in a multiple monitor environment it will usually be necessary to associate a touch device with a particular monitor. The easiest way to determine what USB controller is assigned to a device is to calibrate a selected device from the UPDD device list (calibrate will be shown on one of the monitors) and then touch the touch screens until the active screen is found.  Note the monitor on which the active screen is found (Monitor 1, Monitor 2 etc) and then change the desktop setting for this device to match. Recalibrate and the calibration screen will be shown on the monitor with the active touch screen.  Repeat this exercise for each device in the device list.

 

In a two touch monitor environment this process will also work:

 

1)     Select a separate monitor for each device, e.g. using monitor 1 for the first device and using monitor 2 for the second.

2)     Calibrate each device. If after calibration a touch on one monitor results in mouse actions on the other monitor then reverse the monitor settings set in the previous step.


A future release will allow for the calibrate function to automatically determine the monitor/touch device association.

 

For USB controllers that do not have unique identifiers (the system / driver cannot distinguish between the controllers) there are alternative methods that can be applied.  For example, if the controller has on-board EEPROM and firmware commands to read and write to EEPROM, the driver can be set up to write a unique id to EEPROM which can then be used in the binding process. Contact Touch-Base for more information.

Anchor mouse – Windows only

In a multi-monitor, touch screen environment, it may be a requirement to leave the system pointer at its current location once the touch is complete. E.g. a three monitor system where the left and right screens are touch but the middle screen is mouse driven. With normal touch drivers the cursor would be left at the last point of touch forcing the user to use the mouse to bring the cursor back to the central monitor each time a touch was made.  Using the Anchor Mouse function, as found in the UPDD Console -  Properties dialog, the cursor will be returned to its previous location once the touch has been processed. This is a system wide setting that effects all devices once enabled.

Scrolling desktops – Windows only

Some systems support higher video resolutions than the video display can physically support. In this instance the video display becomes a ‘window’ on to the desktop and the desktop scrolls around video. In this instance touch screens cannot stay calibrated as they do not know the desktop element currently on display. For a touch screen driver to work in this environment the touch driver has to liaise with the video driver to be informed of the desktop element currently in view. This has been performed by UPDD with one video chip manufacturer and calibration was retained throughout the scrolling process.

Desktop priority

Desktops can be allocated priorities when used in a multi-monitor environment and are defined in the UPDD Console - Properties dialog:

 

The Interlock priority is a method of assigning a sharing priority to a device in a multi-device environment. Prior to introducing this function if two pointer devices were used at once the system pointer would rapidly jump between all the points of touch. This function avoids this symptom. See the UPDD on-line help for more information.

 

The Admin priority hands control immediately to the device and is really only ever useful when one administrator desktop is in use.  Setting more than one desktop introduces the issue where the system pointer will rapidly jump between all the points of touch if two or more admin desktops are touched at the same time.  Given that a pen up will be forced on any Interlock device currently in use we recommend that those devices should be working with an appropriate click mode whereby the pen is not held down during use.

Clone settings

Multi-monitor configurations normally require a degree of configuration in UPDD. If the configuration is to be replicated on a number of systems then UPDD has a useful facility to ‘clone’ the settings of one system on subsequent installs. Once the system is configured as required the ‘Dump settings’ function is located in the UPDD Console, Status dialog. A file is created that contains all the settings. This file is placed with the UPDD setup.exe program during the next install. See the UPDD Installation document for more information.

Rotate

Video rotation is catered for in UPDD and with some rotate methods UPDD can cater for rotation beyond the primary monitor.  See the rotate document for more information.

Multiple mouse pointers – Windows only

It is possible to give each pointer device in a Windows environment its own ‘mouse’ cursor and this is currently (May 2007) being investigated

Windows

Ensure the notes section at the beginning of this document is read before utilising multiple devices in a Windows environment.

 

To be able to configure UPDD in these situations you need to understand how Windows caters with multiple monitors and devices, specifically how multiple monitor configurations are supported by Windows and the manner in which the desktop is defined.

Desktop resolution

We are all familiar with a single monitor displaying a complete Windows desktop, as this is the standard system configuration. We are also familiar with the concept of different video resolutions and most of us work on systems with a screen resolution of 800x600 or 1024 x768. The first figure defines the number of pixels in the X plane (left to right) and the last figure defines the number of pixels in the Y plane (top to bottom). Although these video resolutions are familiar to us Windows maps these ‘video pixel’ resolutions to its own virtual desktop resolution of 65535 (X plane) x 65535 (Y plane).

 

Pointer device calibration data relates to the virtual desktop. When UPDD interfaces with the operating system’s virtual mouse port driver to request the system pointer to be moved to a specific X, Y co-ordinate it references the virtual desktop resolution, hence the change of user screen resolution does not affect the performance of UPDD.

 

Depending on the type of multi-monitor support employed within the system, as discussed below, each monitor will either have its own virtual desktop of range 65535 X and 65535 Y or share one virtual desktop across all monitors, thereby each controlling a segment of the virtual desktop. The user sees the same results, that is, the desktop is spread over all the available monitors, but internally this process is handled differently.

 

 

 

 

In the above examples the X and Y co-ordinates are spread across the monitors in a 4 x 1 configuration. However, with native video support each desktop has its own virtual range whereas, in the custom video support the Y co-ordinates will be in the range 0 to 65535 but the X co-ordinates will be in the range 262140. In the custom video, if the monitors were stacked in a square (2x2) then the range would be 0 to 131070 and 0 to 131070.

Multi-monitor support

Each monitor is either supported by the standard Windows video drivers (Native Window support) or specialised drivers supplied with multi-video port cards (Custom and Stretched video support) as described below:

 

Native video support

Native support for multiple monitors was available with Windows 98 and has continued to be available under ME, W2K and XP. This allows for individual video cards to be placed in the system and for Windows to automatically recognise that the system has more than one video card and to show this in the desktop properties. Each monitor can then be enabled/disabled via the desktop display properties and each can have its own settings.

 

In this environment each monitor has its own complete virtual desktop.

 

 

In the above example the system has two enabled monitors.

 

Custom video support

Prior to the availability of native video support, introduced with Windows 98, video card manufactures had to develop their own drivers to implement multiple monitor support for Windows 95 and NT and, for many reasons, these drivers are still used in Windows systems that offer native support, especially where the native video drivers do not support the hardware. In this case Windows is only aware of one monitor but the custom driver handles the multiple monitor configuration.

 

In this environment each monitor shares the virtual desktop and maps to a segment within the virtual desktop.

 

 

In the above example a Quad video card is used to offer four monitors, two of which are enabled.

 

Stretched video support

We recently (early 2006) came across a graphics card where the Windows desktop properties showed a single monitor but the video was stretched across (mapped to) individual physical monitors.

UPDD configuration

UPDD is responsible for moving the system pointer on the desktop and therefore in a multiple monitor environment it needs to know the method employed to handle the video cards. Further it also needs to be aware of the monitor/desktop area to be associated with the pointer device such that the movement of the system pointer can be restricted to the associated area.

 

The UPDD Console shows the pointer devices configured in the driver. The Hardware dialog shows the monitor or desktop area associated with the current device, as shown below:

 

 

UPDD ships with a number of predefined desktop areas that take into account the different methods of video support. These settings caters for up to 16 monitors with native video support, 4 monitors with custom video support and 2 monitors with stretched video support although more can be catered for if required, as discussed below:

Standard video mode definition

If the device is to move the system pointer across the whole desktop, as standard in a single monitor configuration, then the desktop area name is set to ‘Whole Desktop’, irrespective of video support in use.

Native video mode definition

If the device is restricted to moving the system pointer on a specific monitor, as supported by Native Video drivers, then the desktop area name is set to the name of the monitor, e.g. Monitor 2

Custom video mode definition

If the device is restricted to moving the system pointer on a specific monitor, as supported by a custom video driver, then the desktop area name is set to the name of the segment, e.g. Left half, Right half etc.

Stretched video mode definition

If the device is restricted to moving the system pointer on a specific monitor, as supported by a stretched river, then the desktop area name is set to the name of the segment, e.g. Left Half – Stretched, Right Half - Stretched.

 

Mac OS X

Ensure the notes section at the beginning of this document is read before utilising multiple devices in a Mac OS X environment.

 

For Mac systems that are capable of supporting more than one monitor the multi-monitor configuration is shown in the System Preferences, Hardware, Displays, Arrangement dialog as follows:

 

UPDD configuration

UPDD is responsible for moving the system pointer on the desktop and therefore in a multiple monitor environment needs to be aware of the monitor/desktop area to be associated with the pointer device such that the movement of the system pointer can be restricted to the associated area.

 

The UPDD Console shows the pointer devices configured in the driver. The Hardware dialog shows the monitor or desktop area associated with the current device, as shown below:

 

 

UPDD ships with a number of predefined desktop areas for use with the Mac configuration.  The system has been tested with 8 touch monitors without issue. Each monitor can have a different screen resolution.

 

In a multi-monitor environment a reboot will be require before added devices are active.

External dual head devices

External video extenders are available for the Mac such that a single video port, typically on a Mac Mini, can be extended across two monitors.

 

One such device. dualhead2go (http://www.matrox.com/graphics/en/gxm/products/dh2go/home.php) allows two screens to be connected to a single VGA connector on the MacMini.  To the MacMini, it looks like one wide screen (2048x768). It is actually two separate flat panels each set to 1024x768.  If using this device we recommend using corner calibration points and ignoring the calibration points drawn in the corners of both devices and just touch the appropriate corners of the touch device.

Linux

Ensure the notes section at the beginning of this document is read before utilising multiple devices in a Linux environment.

 

UPDD on Linux supports the use of multiple monitors with the desktop extended (stretched) across all the monitors. The desktop extension has to be implemented via the X extension, “Xinerama” – see http://en.wikipedia.org/wiki/Xinerama. To setup a system using Xinerama you should refer to the documentation provided by your vendor. The steps we followed to configure our Xinerama based system is outlined below as an example:

 

·         Modified xorg.conf to add new sections for our second graphics card and monitor, and the corresponding “Screen” section to link the two together.

·         Added the new screen into the “ServerLayout” section using the following line:-

 

Section "ServerLayout"

    Identifier     "Multihead layout"

    Screen      0  "Screen0"

    Screen      1  "Screen0 (2nd)" RightOf "Screen0"   <<<<added

    InputDevice    "Updd0" "SendCoreEvents"

    InputDevice    "Mouse0" "CorePointer"

    InputDevice    "Keyboard0" "CoreKeyboard"

    Option         "Xinerama" "on"    <<<<added

    Option         "Clone" "off"          <<<<added

EndSection

 

...

Machine specific sections removed

 

Note – This section was added on our Linux 64 because we were using an Nvidia graphics card which needed a driver to be downloaded and installed from their website. The driver had non-standard extensions that can guess the size of the screen and this stopped some X software,

including our driver, from working correctly.

 

Section "Screen"

    Identifier     "Screen0"

    Device         "Videocard0"

    Monitor        "Monitor0"

    DefaultDepth    24

    SubSection     "Display"  <<< This section specifies the resolutions and bitdepths of the respective monitor

        Viewport    0 0

        Depth       24

        Modes      “1600x1200” “1280x1024” “1024x768” "800x600" "640x480"

    EndSubSection

EndSection

 

Section "Screen"

    Identifier     "Screen0 (2nd)"

    Device         "Videocard0 (2nd)"

    Monitor        "Monitor0"

    DefaultDepth    24

    SubSection     "Display"

        Viewport    0 0

        Depth       24

        Modes      “1600x1200” “1280x1024” “1024x768” "800x600" "640x480"

    EndSubSection

EndSection

 

Note the changes above enabling Xinerama and the sections specifying the screen resolutions. On some systems using the Nvidia graphics driver these are sometimes missing.

 

UPDD does not currently support multiple monitors configured for cloned/mirrored mode (same desktop seen on all monitors) or extended desktops not using the Xinerama extensions – see http://en.wikipedia.org/wiki/Xinerama#Dual_display_X_without_Xinerama for more details.  Email support@touch-base.com if this is required.

UPDD configuration

UPDD is responsible for moving the system pointer on the desktop and therefore in a multiple monitor environment needs to be aware of the monitor/desktop area to be associated with the pointer device such that the movement of the system pointer can be restricted to the associated area.

 

Once you have a multi-monitor system configured you should use the UPDD Console to configure your touch-screens and monitor association. This is done by going to the “Hardware” page in the Console and clicking the the “Handling XXX Desktop” where “XXX” is the current desktop being handled, e.g. “Handling Whole Desktop”. You should then select the monitor you want to use from the desktop and monitor list.

 

Figure: Allocating a touch-screen to Monitor 1

 

After you have configured the monitors you will need to calibrate each touch-screen before using them.

Custom Desktop area

In most cases it is the norm to associate a complete video display (monitor) to each pointer device. I.e. the pointer can move around the entire monitor. However, we are aware that some users may wish to restrict the movement of the cursor to a specific area on the monitor. In this case a custom desktop area can be used to restrict cursor movement to a given area on the monitor.  The area is defined by specifying the top left (X min/Y min) of the area and its height (Y range) and width (X range).

 

At the time of writing custom desktop area setting values are restricted to within the range 0 to 65535 so is only available on the primary monitor with native video support (and, under Windows, all monitors with custom video mode support). This limitation will be addressed in future releases of the driver.

Native video mode support

To define a custom desktop area, select ‘Custom’ as the desktop area and set the required logical desktop area settings, as shown in the following example:

 

 

In the above example, the touch will be restricted to the bottom right hand corner of the primary monitor, as shown below:

 

Custom video mode support – Windows only

With Windows custom video mode drivers, the entire virtual desktop, irrespective of the number of monitors, is mapped to a grid 65535 x 65535.  In this mode, a custom desktop area can also be used to handle different display configurations than that catered for with the pre-defined set of desktop areas.

 

In this mode the logical desktop settings values should be based on example values below:

 

No of monitors in plane

Position

Min

Range

Standard

Horizontal plane definition

 

 

Decimal

Hex

Decimal

Hex

 

1 monitor

1st monitor

0

0

65535

ffff

Whole desktop

2 monitors

1st monitor

0

0

32767

7fff

Left half

 

2nd monitor

32768

8000

32767

7fff

Right half

3 monitors

1st monitor

0

0

21845

5555

Left third

 

2nd monitor

21845

5555

21845

5555

Middle third

 

3rd monitors

43690

AAAA

21845

5555

Right third

4 monitors

1st monitor

0

0

16383

3fff

Left quarter

 

2nd monitor

16384

4000

16383

3fff

Second quarter

 

3rd monitors

32768

8000

16383

3fff

Third quarter

 

4th monitor

49152

C000

16383

3fff

Fourth quarter

 

E.g. In an eight monitor system, set in a 4 x 2 pattern. On all the monitors the height will be 7FFF (2 monitors deep) and the width will be 3fff (4 monitors wide). Top (Y min) on the top four will be 0 and 8000 on the bottom four monitors. Left (X min) will be 0,4000,8000,C000.

Example multi-device configurations

 

·         Multiple monitors with the desktop spread over the monitors

This configuration allows the desktop to be expanded over many monitors to offer more real estate on which to run the applications. All or some of the monitors may have a touch screen fitted. Each touch monitor will be configured to control its specific desktop area.        

     The following example shows two touch screens, one USB and one Serial, configured on separate monitors supported by the native OS video drivers.

The ELO Smartset USB touch screen is associated with the video controller attached to Monitor 1 

The KeeTouch serial touch screen is associated with the video controller attached to Monitor 2

 

·         Multiple monitors with the same desktop shown on all the monitors

This configuration, often referred to as Mirrored Displays, allows the same desktop to be shown on more than one monitor. All or some of the monitors may have a touch screen fitted. Mirrored displays can either be a system setting when more than one video controller is used or can be achieved with an external video splitter, which strictly speaking is not a multi-monitor configuration as the system will normally have only one video card. Each touch monitor will be configured to control the ‘whole’ desktop.

·         Single touch screen monitor with additional pointer devices

This example illustrates UPPD supporting a touch screen monitor and an additional pointer device, such as an electronic white board or digitizer. In this example both devices will be set to control the ‘whole’ desktop.

Contact

For further information or technical assistance please email the technical support team at technical@touch-base.com