Re: [PATCH xf86-input-synaptics v4 03/10] Disable click action functionality for clickpads by default

2012-03-04 Thread Peter Hutterer
On Fri, Mar 02, 2012 at 12:42:29PM -0800, Chase Douglas wrote:
 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);
 +}

no. this isn't something we do in the driver, this is something we let the
client handle.

having this as a startup default if a clickpad is detected is fair enough,
but no weird (undocumented!) property cross-interaction please.

leave this hunk out please.

  } 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. */

this comment is now incorrect.

Cheers,
  Peter

 -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


[PATCH xf86-input-synaptics v4 03/10] Disable click action functionality for clickpads by default

2012-03-02 Thread Chase Douglas
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