On 08/01/2010 01:04 AM, Éric Piel wrote: [...] > I've got some fairly new versions of everything, but at least here, this > is already happening with the X synaptics driver: in practice there is > not jump at all, which ever finger is reported in doubletap. In > doubletap it moves the scrolling axes, and changing to singletap, it > resets to the new current position. No jump, both with my old synaptics > hardware and with the elantech. You are right. Jumping does not generally occur in synaptics when the number of fingers changes. The overall solution is still not quite satisfactory, since the MT points reported are the lower-left and upper-right corners of a rectangle, instead of the actual touch points. As mentioned in another mail, it would make sense to add logic to bring this device up to the type A level. If the needed logic turns out to be equivalent to the type B level, what can you do. :-) How about this as a stab at the MT point problem. The idea here is that get_corner_id() returns the rectangle corner which minimizes the change in motion direction, according to the principle of inertia. For all cases, position[0] is reported as the ABS_X/Y point. state = (num_finger, corner_id, motion_id, position[n]) At each touch frame update, do 1. num_finger == 1 Set position[0] = finger-position 2. num_finger == 2 If last frame was one finger, do Find corner id such that position change is minimized id = get_initial_corner_id(position[0], corner-position[id]) Else Find temporary motion id mid = get_motion_id(position[0], corner-position[corner_id]) Find corner id such that motion change is minimized id = get_corner_id(corner_id, motion_id, mid) Set corner_id = id motion_id = get_motion_id(position[0], corner-position[id]) position[0] = corner-position[id], position[1] = corner-position[opposite[id]] Report position[0] and position[1] as MT points Since this is all integer logic, it should be possible to detect motion changes as sign changes, such that get_motion_id() and get_corner_id() can be implemented as constant arrays. Cheers, Henrik -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html