Hi Pierre. Thank you for taking the time to create a patch. My biggest change was moving the following up in the HandleState function, so the low level state is corrected *before* doing button detection (this removed the quirk that depended on the order in which fingers hit the touchpad):
//Correct HW state by throwing out fingers outside of the active area inside_active_area = FALSE; hw->numFingers = 0; for (int i = 0; i < hw->num_mt_mask; i++) { ValuatorMask *f1; Bool mt_inside; double x1, y1; if (hw->slot_state[i] == SLOTSTATE_EMPTY || hw->slot_state[i] == SLOTSTATE_CLOSE) continue; f1 = hw->mt_mask[i]; x1 = valuator_mask_get_double(f1, 0); y1 = valuator_mask_get_double(f1, 1); mt_inside = is_inside_active_area(priv, x1, y1); if (!mt_inside) { hw->slot_state[i] = SLOTSTATE_EMPTY; continue; } if (!inside_active_area) { inside_active_area = TRUE; hw->x = x1; hw->y = y1; } hw->numFingers++; } You may notice that I removed the check to see if the touchpad is a clickpad - I did this because it did not look like the code was being executed. You could put that back in (turned out I was not actually replacing the installed driver when I did "make install"). Secondly, I also removed something odd from is_inside_active_area. That function now looks like: static Bool is_inside_active_area(SynapticsPrivate * priv, int x, int y) { if ((priv->synpara.area_left_edge != 0) && (x < priv->synpara.area_left_edge)) return FALSE; else if ((priv->synpara.area_right_edge != 0) && (x > priv->synpara.area_right_edge)) return FALSE; if ((priv->synpara.area_top_edge != 0) && (y < priv->synpara.area_top_edge)) return FALSE; else if ((priv->synpara.area_bottom_edge != 0) && (y > priv->synpara.area_bottom_edge)) return FALSE; return TRUE; } I did this mainly because the code that was there was not consistent with how the function is being used now - it would return true in circumstances when the source finger was NOT in the active area but if something else was (which could mess up the finger count). I don't think I tried the first change without the second, but it is certainly plausible that the second change could fix the type of behavior you are talking about. I have not seen such behavior on my machine with these changes. It seems suspicious that the patched driver would result in no changes. I would make sure that you are actually running your custom version of the driver and not the stock version. Try to break something deliberately - I would suggest putting: if (hw->numFingers > 1) hw->numFingers = 1; After the first change and try to run the new driver. If two-finger scroll still works you know that you are running the old driver. Bryan -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to xserver-xorg-input-synaptics in Ubuntu. https://bugs.launchpad.net/bugs/1026046 Title: Missing support for thumb resting on bottom of clickpad Status in xf86-input-synaptics: Unknown Status in “xserver-xorg-input-synaptics” package in Ubuntu: Confirmed Status in “xserver-xorg-input-synaptics” source package in Precise: Confirmed Status in “xserver-xorg-input-synaptics” package in Debian: New Bug description: When using the trackpad on the MacBook Pro In Mac OS X it is possible to have the thumb resting (ready to click) on the bottom part of the touchpad while moving the mouse pointer around with your index or middle finger. Likewise it is also possible to use two finger scrolling with the index and middle finger on the upper part on the track pad while resting the thumb on the lower part of the trackpad. This behaviour is not currently supported with the synaptics driver in 12.04. It wil register a two finger scroll when the thumb is resting in the bottom part and index finger moves around in the upper part. I have tried playing aroud with the setting AreaBottomEdge that disables all motion on the bottom part of the touchpad. Unfortunately when this setting is enabled it still detects a finger in the area, so it wil register a two finger scroll like before. To manage notifications about this bug go to: https://bugs.launchpad.net/xserver-xorg-input-synaptics/+bug/1026046/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp