Clickpad press-and-drag with two fingers will break click actions. Disable them for these devices by default until a good solution is found for letting both functionalities co-exist.
Signed-off-by: Chase Douglas <chase.doug...@canonical.com> --- src/properties.c | 14 ++++++++++++++ src/synaptics.c | 11 +++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/properties.c b/src/properties.c index 38f21b2..11b4156 100644 --- a/src/properties.c +++ b/src/properties.c @@ -400,6 +400,20 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop, return BadMatch; para->clickpad = *(BOOL*)prop->data; + + /* ClickPad support conflicts with click action support. Reset click + * actions. The user can override afterwards if they really want. */ + if (para->clickpad) + { + CARD8 values[3] = {}; + + para->click_action[F1_CLICK1] = 0; + para->click_action[F2_CLICK1] = 0; + para->click_action[F3_CLICK1] = 0; + + XIChangeDeviceProperty(dev, prop_clickaction, XA_INTEGER, 8, + PropModeReplace, 3, values, TRUE); + } } else if (property == prop_tap_fast) { if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER) diff --git a/src/synaptics.c b/src/synaptics.c index 64e87da..f1b76ee 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -428,7 +428,7 @@ static void set_default_parameters(InputInfoPtr pInfo) int pressureMotionMinZ, pressureMotionMaxZ; /* pressure */ int palmMinWidth, palmMinZ; /* pressure */ int tapButton1, tapButton2, tapButton3; - int clickFinger1, clickFinger2, clickFinger3; + int clickFinger1 = 0, clickFinger2 = 0, clickFinger3 = 0; Bool vertEdgeScroll, horizEdgeScroll; Bool vertTwoFingerScroll, horizTwoFingerScroll; int horizResolution = 1; @@ -500,9 +500,12 @@ static void set_default_parameters(InputInfoPtr pInfo) /* Enable multifinger-click if only have one physical button, otherwise clickFinger is always button 1. */ - clickFinger1 = 1; - clickFinger2 = (priv->has_right || priv->has_middle) ? 1 : 3; - clickFinger3 = (priv->has_right || priv->has_middle) ? 1 : 2; + if (!pars->clickpad) + { + clickFinger1 = 1; + clickFinger2 = (priv->has_right || priv->has_middle) ? 1 : 3; + clickFinger3 = (priv->has_right || priv->has_middle) ? 1 : 2; + } /* Enable vert edge scroll if we can't detect doubletap */ vertEdgeScroll = priv->has_double ? FALSE : TRUE; -- 1.7.9 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel