Touch-Base Support

Virtual gestures

Last updated 2019-06-16

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.