Touch configuration file
The mtouch
section specifies the configuration to apply touch
devices (also called mtouch devices for multitouch devices) supported by the platform.
The touch configuration file (default name is
mtouch.conf)
file is a free-form ASCII text
file parsed by mtouch
service.
The file can contain extra tabs and blank lines for formatting purposes.
Keywords in the file are case-sensitive. Comments can be placed anywhere
within the file (except within quotes).
Comments begin with the #
character and end at
the end of the line.
The section must begin with begin mtouch
and end
with end mtouch
only if your system supports touch
devices, or if there are applications on your system that require them.
There can be multiple mtouch
sections in your
configuration file. The number of mtouch
sections
must match the number of physical displays that your platform supports.
You can specify different parameters (such as drivers)
in each mtouch
section to match the display.
mtouch
section of a
/etc/system/config/mtouch.conf on a target. This file is board-specific and therefore
part of the Board Support Package (BSP) for the board you want to use.
mtouch
driver. For more information,
see mtouch.
begin mtouch
driver = hid
options = vid=0x0eef,did=0x7200,verbose=6,width=4096,height=4096,max_touchpoints=1
end mtouch
Parameters for the mtouch
section
The following are valid parameters that can be configured under the mtouch
section:
It's common to use display,
scaling,
driver,
and options.
- device_name
- A string value that specifies the name of the device.
- driver
- The name of the touch driver to use. The name is specific to each board.
The mtouch service uses the following algorithm to determine
the touch drivers to load:
"libmtouch-" + driver name + ".so"
For example, you have driver names such as, egalax, focaltech, hid, or lg-tsc101, which correspond to libmtouch-egalax.so, libmtouch-focaltech.so, libmtouch-hid.so, and libmtouch-lg-tsc101.so.Note:The libmtouch-hid.so driver is used for displays connected to the board. Typically the displays are connected using HDMI or DVI and a USB cable. For examples of various settings to use for different displays, seeExample of various displays to use.
For information about troubleshooting working with HID devices, seeTroubleshooting HID display issues.
- display
-
An Integer or String to specify the identifier of the display that's associated with this touch device. The display ID is identified in the
display
subsections of your graphics configuration file (e.g., graphics.conf). You can also retrieve the display ID from the SCREEN_PROPERTY_ID property, or the string version from the SCREEN_PROPERTY_ID_STRING property, of a Screen display object by using the Screen API. - min_event_interval
- An unsigned integer (0 - 4,294,967,295) that specifies the sampling rate (in microseconds) of the touch controller. This specified time represents the minimum time between two touch samples. The effectiveness of this configuration is driver-dependent.
- scaling
- A string value that specifies the
location of the
scaling.conf
file. You can specify a different name. If this parameter isn't specified, the expected location and filename on your system is: /etc/system/config/scaling.conf - scaling_factor
- Overrides the scaling factor from the touch matrix
to the mode parameter specified
in the scaling.conf file. The value for
this parameter can be specified as a decimal value, such as
2.5
. - options
- The options configuration is driver-dependent. The string that you configure
is passed verbatim to the driver itself. For example, it can be used to set the height and width (in pixels) of a rectangular
touch surface. In this case, you would set the maximum values X and Y values for the touch controller hardware.
This configuration must be in the form of
option_name=value
, delimited with a comma (,
) for multiple options. For example:vid=vendorID ,did=productID ,max_touchpoints=number_of_touchpoints ,lvds=interface
Here are some examples:
height=4096
width=4096
vid=0x0eef
did=0x7200
lvds=720
verbose=6
max_touchpoints=2
For more information, see the BSP user's guide for your board.
Settings for various HID displays
In general, the entries you can use for options parameter are specific to the touch controller hardware. For HID, these are the common generic options that are available:
- did
- The USB Device ID or Product ID.
- height
- The touchscreen's maximum Y-coordinate value.
- invert_x
- The X-coordinate is inversed. Set to 0 (zero) to turn this off or 1 to set it on. The default is off.
- invert_y
- The Y-coordinate is inversed. Set to 0 (zero) to turn this off or 1 to set it on. The default is off.
- verbose
- Set the verbosity level of the logging messages to screen. You can set the number from 0 to 6. A higher number indicates a higher number of logs. The default is 0 (zero) if not specified.
- vid
- The USB Vendor ID.
- width
- The touchscreen's maximum X-coordinate value.
To determine the width and height values, you run
your driver in the mode:direct first and get the output from the events
binary to see the largest X and Y values from the system logs by running the
mtouch service in verbose mode. Alternatively, you can
get the output from the hidview -R
(logical maximum X and Y) or contact your vendor to get them for your HID display.
For more information about the hidview, see
hidview
section in the QNX Neutrino Utilities Reference.
Here are some of the settings for the following displays:
- UNITEC USB Touch (Windows XP and Windows 7)
begin mtouch driver = hid options = vid=0x0afa,did=0x07d2,verbose=6,width=4096,height=4096,max_touchpoints=2 end mtouch
- Lilliput 10.4" LCD Monitor (Egalax Controller)
begin mtouch driver = hid options = vid=0x0eef,did=0x0001,verbose=6,width=4096,height=4096,max_touchpoints=1 end mtouch
- Egalax Controller (7200)
begin mtouch driver = hid options = vid=0x0eef,did=0x7200,verbose=6,width=4096,height=4096,max_touchpoints=1 end mtouch
- Egalax Controller (7201)
begin mtouch driver = hid options = vid=0x0eef,did=0x7200,verbose=6,width=4096,height=4096,max_touchpoints=1 end mtouch
- ST2220T LG Display
begin mtouch driver = hid options = vid=0x1fd2,did=0x0064,verbose=6,width=1024,height=1024,max_touchpoints=2 end mtouch
- GECHIC Monitor
begin mtouch driver = hid options = vid=0x222a,did=0x001c,verbose=6,width=7539,height=4211,max_touchpoints=10 end mtouch
- Flatfrog (E10-TM55F-0021 HID/DFU)
begin mtouch driver = hid options = vid=0x25b5,did=0x0021,verbose=6,width=19354,height=10886,max_touchpoints=5 end mtouch
- Chalkboard Electronics (HID Multi-touch)
begin mtouch driver = hid options = vid=0x04d8,did=0xf724,verbose=6,width=1366,height=768,max_touchpoints=2 end mtouch
- N-Trig (DuoSense)
begin mtouch driver = hid options = vid=0x1b96,did=0x0007,verbose=6,width=9600,height=7200,max_touchpoints=1 end mtouch
- Zytronic Displays Limited (ZXY200 Controller)
begin mtouch driver = hid options = vid=0x14c8,did=0x0006,verbose=6,width=4096,height=4096,max_touchpoints=2 end mtouch
- TPK USA LLC Touch: Fusion 4. (Lilliput)
begin mtouch driver = hid options = vid=0x1391,did=0x2112,verbose=6,width=1024,height=1024,max_touchpoints=1 end mtouch
Troubleshooting HID issues
- Check that the USB controller works. You must start the USB controller
when you use a HID touch controller. To check if the USB controller
shows up, run the command
usb -vvv
command. If it doesn't, check that:- you have the correct driver started and on your target board
- the touch controller is powered on. For example, for the Lilliput display, the touch controller won't appear from the USB if there's no power to the display or there's no video to the monitor.
- The controller shows up when you run the hidview command.
If not, ensure that io-hid is started with the devh-usb.so module and that no errors occurred.
-
When
mtouch
is started check slog2info for any errors. You can increase the verbosity of the drivers by passing the verbose option in the configuration file for the driver. Use the -v option to set the verbosity level of the mtouch service. -
Slay HMI processes and start with
screen
andmtouch
. Then run the binary events to see if it receives touch events from the controller. If the binary events receives touch data, this confirms that the touchscreen is configured correctly in Screen and the issue may be in the calibration. - Check the parameters in the touch configuration file (mtouch.conf). It's important to note that the width and height don't specify the display resolution, but the the touch resolution (i.e., MaxX and MaxY values). You can run the hidview -R command to obtain the width and height values. The values are delimited by the HID report Logical Max for the X and Y reports.
- Check the settings in the scaling configuration file (scaling.conf).
There must be a matching configuration for the display resolution and this needs to
be set correctly based on whether calibration is used or not.
mode=scale
means, don't use with calibration, the Touch framework calculates the scaling based on the width and height specified in options parameter in the touch configuration file (mtouch.conf) and the resolution of the display.The mode,
mode=direct
, means to use the calib-touch because the framework doesn't perform any scaling and sends the coordinates straight through, unaltered. - If you are using a resistive touchscreen or have chosen to
run calib-touch, calib-touch must be run every time
screen
andmtouch
starts. If a calibration file exists, then calib-touch simply loads the calibration matrix and applies the settings to Screen Graphics Subsystem (Screen) service.Note:It's important to remember that Screen doesn't apply the matrix settings otherwise on its own.