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 - tiwai@suse.de + +- 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, ¶->has_led); -+ prop_led_status = InitAtom(local->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, ¶->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, ¶->has_led); ++ prop_led_status = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, ¶->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, ¶->touch_button_area); -+ prop_touch_button_sticky = InitAtom(local->dev, SYNAPTICS_PROP_TOUCH_BUTTON_STICKY, 32, 1, ¶->touch_button_sticky); ++ prop_touch_button_area = InitAtom(pInfo->dev, SYNAPTICS_PROP_TOUCH_BUTTON_AREA, 32, 1, ¶->touch_button_area); ++ prop_touch_button_sticky = InitAtom(pInfo->dev, SYNAPTICS_PROP_TOUCH_BUTTON_STICKY, 32, 1, ¶->touch_button_sticky); + - prop_led = InitAtom(local->dev, SYNAPTICS_PROP_LED, 8, 1, ¶->has_led); - prop_led_status = InitAtom(local->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, ¶->led_status); + prop_led = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED, 8, 1, ¶->has_led); + prop_led_status = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, ¶->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, ¶->has_led); + prop_led_status = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, ¶->led_status); - prop_led = InitAtom(local->dev, SYNAPTICS_PROP_LED, 8, 1, ¶->has_led); - prop_led_status = InitAtom(local->dev, SYNAPTICS_PROP_LED_STATUS, 8, 1, ¶->led_status); ++ prop_led_double_tap = InitAtom(pInfo->dev, SYNAPTICS_PROP_LED_DOUBLE_TAP, 8, 1, ¶->led_double_tap); + -+ prop_led_double_tap = InitAtom(local->dev, SYNAPTICS_PROP_LED_DOUBLE_TAP, 8, 1, ¶->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: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org