It is important that the driver keeps a view of the system monitor layout so that it can direct the point of touch to the correct position within the system's monitor metrics.
Given the driver process executes in a context where it might not have access to information about system monitor layouts this information is also held in the UPDD setting monitorsetupmetrics.
The first group is the coordinate basis range being the bounding lower and upper co-ordinate range of all monitors.
Thereafter, each group of 4 colon separated numbers gives the left, top bottom and right co-ordinate of a monitor.
The second is the monitor 1 as seen by UPDD.
The third is monitor 2 as seen by UPDD.
And so forth.
This setting can be set automatically or manually as required.
The monitorsetupmetrics values are set by the UPDD software as follows:
1) On Windows during execution of the setup program.
2) During execution of the calibration program (All OS)
3) At system startup by UPDD Daemon (All OS)
This information can be retrieved with the TBApiGetSetting API call and seen using the Command Line Interface as in this 2 monitor system:
In some cases the system monitor layout values set automatically in monitorsetupmetrics might not match the actual screen resolutions which can lead to inaccurate touch, even after calibration.
We have seen this in Linux systems using desktop scaling (xrandr --scale [option]).
In the following example xrandr reports that both monitors have a resolution of 1024 x 768 and the 2 desktops of 800 x 600 are scaled to this resolution.
However when queried programmatically (as seen via upddutils monitors command)
The screen resolutions are reported as the logical (unscaled) size, not the physical (scaled) size.
In this case monitorsetupmetrics must be set manually, using the upddutils command, based on the physical resolutions.
In this case it is likely to be:
upddutils nodevice set monitorsetupmetrics 0:0:1023:767:0:0:1023:767:1024:0:2047:767
This is an unusual edge case and we believe that a bug in a Linux module is at fault in this case so it is difficult to give reliable and consistent guidance.
However if scaling is in use and calibration is inaccurate this is a likely cause. The fact that the monitor co-ordinate ranges are not contiguous is also a possible indicator of this scenario, although a non-contiguous can be valid in some circumstances.
With a combination of the 'upddutils monitors' and system commands to view the system and UPDD monitor layout you should be able to determine the values required:
When manually defining the monitorsetupmetrics setting you need to inform UPDD not to automatically set this value as described above so we implemented a setting to disable the automatic update:
If set to 1 then the monitorsetupmetrics will not be overwritten allowing a manual setting to be utilised:
upddutils nodevice set monitorsetupmetrics.manual 1