Virtual gestures
The driver can be triggered in inject dual touch data into the Windows data stream o invoke virtualised gestures.
Currently this is only triggered by the very specialised KME serial device.
This document describes the settings used to enable and tailor the virtual gesture configuration for the following events
Squeeze
Stretch
Rotate left
Rotate right
The other events do not require specific configuration.
The settings concerned are all prefixed g.g. for virtualised gestures
vg.squeeze.start_width
vg.squeeze.end_width
vg.squeeze.time_ms
vg.squeeze_origin
A virtualised squeeze is generated as a dual touch event. The 2 touches start separated by vg.squeeze.start_width pixels and end separated by vg.squeeze.end_width pixels.
The duration of the event in milliseconds (speed) is set with vg.squeeze.time_ms. The angle between the points is taken from the angle reported by the touch controller.
The origin allows the centre of the first squeeze to be selected with the following 2 values
Touch
the squeeze starts with a touch at the current point of touch and another offset from that position according to start_width and angle. and the offset point moves towards the point of touch which remains constant.
centered (or centred)
the squeeze starts with 2 touches offset equally either side of the current point of touch according to start_width and angle and both points move equally towards the current point of touch.
vg.stretch.start_width
vg.stretch.end_width
vg.stretch.time_ms
vg.stretch.origin
A stretch works in a similar fashion to the squeeze described above.
vg.rotate.width
vg.rotate_origin
vg.rotate.time_ms
A rotate is again a two touch gesture. The starting points are calculated using the origin and width in the same manner as origin / start width are calculated for squeeze / stretch above. The time duration in milliseconds is determined by vg.rotate.time_ms. The angle of rotation is as taken from the controller output.
vg.angle_offset
If set, this will adjust the angle reported by the controller by the specified number of degrees to allow for differences in the orientation of the screen.
vg.delay_before_gesture_ms
If set this will introduce a delay of the specified number of milliseconds between a trigger event (when the current touch will be ended) and the start of the gesture. If not set this defaults to 50 ms.
Example

With the settings above a squeeze event reported by the KME controller will generate 2 touches (after releasing the current touch)
The first at the point of touch and the second 200 pixels away at an angle specified by the reported event.
Over a period of 100 ms the second touch will move to a point 100 pixels from the first and then the squeeze ends.
Note that as this software needs to be customised according to the needs of the target no defaults are specified and these will need to be determined by experiment.
Once a suitable set is defined these can be placed in a setup script.