Hello community,

here is the log from the commit of package xorg-x11-driver-input for 
openSUSE:Factory
checked in at Sat Oct 8 11:45:03 CEST 2011.



--------
--- openSUSE:Factory/xorg-x11-driver-input/xorg-x11-driver-input.changes        
2011-09-23 12:52:14.000000000 +0200
+++ xorg-x11-driver-input/xorg-x11-driver-input.changes 2011-10-07 
12:53:22.000000000 +0200
@@ -1,0 +2,8 @@
+Thu Oct  6 18:06:17 CEST 2011 - [email protected]
+
+- Resurrect synaptics patches
+- Removed obsoleted patches:
+  U_xf86-input-synaptics_...handlin.patch: already in upstream,
+  xf86-input-synaptics-64bit-fix.diff: no longer needed
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  
U_xf86-input-synaptics_Drain-XRecord-connection-of-any-events-after-handlin.patch
  xf86-input-synaptics-64bit-fix.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorg-x11-driver-input.spec ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:47.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:47.000000000 +0200
@@ -61,12 +61,10 @@
 Patch50:        xf86-input-synaptics-clickpad-doc-update.diff
 Patch51:        xf86-input-synaptics-add-led-support.diff
 Patch52:        xf86-input-synaptics-led-double-tap.diff
-Patch53:        xf86-input-synaptics-64bit-fix.diff
 Patch54:        xf86-input-synaptics-fix-clickpad-capabilities.diff
 Patch55:        xf86-input-synaptics-clickpad-threshold.diff
 Patch56:        xf86-input-synaptics-move-threshold.diff
 Patch57:        xf86-input-synaptics-filter-bogus-coord.diff
-Patch59:        
U_xf86-input-synaptics_Drain-XRecord-connection-of-any-events-after-handlin.patch
 
 %description
 This package contains X.Org input drivers.
@@ -88,22 +86,19 @@
 pushd xf86-input-jamstudio-*
 %patch2
 popd
-### Takashi's patches disabled for now due to driver update 1.3.0 --> 1.5.0
-#pushd xf86-input-synaptics-*
-#%patch23 -p0
-#%patch24 -p0
-#%patch48 -p0
-#%patch49 -p1
-#%patch50 -p1
-#%patch51 -p1
-#%patch52 -p1
-#%patch53 -p1
-#%patch54 -p1
-#%patch55 -p1
-#%patch56 -p1
-#%patch57 -p1
-#%patch59 -p1
-#popd
+pushd xf86-input-synaptics-*
+%patch23 -p1
+%patch24 -p1
+%patch48 -p1
+%patch49 -p1
+%patch50 -p1
+%patch51 -p1
+%patch52 -p1
+%patch54 -p1
+%patch55 -p1
+%patch56 -p1
+%patch57 -p1
+popd
 %ifnarch %ix86 x86_64
 rm -rf xf86-input-vmmouse*
 %else

++++++ xf86-input-synaptics-add-clickpad-support.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -23,22 +23,22 @@
 
 --- a/src/eventcomm.c
 +++ b/src/eventcomm.c
-@@ -269,6 +269,12 @@
-       }
+@@ -329,6 +329,12 @@
+       strcat(buf, " scroll-buttons");
  
-       xf86Msg(X_PROBED, "%s: buttons:%s\n", local->name, buf);
+     xf86IDrvMsg(pInfo, X_PROBED, "buttons:%s\n", buf);
 +
-+      /* clickpad device reports only the single left button mask */
-+      if (priv->has_left && !priv->has_right && !priv->has_middle && 
!priv->has_double) {
-+          priv->is_clickpad = TRUE;
-+          xf86Msg(X_PROBED, "%s: is Clickpad device\n", local->name);
-+      }
-     }
++    /* clickpad device reports only the single left button mask */
++    if (priv->has_left && !priv->has_right && !priv->has_middle && 
!priv->has_double) {
++      priv->is_clickpad = TRUE;
++      xf86IDrvMsg(pInfo, X_PROBED, "is Clickpad device\n");
++    }
  }
  
+ static Bool
 --- a/src/synaptics.c
 +++ b/src/synaptics.c
-@@ -510,6 +510,18 @@
+@@ -492,6 +492,18 @@
          vertResolution = priv->resy;
      }
  
@@ -57,26 +57,26 @@
      /* set the parameters */
      pars->left_edge = xf86SetIntOption(opts, "LeftEdge", l);
      pars->right_edge = xf86SetIntOption(opts, "RightEdge", r);
-@@ -518,6 +530,10 @@
+@@ -500,6 +512,10 @@
  
-     pars->area_top_edge = set_percent_option(opts, "AreaTopEdge", height, 
priv->miny);
-     pars->area_bottom_edge = set_percent_option(opts, "AreaBottomEdge", 
height, priv->miny);
+     pars->area_top_edge = set_percent_option(opts, "AreaTopEdge", height, 
priv->miny, 0);
+     pars->area_bottom_edge = set_percent_option(opts, "AreaBottomEdge", 
height, priv->miny, 0);
 +    /* in clickpad mode, we don't want to sense the button area as default */
 +    if (pars->area_bottom_edge == 0 && priv->is_clickpad)
 +      pars->area_bottom_edge = b;
 +
-     pars->area_left_edge = set_percent_option(opts, "AreaLeftEdge", width, 
priv->minx);
-     pars->area_right_edge = set_percent_option(opts, "AreaRightEdge", width, 
priv->minx);
+     pars->area_left_edge = set_percent_option(opts, "AreaLeftEdge", width, 
priv->minx, 0);
+     pars->area_right_edge = set_percent_option(opts, "AreaRightEdge", width, 
priv->minx, 0);
  
-@@ -1064,6 +1080,44 @@
+@@ -1074,6 +1090,44 @@
      return Success;
  }
  
 +/* clickpad event handling */
 +static void
-+handle_clickpad(LocalDevicePtr local, struct SynapticsHwState *hw)
++handle_clickpad(InputInfoPtr pInfo, struct SynapticsHwState *hw)
 +{
-+    SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
++    SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private);
 +    SynapticsParameters *para = &priv->synpara;
 +
 +    if (hw->left) { /* clicked? */
@@ -113,25 +113,25 @@
  
  /*
   * Convert from absolute X/Y coordinates to a coordinate system where
-@@ -2230,6 +2284,10 @@
-     SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
+@@ -2338,6 +2392,10 @@
+     SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private);
      SynapticsParameters *para = &priv->synpara;
  
 +    /* Clickpad handling for button area */
 +    if (priv->is_clickpad)
-+      handle_clickpad(local, hw);
++      handle_clickpad(pInfo, hw);
 +
      /* Treat the first two multi buttons as up/down for now. */
      hw->up |= hw->multi[0];
      hw->down |= hw->multi[1];
 --- a/src/synapticsstr.h
 +++ b/src/synapticsstr.h
-@@ -235,6 +235,8 @@
+@@ -244,6 +244,8 @@
      Bool has_pressure;                        /* device reports pressure */
      Bool has_width;                   /* device reports finger width */
      Bool has_scrollbuttons;           /* device has physical scrollbuttons */
 +    Bool is_clickpad;                 /* is Clickpad device (one-button) */
 +    struct SynapticsHwState prev_hw;  /* previous h/w state (for clickpad) */
  
-     enum TouchpadModel model;          /* The detected model */
- } SynapticsPrivate;
+     enum TouchpadModel model;         /* The detected model */
+     unsigned short id_vendor;         /* vendor id */

++++++ xf86-input-synaptics-add-led-support.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -27,9 +27,9 @@
 
 --- a/include/synaptics-properties.h
 +++ b/include/synaptics-properties.h
-@@ -155,4 +155,10 @@
- /* 32 bit, 4 values, left, right, top, bottom */
- #define SYNAPTICS_PROP_AREA "Synaptics Area"
+@@ -158,4 +158,10 @@
+ /* 32 Bit Integer, 2 values, horizontal hysteresis, vertical hysteresis */
+ #define SYNAPTICS_PROP_NOISE_CANCELLATION "Synaptics Noise Cancellation"
  
 +/* 8 bit (BOOL, read-only), has_led */
 +#define SYNAPTICS_PROP_LED "Synaptics LED"
@@ -40,7 +40,7 @@
  #endif /* _SYNAPTICS_PROPERTIES_H_ */
 --- a/man/synaptics.man
 +++ b/man/synaptics.man
-@@ -909,6 +909,15 @@
+@@ -936,6 +936,15 @@
  .BI "Synaptics Pad Resolution"
  32 bit unsigned, 2 values (read-only), vertical, horizontal in 
units/millimeter.
  
@@ -54,34 +54,34 @@
 +8 bit (BOOL), the light status of the embedded LED.
 +
  .SH "NOTES"
- There is an example hal policy file in
- .I ${sourcecode}/fdi/11-x11-synaptics.fdi
+ Configuration through
+ .I InputClass
 --- a/src/eventcomm.c
 +++ b/src/eventcomm.c
-@@ -51,6 +51,8 @@
- #define LONG(x)  ((x) / LONG_BITS)
- #define TEST_BIT(bit, array) (array[LONG(bit)] & (1 << OFF(bit)))
+@@ -48,6 +48,8 @@
+ #define LONG_BITS (sizeof(long) * 8)
+ #define NBITS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
  
 +#define SYNAPTICS_LED_SYS_FILE        
"/sys/class/leds/psmouse::synaptics/brightness"
 +
- /*****************************************************************************
-  *    Function Definitions
-  ****************************************************************************/
-@@ -166,6 +168,32 @@
-     }
+ /**
+  * Protocol-specific data.
+  */
+@@ -242,6 +244,32 @@
  }
  
+ 
 +static void
-+event_query_led(LocalDevicePtr local)
++event_query_led(InputInfoPtr pInfo)
 +{
-+    SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
++    SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
 +
 +    priv->synpara.has_led = !access(SYNAPTICS_LED_SYS_FILE, W_OK);
 +}
 +
-+static void EventUpdateLED(LocalDevicePtr local)
++static void EventUpdateLED(InputInfoPtr pInfo)
 +{
-+    SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
++    SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
 +
 +    if (priv->synpara.has_led) {
 +        char *val = priv->synpara.led_status ? "255" : "0";
@@ -93,22 +93,22 @@
 +        err = write(fd, val, strlen(val));
 +        close(fd);
 +        if (err < 0)
-+          xf86Msg(X_WARNING, "%s can't write LED value %s\n", local->name, 
val);
++          xf86IDrvMsg(pInfo, X_WARNING, "can't write LED value %s\n", val);
 +    }
 +}
 +
  /* Query device for axis ranges */
  static void
- event_query_axis_ranges(LocalDevicePtr local)
-@@ -434,6 +462,7 @@
-     if (event_query_is_touchpad(local->fd, (need_grab) ? *need_grab : TRUE))
-       event_query_axis_ranges(local);
-     event_query_info(local);
-+    event_query_led(local);
- }
+ event_query_axis_ranges(InputInfoPtr pInfo)
+@@ -508,6 +536,7 @@
  
- static Bool
-@@ -503,5 +532,6 @@
+     if (event_query_is_touchpad(pInfo->fd, (proto_data) ? 
proto_data->need_grab : TRUE))
+       event_query_axis_ranges(pInfo);
++    event_query_led(pInfo);
+     event_query_model(pInfo->fd, &priv->model, &priv->id_vendor, 
&priv->id_product);
+ 
+     xf86IDrvMsg(pInfo, X_PROBED, "Vendor %#hx Product %#hx\n",
+@@ -598,5 +627,6 @@
      EventQueryHardware,
      EventReadHwState,
      EventAutoDevProbe,
@@ -118,26 +118,26 @@
  };
 --- a/src/properties.c
 +++ b/src/properties.c
-@@ -82,6 +82,8 @@
- Atom prop_capabilities          = 0;
- Atom prop_resolution            = 0;
- Atom prop_area                  = 0;
+@@ -94,6 +94,8 @@
+ Atom prop_noise_cancellation    = 0;
+ Atom prop_product_id            = 0;
+ Atom prop_device_node           = 0;
 +Atom prop_led                   = 0;
 +Atom prop_led_status            = 0;
  
  static Atom
  InitAtom(DeviceIntPtr dev, char *name, int format, int nvalues, int *values)
-@@ -278,6 +280,9 @@
-     values[2] = para->area_top_edge;
-     values[3] = para->area_bottom_edge;
-     prop_area = InitAtom(local->dev, SYNAPTICS_PROP_AREA, 32, 4, values);
-+
-+    prop_led = InitAtom(local->dev, SYNAPTICS_PROP_LED, 8, 1, &para->has_led);
-+    prop_led_status = InitAtom(local->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, 
&para->led_status);
- }
- 
- int
-@@ -649,6 +654,16 @@
+@@ -296,6 +298,9 @@
+     prop_noise_cancellation = InitAtom(pInfo->dev,
+             SYNAPTICS_PROP_NOISE_CANCELLATION, 32, 2, values);
+ 
++    prop_led = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED, 8, 1, &para->has_led);
++    prop_led_status = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, 
&para->led_status);
++
+     /* only init product_id property if we actually know them */
+     if (priv->id_vendor || priv->id_product)
+     {
+@@ -684,6 +689,16 @@
          para->area_right_edge  = area[1];
          para->area_top_edge    = area[2];
          para->area_bottom_edge = area[3];
@@ -149,17 +149,17 @@
 +        if (para->has_led) {
 +            para->led_status = *(BOOL*)prop->data;
 +            if (priv->proto_ops && priv->proto_ops->UpdateLED)
-+                priv->proto_ops->UpdateLED(local);
++                priv->proto_ops->UpdateLED(pInfo);
 +        }
-     }
- 
-     return Success;
+     } else if (property == prop_noise_cancellation) {
+         INT32 *hyst;
+         if (prop->size != 2 || prop->format != 32 || prop->type != XA_INTEGER)
 --- a/src/synapticsstr.h
 +++ b/src/synapticsstr.h
-@@ -160,6 +160,8 @@
-     unsigned int resolution_horiz;          /* horizontal resolution of 
touchpad in units/mm */
+@@ -165,6 +165,8 @@
      unsigned int resolution_vert;           /* vertical resolution of 
touchpad in units/mm */
      int area_left_edge, area_right_edge, area_top_edge, area_bottom_edge; /* 
area coordinates absolute */
+     int hyst_x, hyst_y;                     /* x and y width of hysteresis 
box */
 +    Bool has_led;                           /* has an embedded LED */
 +    Bool led_status;                        /* Current status of LED (1=on) */
  } SynapticsParameters;
@@ -167,17 +167,17 @@
  
 --- a/src/synproto.h
 +++ b/src/synproto.h
-@@ -91,6 +91,7 @@
+@@ -77,6 +77,7 @@
                        struct CommData *comm, struct SynapticsHwState *hwRet);
-     Bool (*AutoDevProbe)(LocalDevicePtr local);
-     void (*ReadDevDimensions)(LocalDevicePtr local);
-+    void (*UpdateLED)(LocalDevicePtr local);
+     Bool (*AutoDevProbe)(InputInfoPtr pInfo, const char *device);
+     void (*ReadDevDimensions)(InputInfoPtr pInfo);
++    void (*UpdateLED)(InputInfoPtr pInfo);
  };
  
- extern struct SynapticsProtocolOperations psaux_proto_operations;
+ #ifdef BUILD_PS2COMM
 --- a/tools/synclient.c
 +++ b/tools/synclient.c
-@@ -143,6 +143,7 @@
+@@ -142,6 +142,7 @@
      {"AreaRightEdge",         PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     1},
      {"AreaTopEdge",           PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     2},
      {"AreaBottomEdge",        PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     3},

++++++ xf86-input-synaptics-clickpad-doc-update.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -10,7 +10,7 @@
 
 --- a/man/synaptics.man
 +++ b/man/synaptics.man
-@@ -726,6 +726,15 @@
+@@ -753,6 +753,15 @@
  Trackstick mode is exited when the finger pressure drops below
  FingerLow or when the finger is moved further than MaxTapMove away
  from the initial position.

++++++ xf86-input-synaptics-clickpad-threshold.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -9,9 +9,9 @@
 
 --- a/include/synaptics-properties.h
 +++ b/include/synaptics-properties.h
-@@ -155,6 +155,12 @@
- /* 32 bit, 4 values, left, right, top, bottom */
- #define SYNAPTICS_PROP_AREA "Synaptics Area"
+@@ -158,6 +158,12 @@
+ /* 32 Bit Integer, 2 values, horizontal hysteresis, vertical hysteresis */
+ #define SYNAPTICS_PROP_NOISE_CANCELLATION "Synaptics Noise Cancellation"
  
 +/* 32bit */
 +#define SYNAPTICS_PROP_TOUCH_BUTTON_AREA "Synaptics Touch Button Area"
@@ -24,26 +24,26 @@
  
 --- a/src/properties.c
 +++ b/src/properties.c
-@@ -82,6 +82,8 @@
- Atom prop_capabilities          = 0;
- Atom prop_resolution            = 0;
- Atom prop_area                  = 0;
+@@ -94,6 +94,8 @@
+ Atom prop_noise_cancellation    = 0;
+ Atom prop_product_id            = 0;
+ Atom prop_device_node           = 0;
 +Atom prop_touch_button_area     = 0;
 +Atom prop_touch_button_sticky   = 0;
  Atom prop_led                   = 0;
  Atom prop_led_status            = 0;
  Atom prop_led_double_tap        = 0;
-@@ -282,6 +284,9 @@
-     values[3] = para->area_bottom_edge;
-     prop_area = InitAtom(local->dev, SYNAPTICS_PROP_AREA, 32, 4, values);
+@@ -299,6 +301,9 @@
+     prop_noise_cancellation = InitAtom(pInfo->dev,
+             SYNAPTICS_PROP_NOISE_CANCELLATION, 32, 2, values);
  
-+    prop_touch_button_area = InitAtom(local->dev, 
SYNAPTICS_PROP_TOUCH_BUTTON_AREA, 32, 1, &para->touch_button_area);
-+    prop_touch_button_sticky = InitAtom(local->dev, 
SYNAPTICS_PROP_TOUCH_BUTTON_STICKY, 32, 1, &para->touch_button_sticky);
++    prop_touch_button_area = InitAtom(pInfo->dev, 
SYNAPTICS_PROP_TOUCH_BUTTON_AREA, 32, 1, &para->touch_button_area);
++    prop_touch_button_sticky = InitAtom(pInfo->dev, 
SYNAPTICS_PROP_TOUCH_BUTTON_STICKY, 32, 1, &para->touch_button_sticky);
 +
-     prop_led = InitAtom(local->dev, SYNAPTICS_PROP_LED, 8, 1, &para->has_led);
-     prop_led_status = InitAtom(local->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, 
&para->led_status);
+     prop_led = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED, 8, 1, &para->has_led);
+     prop_led_status = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, 
&para->led_status);
  
-@@ -671,6 +676,16 @@
+@@ -705,6 +710,16 @@
          para->area_right_edge  = area[1];
          para->area_top_edge    = area[2];
          para->area_bottom_edge = area[3];
@@ -62,7 +62,7 @@
          if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
 --- a/src/synaptics.c
 +++ b/src/synaptics.c
-@@ -511,18 +511,6 @@
+@@ -493,18 +493,6 @@
          vertResolution = priv->resy;
      }
  
@@ -81,18 +81,18 @@
      /* set the parameters */
      pars->left_edge = xf86SetIntOption(opts, "LeftEdge", l);
      pars->right_edge = xf86SetIntOption(opts, "RightEdge", r);
-@@ -531,10 +519,6 @@
+@@ -513,10 +501,6 @@
  
-     pars->area_top_edge = set_percent_option(opts, "AreaTopEdge", height, 
priv->miny);
-     pars->area_bottom_edge = set_percent_option(opts, "AreaBottomEdge", 
height, priv->miny);
+     pars->area_top_edge = set_percent_option(opts, "AreaTopEdge", height, 
priv->miny, 0);
+     pars->area_bottom_edge = set_percent_option(opts, "AreaBottomEdge", 
height, priv->miny, 0);
 -    /* in clickpad mode, we don't want to sense the button area as default */
 -    if (pars->area_bottom_edge == 0 && priv->is_clickpad)
 -      pars->area_bottom_edge = b;
 -
-     pars->area_left_edge = set_percent_option(opts, "AreaLeftEdge", width, 
priv->minx);
-     pars->area_right_edge = set_percent_option(opts, "AreaRightEdge", width, 
priv->minx);
+     pars->area_left_edge = set_percent_option(opts, "AreaLeftEdge", width, 
priv->minx, 0);
+     pars->area_right_edge = set_percent_option(opts, "AreaRightEdge", width, 
priv->minx, 0);
  
-@@ -604,6 +588,8 @@
+@@ -589,6 +573,8 @@
      pars->tap_and_drag_gesture = xf86SetBoolOption(opts, "TapAndDragGesture", 
TRUE);
      pars->resolution_horiz = xf86SetIntOption(opts, "HorizResolution", 
horizResolution);
      pars->resolution_vert = xf86SetIntOption(opts, "VertResolution", 
vertResolution);
@@ -101,7 +101,7 @@
      pars->led_double_tap = xf86SetBoolOption(opts, "LEDDoubleTap", TRUE);
  
      /* Warn about (and fix) incorrectly configured TopEdge/BottomEdge 
parameters */
-@@ -1086,6 +1072,11 @@
+@@ -1096,6 +1082,11 @@
      return Success;
  }
  
@@ -113,7 +113,7 @@
  #define LED_TOGGLE_X_AREA     0.10
  #define LED_TOGGLE_Y_AREA     0.08
  
-@@ -1152,45 +1143,118 @@
+@@ -1162,45 +1153,118 @@
      return 0; /* already processed; ignore this finger event */
  }
  
@@ -166,9 +166,9 @@
 +
  /* clickpad event handling */
  static void
- handle_clickpad(LocalDevicePtr local, struct SynapticsHwState *hw)
+ handle_clickpad(InputInfoPtr pInfo, struct SynapticsHwState *hw)
  {
-     SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
+     SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private);
      SynapticsParameters *para = &priv->synpara;
 +    int in_main_button;
 +
@@ -255,8 +255,8 @@
  /*
   * Convert from absolute X/Y coordinates to a coordinate system where
   * -1 corresponds to the left/upper edge and +1 corresponds to the
-@@ -1667,7 +1731,7 @@
-     int timeleft, timeout;
+@@ -1675,7 +1739,7 @@
+     edge_type edge;
      int delay = 1000000000;
  
 -    if (priv->palm)
@@ -264,31 +264,31 @@
        return delay;
  
      touch = finger && !priv->finger_state;
-@@ -2372,6 +2436,8 @@
+@@ -2480,6 +2544,8 @@
      if (para->touchpad_off != 1 && priv->is_clickpad)
-       handle_clickpad(local, hw);
+       handle_clickpad(pInfo, hw);
  
 +    priv->prev_hw = *hw;
 +
      /* Treat the first two multi buttons as up/down for now. */
      hw->up |= hw->multi[0];
      hw->down |= hw->multi[1];
-@@ -2554,6 +2620,14 @@
-     }
- 
-     timeleft = ComputeDeltas(priv, hw, edge, &dx, &dy, inside_active_area);
-+    if (priv->clickpad_threshold > 0) {
-+      priv->clickpad_dx += dx;
-+      priv->clickpad_dy += dy;
-+      if (move_distance(priv->clickpad_dx, priv->clickpad_dy) > 
priv->clickpad_threshold)
-+          priv->clickpad_threshold = 0;
-+      else
-+          dx = dy = 0;
-+    }
-     delay = MIN(delay, timeleft);
+@@ -2673,6 +2739,14 @@
  
+     if (!priv->absolute_events) {
+       timeleft = ComputeDeltas(priv, hw, edge, &dx, &dy, inside_active_area);
++      if (priv->clickpad_threshold > 0) {
++        priv->clickpad_dx += dx;
++        priv->clickpad_dy += dy;
++        if (move_distance(priv->clickpad_dx, priv->clickpad_dy) > 
priv->clickpad_threshold)
++            priv->clickpad_threshold = 0;
++        else
++            dx = dy = 0;
++      }
+       delay = MIN(delay, timeleft);
+     }
  
-@@ -2565,7 +2639,7 @@
+@@ -2685,7 +2759,7 @@
               (hw->multi[2] ? 0x20 : 0) |
               (hw->multi[3] ? 0x40 : 0));
  
@@ -299,16 +299,16 @@
            if (tap_mask != (priv->lastButtons & tap_mask)) {
 --- a/src/synapticsstr.h
 +++ b/src/synapticsstr.h
-@@ -160,6 +160,8 @@
-     unsigned int resolution_horiz;          /* horizontal resolution of 
touchpad in units/mm */
+@@ -165,6 +165,8 @@
      unsigned int resolution_vert;           /* vertical resolution of 
touchpad in units/mm */
      int area_left_edge, area_right_edge, area_top_edge, area_bottom_edge; /* 
area coordinates absolute */
+     int hyst_x, hyst_y;                     /* x and y width of hysteresis 
box */
 +    int touch_button_area;                  /* clickpad button area */
 +    int touch_button_sticky;                /* pointer stickiness in button 
area */
      Bool has_led;                           /* has an embedded LED */
      Bool led_status;                        /* Current status of LED (1=on) */
      Bool led_double_tap;                  /* double-tap period in ms for 
touchpad LED control */
-@@ -239,6 +241,9 @@
+@@ -248,6 +250,9 @@
      Bool has_width;                   /* device reports finger width */
      Bool has_scrollbuttons;           /* device has physical scrollbuttons */
      Bool is_clickpad;                 /* is Clickpad device (one-button) */
@@ -320,7 +320,7 @@
      Bool led_touch_state;
 --- a/tools/synclient.c
 +++ b/tools/synclient.c
-@@ -143,6 +143,8 @@
+@@ -142,6 +142,8 @@
      {"AreaRightEdge",         PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     1},
      {"AreaTopEdge",           PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     2},
      {"AreaBottomEdge",        PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     3},
@@ -331,7 +331,7 @@
      { NULL, 0, 0, 0, 0 }
 --- a/man/synaptics.man
 +++ b/man/synaptics.man
-@@ -554,6 +554,21 @@
+@@ -565,6 +565,21 @@
  "untouch" event happens when the Z value goes below FingerLow.
  .
  .TP
@@ -353,7 +353,7 @@
  .BI "Option \*qLEDDoubleTap\*q \*q" boolean \*q
  .
  Enables/disables the touchpad-control by double-tapping on the top-left
-@@ -744,10 +759,9 @@
+@@ -771,10 +786,9 @@
  and without multi-fingers, the driver assumes it's a Synaptics
  Clickpad device and handles it in ClickZone mode.  In this mode,
  a left/right/middle button event is generated according to the
@@ -367,7 +367,7 @@
  
  .SH "DEVICE PROPERTIES"
  Synaptics 1.0 and higher support input device properties if the driver is
-@@ -923,6 +937,14 @@
+@@ -950,6 +964,14 @@
  32 bit unsigned, 2 values (read-only), vertical, horizontal in 
units/millimeter.
  
  .TP 7

++++++ xf86-input-synaptics-filter-bogus-coord.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -4,9 +4,9 @@
 
 --- a/src/eventcomm.c
 +++ b/src/eventcomm.c
-@@ -363,6 +363,21 @@
+@@ -444,6 +444,21 @@
      struct SynapticsHwState *hw = &(comm->hwState);
-     SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
+     SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
      SynapticsParameters *para = &priv->synpara;
 +    int minx, miny, maxx, maxy, x;
 +
@@ -24,12 +24,12 @@
 +    maxy += miny;
 +    miny -= (miny > x) ? x : miny;
  
-     while (SynapticsReadEvent(local, &ev)) {
+     while (SynapticsReadEvent(pInfo, &ev)) {
        switch (ev.type) {
-@@ -377,6 +392,9 @@
-                   hw->numFingers = 3;
-               else
-                   hw->numFingers = 0;
+@@ -451,6 +466,9 @@
+           switch (ev.code) {
+           case SYN_REPORT:
+               hw->numFingers = count_fingers(comm);
 +              /* if the coord is out of range, we filter it out */
 +              if (priv->is_clickpad && hw->z > 0 && (hw->x < minx || hw->x > 
maxx || hw->y < miny || hw->y > maxy))
 +                      return FALSE;

++++++ xf86-input-synaptics-fix-clickpad-capabilities.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -1,20 +1,20 @@
 ---
- src/eventcomm.c |   26 ++++++++++++++++++++------
- 1 file changed, 20 insertions(+), 6 deletions(-)
+ src/eventcomm.c |   29 ++++++++++++++++++++++-------
+ 1 file changed, 22 insertions(+), 7 deletions(-)
 
 --- a/src/eventcomm.c
 +++ b/src/eventcomm.c
-@@ -169,6 +169,25 @@
- }
+@@ -245,6 +245,25 @@
+ 
  
  static void
-+event_query_clickpad(LocalDevicePtr local)
++event_query_clickpad(InputInfoPtr pInfo)
 +{
-+    SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
++    SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
 +
 +    /* clickpad device reports only the single left button mask */
 +    if (priv->has_left && !priv->has_right && !priv->has_middle &&
-+      !priv->has_double &&
++      /*!priv->has_double &&*/
 +      priv->model == MODEL_SYNAPTICS) {
 +      priv->is_clickpad = TRUE;
 +      /* enable right/middle button caps; otherwise gnome-settings-daemon
@@ -22,32 +22,39 @@
 +       * single-button
 +       */
 +      priv->has_right = priv->has_middle = TRUE;
-+      xf86Msg(X_INFO, "%s: is Clickpad device\n", local->name);
++      xf86IDrvMsg(pInfo, X_INFO, "is Clickpad device\n");
 +    }
 +}
 +
 +static void
- event_query_led(LocalDevicePtr local)
+ event_query_led(InputInfoPtr pInfo)
  {
-     SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
-@@ -297,12 +316,6 @@
-       }
+     SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
+@@ -357,12 +376,6 @@
+       strcat(buf, " scroll-buttons");
  
-       xf86Msg(X_PROBED, "%s: buttons:%s\n", local->name, buf);
+     xf86IDrvMsg(pInfo, X_PROBED, "buttons:%s\n", buf);
 -
--      /* clickpad device reports only the single left button mask */
--      if (priv->has_left && !priv->has_right && !priv->has_middle && 
!priv->has_double) {
--          priv->is_clickpad = TRUE;
--          xf86Msg(X_PROBED, "%s: is Clickpad device\n", local->name);
--      }
-     }
+-    /* clickpad device reports only the single left button mask */
+-    if (priv->has_left && !priv->has_right && !priv->has_middle && 
!priv->has_double) {
+-      priv->is_clickpad = TRUE;
+-      xf86IDrvMsg(pInfo, X_PROBED, "is Clickpad device\n");
+-    }
  }
  
-@@ -462,6 +475,7 @@
-     if (event_query_is_touchpad(local->fd, (need_grab) ? *need_grab : TRUE))
-       event_query_axis_ranges(local);
-     event_query_info(local);
-+    event_query_clickpad(local);
-     event_query_led(local);
+ static Bool
+@@ -536,11 +549,13 @@
+ 
+     if (event_query_is_touchpad(pInfo->fd, (proto_data) ? 
proto_data->need_grab : TRUE))
+       event_query_axis_ranges(pInfo);
+-    event_query_led(pInfo);
+     event_query_model(pInfo->fd, &priv->model, &priv->id_vendor, 
&priv->id_product);
+ 
+     xf86IDrvMsg(pInfo, X_PROBED, "Vendor %#hx Product %#hx\n",
+                 priv->id_vendor, priv->id_product);
++
++    event_query_clickpad(pInfo);
++    event_query_led(pInfo);
  }
  
+ static Bool

++++++ xf86-input-synaptics-led-double-tap.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -7,15 +7,15 @@
 ---
  include/synaptics-properties.h |    3 +
  man/synaptics.man              |   17 +++++++
- src/properties.c               |   27 +++++++++++
- src/synaptics.c                |   97 
++++++++++++++++++++++++++++++++++++++++-
+ src/properties.c               |   26 +++++++++++
+ src/synaptics.c                |   95 
++++++++++++++++++++++++++++++++++++++++-
  src/synapticsstr.h             |    6 ++
  tools/synclient.c              |    1 
- 6 files changed, 149 insertions(+), 2 deletions(-)
+ 6 files changed, 146 insertions(+), 2 deletions(-)
 
 --- a/include/synaptics-properties.h
 +++ b/include/synaptics-properties.h
-@@ -161,4 +161,7 @@
+@@ -164,4 +164,7 @@
  /* 8 bit (BOOL), led_status (on/off) */
  #define SYNAPTICS_PROP_LED_STATUS "Synaptics LED Status"
  
@@ -25,7 +25,7 @@
  #endif /* _SYNAPTICS_PROPERTIES_H_ */
 --- a/man/synaptics.man
 +++ b/man/synaptics.man
-@@ -553,6 +553,19 @@
+@@ -564,6 +564,19 @@
  A "touch" event happens when the Z value goes above FingerHigh, and an
  "untouch" event happens when the Z value goes below FingerLow.
  .
@@ -45,7 +45,7 @@
  .LP
  The MaxDoubleTapTime parameter has the same function as the MaxTapTime
  parameter, but for the second, third, etc tap in a tap sequence.
-@@ -918,6 +931,10 @@
+@@ -945,6 +958,10 @@
  .BI "Synaptics LED Status"
  8 bit (BOOL), the light status of the embedded LED.
  
@@ -54,29 +54,28 @@
 +8 bit (BOOL), enable/disable the double-tap on LED.
 +
  .SH "NOTES"
- There is an example hal policy file in
- .I ${sourcecode}/fdi/11-x11-synaptics.fdi
+ Configuration through
+ .I InputClass
 --- a/src/properties.c
 +++ b/src/properties.c
-@@ -84,6 +84,7 @@
- Atom prop_area                  = 0;
+@@ -96,6 +96,7 @@
+ Atom prop_device_node           = 0;
  Atom prop_led                   = 0;
  Atom prop_led_status            = 0;
 +Atom prop_led_double_tap        = 0;
  
  static Atom
  InitAtom(DeviceIntPtr dev, char *name, int format, int nvalues, int *values)
-@@ -283,6 +284,9 @@
+@@ -301,6 +302,8 @@
+     prop_led = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED, 8, 1, &para->has_led);
+     prop_led_status = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, 
&para->led_status);
  
-     prop_led = InitAtom(local->dev, SYNAPTICS_PROP_LED, 8, 1, &para->has_led);
-     prop_led_status = InitAtom(local->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, 
&para->led_status);
++    prop_led_double_tap = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_DOUBLE_TAP, 
8, 1, &para->led_double_tap);
 +
-+    prop_led_double_tap = InitAtom(local->dev, SYNAPTICS_PROP_LED_DOUBLE_TAP, 
8, 1, &para->led_double_tap);
-+
- }
- 
- int
-@@ -508,6 +512,19 @@
+     /* only init product_id property if we actually know them */
+     if (priv->id_vendor || priv->id_product)
+     {
+@@ -543,6 +546,19 @@
              return BadValue;
  
          para->touchpad_off = off;
@@ -84,19 +83,19 @@
 +          para->led_status != para->touchpad_off) {
 +            para->led_status = para->touchpad_off;
 +            if (priv->proto_ops && priv->proto_ops->UpdateLED)
-+                priv->proto_ops->UpdateLED(local);
++                priv->proto_ops->UpdateLED(pInfo);
 +        }
 +    } else if (property == prop_led_double_tap)
 +    {
 +        if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER)
 +            return BadMatch;
-+ 
++
 +        para->led_double_tap = *(CARD8*)prop->data;
 +
      } else if (property == prop_gestures)
      {
          BOOL *gestures;
-@@ -669,3 +686,13 @@
+@@ -715,3 +731,13 @@
      return Success;
  }
  
@@ -112,15 +111,15 @@
 +}
 --- a/src/synaptics.c
 +++ b/src/synaptics.c
-@@ -132,6 +132,7 @@
- void InitDeviceProperties(LocalDevicePtr local);
+@@ -135,6 +135,7 @@
+ void InitDeviceProperties(InputInfoPtr pInfo);
  int SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
                  BOOL checkonly);
 +void SynapticsToggleOffProperty(DeviceIntPtr dev, Bool off);
  
- InputDriverRec SYNAPTICS = {
-     1,
-@@ -603,6 +604,7 @@
+ const static struct {
+     const char *name;
+@@ -588,6 +589,7 @@
      pars->tap_and_drag_gesture = xf86SetBoolOption(opts, "TapAndDragGesture", 
TRUE);
      pars->resolution_horiz = xf86SetIntOption(opts, "HorizResolution", 
horizResolution);
      pars->resolution_vert = xf86SetIntOption(opts, "VertResolution", 
vertResolution);
@@ -128,18 +127,18 @@
  
      /* Warn about (and fix) incorrectly configured TopEdge/BottomEdge 
parameters */
      if (pars->top_edge > pars->bottom_edge) {
-@@ -873,6 +875,10 @@
-     xf86AddEnabledDevice(local);
+@@ -875,6 +877,10 @@
+     xf86AddEnabledDevice(pInfo);
      dev->public.on = TRUE;
  
 +    /* update LED */
 +    if (priv->proto_ops && priv->proto_ops->UpdateLED)
-+        priv->proto_ops->UpdateLED(local);
++        priv->proto_ops->UpdateLED(pInfo);
 +
      return Success;
  }
  
-@@ -1080,6 +1086,72 @@
+@@ -1090,6 +1096,74 @@
      return Success;
  }
  
@@ -147,9 +146,9 @@
 +#define LED_TOGGLE_Y_AREA     0.08
 +
 +static int
-+in_led_toggle_area(LocalDevicePtr local, struct SynapticsHwState *hw)
++in_led_toggle_area(InputInfoPtr pInfo, struct SynapticsHwState *hw)
 +{
-+    SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
++    SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
 +    int click_led_x, click_led_y;
 +
 +    click_led_x = (priv->maxx - priv->minx) * LED_TOGGLE_X_AREA + priv->minx;
@@ -162,14 +161,14 @@
 + * toggles the touchpad enable/disable
 + */
 +static int
-+handle_toggle_led(LocalDevicePtr local, struct SynapticsHwState *hw, int 
finger)
++handle_toggle_led(InputInfoPtr pInfo, struct SynapticsHwState *hw, int finger)
 +{
-+    SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
++    SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
 +    SynapticsParameters *para = &priv->synpara;
 +    int diff;
 +
 +    if (finger) {
-+        if (!in_led_toggle_area(local, hw)) {
++        if (!in_led_toggle_area(pInfo, hw)) {
 +            /* outside the toggle area */
 +            priv->led_touch_state = FALSE;
 +            priv->led_tapped = FALSE;
@@ -198,8 +197,10 @@
 +        diff = TIME_DIFF(priv->led_tap_millis + para->tap_time_2, hw->millis);
 +        if (diff >= 0) {
 +            para->touchpad_off = !para->touchpad_off;
-+            if (priv->proto_ops && priv->proto_ops->UpdateLED)
-+                priv->proto_ops->UpdateLED(local);
++            if (priv->proto_ops && priv->proto_ops->UpdateLED) {
++                para->led_status = para->touchpad_off;
++                priv->proto_ops->UpdateLED(pInfo);
++            }
 +          priv->prop_change_pending = 1;
 +            priv->led_tapped = FALSE;
 +        }
@@ -211,65 +212,54 @@
 +
  /* clickpad event handling */
  static void
- handle_clickpad(LocalDevicePtr local, struct SynapticsHwState *hw)
-@@ -1240,6 +1312,7 @@
+ handle_clickpad(InputInfoPtr pInfo, struct SynapticsHwState *hw)
+@@ -1250,6 +1324,7 @@
  {
-     LocalDevicePtr local = (LocalDevicePtr) (arg);
-     SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
+     InputInfoPtr pInfo = arg;
+     SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private);
 +    SynapticsParameters *para = &priv->synpara;
      struct SynapticsHwState hw;
      int delay;
      int sigstate;
-@@ -1251,6 +1324,13 @@
+@@ -1260,6 +1335,13 @@
+     hw = priv->hwState;
      hw.millis = now;
-     delay = HandleState(local, &hw);
- 
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
-+    if (priv->prop_change_pending & 1) {
-+      SynapticsToggleOffProperty(local->dev, para->touchpad_off);
+     delay = HandleState(pInfo, &hw);
++    if (priv->prop_change_pending)
++      delay = MIN(10, delay);
++
++    if (priv->prop_change_pending) {
++      SynapticsToggleOffProperty(pInfo->dev, para->touchpad_off);
 +      priv->prop_change_pending = 0;
 +    }
-+#endif
-+
+ 
      /*
       * Workaround for wraparound bug in the TimerSet function. This bug is 
already
-      * fixed in CVS, but this driver needs to work with XFree86 versions 
4.2.x and
-@@ -1301,6 +1381,10 @@
-       hw.millis = GetTimeInMillis();
-       priv->hwState = hw;
-       delay = HandleState(local, &hw);
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
-+      if (priv->prop_change_pending)
-+          delay = MIN(10, delay);
-+#endif
-       newDelay = TRUE;
-     }
- 
-@@ -2285,7 +2369,7 @@
+@@ -2393,7 +2475,7 @@
      SynapticsParameters *para = &priv->synpara;
  
      /* Clickpad handling for button area */
 -    if (priv->is_clickpad)
 +    if (para->touchpad_off != 1 && priv->is_clickpad)
-       handle_clickpad(local, hw);
+       handle_clickpad(pInfo, hw);
  
      /* Treat the first two multi buttons as up/down for now. */
-@@ -2403,7 +2487,7 @@
-     update_shm(local, hw);
+@@ -2511,7 +2593,7 @@
+     update_shm(pInfo, hw);
  
      /* If touchpad is switched off, we skip the whole thing and return delay 
*/
 -    if (para->touchpad_off == 1)
 +    if (para->touchpad_off == 1 && !(para->has_led && para->led_double_tap))
        return delay;
  
-     inside_active_area = is_inside_active_area(priv, hw->x, hw->y);
-@@ -2439,6 +2523,15 @@
+     /* apply hysteresis before doing anything serious. This cancels
+@@ -2555,6 +2637,15 @@
        finger = SynapticsDetectFinger(priv, hw);
      }
  
 +    if (para->has_led && para->led_double_tap) {
 +      if (inside_active_area)
-+              finger = handle_toggle_led(local, hw, finger);
++              finger = handle_toggle_led(pInfo, hw, finger);
 +        if (para->touchpad_off == 1) {
 +            priv->finger_state = finger;
 +            return delay;
@@ -278,18 +268,18 @@
 +
      /* tap and drag detection. Needs to be performed even if the finger is in
       * the dead area to reset the state. */
-     timeleft = HandleTapProcessing(priv, hw, edge, finger, 
inside_active_area);
+     timeleft = HandleTapProcessing(priv, hw, finger, inside_active_area);
 --- a/src/synapticsstr.h
 +++ b/src/synapticsstr.h
-@@ -162,6 +162,7 @@
-     int area_left_edge, area_right_edge, area_top_edge, area_bottom_edge; /* 
area coordinates absolute */
+@@ -167,6 +167,7 @@
+     int hyst_x, hyst_y;                     /* x and y width of hysteresis 
box */
      Bool has_led;                           /* has an embedded LED */
      Bool led_status;                        /* Current status of LED (1=on) */
 +    Bool led_double_tap;                  /* double-tap period in ms for 
touchpad LED control */
  } SynapticsParameters;
  
  
-@@ -239,6 +240,11 @@
+@@ -248,6 +249,11 @@
      Bool has_scrollbuttons;           /* device has physical scrollbuttons */
      Bool is_clickpad;                 /* is Clickpad device (one-button) */
      struct SynapticsHwState prev_hw;  /* previous h/w state (for clickpad) */
@@ -299,11 +289,11 @@
 +    int led_touch_millis;
 +    int led_tap_millis;
  
-     enum TouchpadModel model;          /* The detected model */
- } SynapticsPrivate;
+     enum TouchpadModel model;         /* The detected model */
+     unsigned short id_vendor;         /* vendor id */
 --- a/tools/synclient.c
 +++ b/tools/synclient.c
-@@ -144,6 +144,7 @@
+@@ -143,6 +143,7 @@
      {"AreaTopEdge",           PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     2},
      {"AreaBottomEdge",        PT_INT,    0, 10000, SYNAPTICS_PROP_AREA,       
32,     3},
      {"LEDStatus",             PT_BOOL,   0, 1,     SYNAPTICS_PROP_LED_STATUS, 
8,      0},

++++++ xf86-input-synaptics-move-threshold.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -1,37 +1,38 @@
 ---
- src/synaptics.c    |   10 ++++++++++
+ src/synaptics.c    |   11 +++++++++++
  src/synapticsstr.h |    1 +
- 2 files changed, 11 insertions(+)
+ 2 files changed, 12 insertions(+)
 
 --- a/src/synaptics.c
 +++ b/src/synaptics.c
-@@ -458,6 +458,8 @@
+@@ -441,6 +441,8 @@
      edgeMotionMaxSpeed = diag * .080;
      accelFactor = 200.0 / diag; /* trial-and-error */
  
 +    priv->move_ptr_threshold = width / 5;
 +
-     range = priv->maxp - priv->minp;
- 
-     /* scaling based on defaults and a pressure of 256 */
-@@ -1923,6 +1925,14 @@
-           break;
+     /* hysteresis, assume >= 0 is a detected value (e.g. evdev fuzz) */
+     horizHyst = pars->hyst_x >= 0 ? pars->hyst_x : diag * 0.005;
+     vertHyst = pars->hyst_y >= 0 ? pars->hyst_y : diag * 0.005;
+@@ -2042,6 +2044,15 @@
        }
      }
-+
+ 
 +    if (moving_state && priv->count_packet_finger > 0 &&
 +      priv->move_ptr_threshold > 0 ) {
 +      int d = move_distance(HIST(0).x - hw->x, HIST(0).y - hw->y);
-+      if (d > priv->move_ptr_threshold)
++      if (d > priv->move_ptr_threshold) {
 +          priv->count_packet_finger = 0; /* to avoid unexpected jumps */
++          goto out;
++      }
 +    }
 +
-     if (inside_area && moving_state && !priv->palm &&
-       !priv->vert_scroll_edge_on && !priv->horiz_scroll_edge_on &&
-       !priv->vert_scroll_twofinger_on && !priv->horiz_scroll_twofinger_on &&
+     if (!inside_area || !moving_state || priv->palm ||
+       priv->vert_scroll_edge_on || priv->horiz_scroll_edge_on ||
+       priv->vert_scroll_twofinger_on || priv->horiz_scroll_twofinger_on ||
 --- a/src/synapticsstr.h
 +++ b/src/synapticsstr.h
-@@ -245,6 +245,7 @@
+@@ -254,6 +254,7 @@
      unsigned int clickpad_threshold;
      int clickpad_dx, clickpad_dy;
      struct SynapticsHwState prev_hw;  /* previous h/w state (for clickpad) */

++++++ xf86-input-synaptics-settings.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -1,6 +1,10 @@
---- src/synaptics.c.orig       2009-08-03 01:05:26.000000000 +0000
-+++ src/synaptics.c    2009-11-14 01:55:58.000000000 +0000
-@@ -424,8 +430,12 @@ static void set_default_parameters(Local
+---
+ src/synaptics.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/src/synaptics.c
++++ b/src/synaptics.c
+@@ -474,8 +474,12 @@
      clickFinger2 = (priv->has_right || priv->has_middle) ? 1 : 3;
      clickFinger3 = (priv->has_right || priv->has_middle) ? 1 : 2;
  
@@ -13,7 +17,7 @@
      horizEdgeScroll = FALSE;
  
      /* Enable twofinger scroll if we can detect doubletap */
-@@ -449,8 +459,8 @@ static void set_default_parameters(Local
+@@ -513,8 +517,8 @@
      pars->emulate_mid_button_time = xf86SetIntOption(opts, 
"EmulateMidButtonTime", 75);
      pars->emulate_twofinger_z = xf86SetIntOption(opts, 
"EmulateTwoFingerMinZ", emulateTwoFingerMinZ);
      pars->emulate_twofinger_w = xf86SetIntOption(opts, 
"EmulateTwoFingerMinW", emulateTwoFingerMinW);

++++++ xf86-input-synaptics-wait.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -1,38 +1,48 @@
---- src/eventcomm.c.orig       2009-11-14 01:50:20.000000000 +0000
-+++ src/eventcomm.c    2009-11-14 01:51:30.000000000 +0000
-@@ -404,7 +404,10 @@ EventAutoDevProbe(LocalDevicePtr local)
+---
+ src/eventcomm.c |   14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/src/eventcomm.c
++++ b/src/eventcomm.c
+@@ -516,6 +516,8 @@
      int i;
      Bool touchpad_found = FALSE;
      struct dirent **namelist;
 +    int wait = 0;
 +    const int max_wait = 2000;
  
+     if (device) {
+       int fd = -1;
+@@ -533,6 +535,7 @@
+       }
+     }
+ 
 +    while (wait <= max_wait && !touchpad_found) {
      i = scandir(DEV_INPUT_EVENT, &namelist, EventDevOnly, alphasort);
      if (i < 0) {
-               xf86Msg(X_ERROR, "Couldn't open %s\n", DEV_INPUT_EVENT);
-@@ -429,8 +432,8 @@ EventAutoDevProbe(LocalDevicePtr local)
+               xf86IDrvMsg(pInfo, X_ERROR, "Couldn't open %s\n", 
DEV_INPUT_EVENT);
+@@ -556,8 +559,8 @@
  
                        if (event_query_is_touchpad(fd, TRUE)) {
                                touchpad_found = TRUE;
--                          xf86Msg(X_PROBED, "%s auto-dev sets device to %s\n",
--                                  local->name, fname);
-+                          xf86Msg(X_PROBED, "%s auto-dev sets device to %s 
(waited %d msec)\n",
-+                                  local->name, fname, wait);
-                           local->options =
-                               xf86ReplaceStrOption(local->options, "Device", 
fname);
+-                          xf86IDrvMsg(pInfo, X_PROBED, "auto-dev sets device 
to %s\n",
+-                                      fname);
++                          xf86IDrvMsg(pInfo, X_PROBED, "auto-dev sets device 
to %s (waited %d msec)\n",
++                                      fname, wait);
+                           pInfo->options =
+                               xf86ReplaceStrOption(pInfo->options, "Device", 
fname);
                        }
-@@ -438,6 +441,13 @@ EventAutoDevProbe(LocalDevicePtr local)
+@@ -565,6 +568,13 @@
                }
                free(namelist[i]);
      }
 +    if (!touchpad_found) {
-+      ErrorF("%s waiting 100 msec to become devices ready\n", local->name); 
++      xf86IDrvMsg(pInfo, X_ERROR, "waiting 100 msec to become devices 
ready\n");
 +      usleep(100*1000);
 +      wait += 100;
-+      ErrorF("%s waiting time total: %d\n", local->name, wait);
++      xf86IDrvMsg(pInfo, X_ERROR, "aiting time total: %d\n", wait);
 +    }
 +    } /* while (wait <= max_wait && !touchpad_found) */
-       free(namelist);
  
-       if (!touchpad_found) {
+     free(namelist);
+ 

++++++ xf86-input-synaptics-xorg.conf.d_snippet.diff ++++++
--- /var/tmp/diff_new_pack.o24UIK/_old  2011-10-08 11:44:48.000000000 +0200
+++ /var/tmp/diff_new_pack.o24UIK/_new  2011-10-08 11:44:48.000000000 +0200
@@ -1,9 +1,16 @@
---- conf/50-synaptics.conf.orig        2010-08-29 16:31:57.000000000 +0200
-+++ conf/50-synaptics.conf     2010-08-29 16:32:08.000000000 +0200
-@@ -2,4 +2,6 @@
-         Identifier "touchpad catchall"
-         Driver "synaptics"
-         MatchIsTouchpad "on"
+---
+ conf/50-synaptics.conf |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/conf/50-synaptics.conf
++++ b/conf/50-synaptics.conf
+@@ -14,7 +14,8 @@
+ # This option is recommend on all Linux systems using evdev, but cannot be
+ # enabled by default. See the following link for details:
+ # http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
+-#       MatchDevicePath "/dev/input/event*"
 +        MatchDevicePath "/dev/input/event*"
 +        Option        "HorizScrollDelta"      "0"
  EndSection
+ 
+ Section "InputClass"

continue with "q"...



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to