[PATCH synaptics] Revert "Support the new Lenovo X1 Carbon 3rd trackpoint buttons"

Hans de Goede hdegoede at redhat.com
Tue Mar 17 02:17:45 PDT 2015


Hi,

On 17-03-15 07:14, Peter Hutterer wrote:
> This reverts commit 064445364b4775b25ba49c2250b22b169f291147.
>
> The Lenovo *50 series, including the X1 Carbon 3rd always require multiple
> kernel patches to enable the touchpad buttons. This patch in synaptics only
> addresses the re-routing of the top buttons.
>
> The final iteration of the kernel patches also route the trackpoint buttons
> through the trackpoint device, rendering this patch unnecessary.
> Since there are no released kernels that support all touchpad buttons
> correctly but still have the routing through the touchpad, we can revert this
> change in synaptics and instead rely on the kernel.
>
> See kernel commit cdd9dc195916ef5644cfac079094c3c1d1616e4c
> Author: Benjamin Tissoires <benjamin.tissoires at redhat.com>
> Date:   Sun Mar 8 22:35:41 2015 -0700
>
>      Input: synaptics - re-route tracksticks buttons on the Lenovo 2015 series
>
> Currently in Dmitry's for-linus branch.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Looks good to me:

Reviewed-by: Hans de Goede <hdegoede at redhat.com>

Regards,

Hans
> ---
>   conf/50-synaptics.conf  |  7 -------
>   conf/71-synaptics.rules | 20 --------------------
>   conf/Makefile.am        |  7 -------
>   configure.ac            | 10 ----------
>   man/synaptics.man       | 14 --------------
>   src/synaptics.c         | 42 ------------------------------------------
>   src/synapticsstr.h      |  2 --
>   7 files changed, 102 deletions(-)
>   delete mode 100644 conf/71-synaptics.rules
>
> diff --git a/conf/50-synaptics.conf b/conf/50-synaptics.conf
> index 5fb131e..aa50456 100644
> --- a/conf/50-synaptics.conf
> +++ b/conf/50-synaptics.conf
> @@ -44,10 +44,3 @@ Section "InputClass"
>           MatchDriver "synaptics"
>           Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
>   EndSection
> -
> -Section "InputClass"
> -        Identifier "Lenovo *50 and Carbon 3rd trackpoint buttons"
> -        MatchDriver "synaptics"
> -        MatchTag "has_trackpoint_buttons"
> -        Option "HasTrackpointButtons" "on"
> -EndSection
> diff --git a/conf/71-synaptics.rules b/conf/71-synaptics.rules
> deleted file mode 100644
> index 7a89e14..0000000
> --- a/conf/71-synaptics.rules
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -ACTION=="remove", GOTO="touchpad_end"
> -KERNEL!="event*", GOTO="touchpad_end"
> -ENV{ID_INPUT_TOUCHPAD}=="", GOTO="touchpad_end"
> -
> -# Lenovo X1 Carbon 3rd
> -KERNELS=="serio1", \
> -    ATTRS{firmware_id}=="*LEN0048*", \
> -    ENV{ID_INPUT.tags}="has_trackpoint_buttons"
> -
> -# Lenovo W451
> -KERNELS=="serio1", \
> -    ATTRS{firmware_id}=="*LEN004a*", \
> -    ENV{ID_INPUT.tags}="has_trackpoint_buttons"
> -
> -# Lenovo T450s
> -KERNELS=="serio1", \
> -    ATTRS{firmware_id}=="*LEN200f*", \
> -    ENV{ID_INPUT.tags}="has_trackpoint_buttons"
> -
> -LABEL="touchpad_end"
> diff --git a/conf/Makefile.am b/conf/Makefile.am
> index 4dde902..38d2a01 100644
> --- a/conf/Makefile.am
> +++ b/conf/Makefile.am
> @@ -25,10 +25,3 @@ else
>   fdidir = $(datadir)/hal/fdi/policy/20thirdparty
>   dist_fdi_DATA = 11-x11-synaptics.fdi
>   endif
> -
> -if HAVE_UDEV_RULES_DIR
> -udevdir=$(UDEV_RULES_DIR)
> -udev_DATA = 71-synaptics.rules
> -endif
> -
> -EXTRA_DIST = 71-synaptics.rules
> diff --git a/configure.ac b/configure.ac
> index 2844da2..0a2bfb6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -135,16 +135,6 @@ AM_CONDITIONAL([BUILD_EVENTCOMM], [test "x${BUILD_EVENTCOMM}" = "xyes"])
>   AM_CONDITIONAL([BUILD_PSMCOMM], [test "x${BUILD_PSMCOMM}" = "xyes"])
>   AM_CONDITIONAL([BUILD_PS2COMM], [test "x${BUILD_PS2COMM}" = "xyes"])
>
> -AC_ARG_WITH(udev-rules-dir,
> -            AS_HELP_STRING([--with-udev-rules-dir=DIR],
> -                           [Directory where udev expects its rules files
> -                           [[default=$libdir/udev/rules.d]]]),
> -            [udevdir="$withval"],
> -            [udevdir="$libdir/udev/rules.d"])
> -UDEV_RULES_DIR=${udevdir}
> -AC_SUBST(UDEV_RULES_DIR)
> -AM_CONDITIONAL(HAVE_UDEV_RULES_DIR, [test "x$UDEV_RULES_DIR" != "xno"])
> -
>   # -----------------------------------------------------------------------------
>   #			Dependencies for synclient and syndaemon
>   # -----------------------------------------------------------------------------
> diff --git a/man/synaptics.man b/man/synaptics.man
> index 65fb337..7083b3a 100644
> --- a/man/synaptics.man
> +++ b/man/synaptics.man
> @@ -518,20 +518,6 @@ initialized if
>   .B Option \*qHasSecondarySoftButtons\*q
>   is enabled and this option is set in the __xconfigfile__(__filemansuffix__).
>   .
> -.TP
> -.BI "Option \*qHasTrackpointButtons\*q \*q" boolean \*q
> -This option is only available on selected devices. You should never need to
> -set this option manually, your distribution should ship
> -__xconfigfile__(__filemansuffix__) snippets to enable this option where
> -required. Devices that require this option include the Lenovo X1 Carbon 3rd
> -and the Lenovo *50 series (T450, T550, etc.).
> -If enabled, the device is considered to have the trackpoint left, middle,
> -right buttons wired to the touchpad. If set, this option disables scroll
> -buttons, i.e.
> -.B Option \*qUpDownScrolling\*q, \*qLeftRightScrolling\*q
> -and the respective repeat options for scroll buttons.
> -This options is considered a hardware property and is not exposed as
> -configurable X Input device property.
>
>   .SH CONFIGURATION DETAILS
>   .SS Area handling
> diff --git a/src/synaptics.c b/src/synaptics.c
> index 07b012f..955b042 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -703,12 +703,6 @@ set_default_parameters(InputInfoPtr pInfo)
>       pars->touchpad_off = xf86SetIntOption(opts, "TouchpadOff", TOUCHPAD_ON);
>
>       if (priv->has_scrollbuttons) {
> -        priv->has_trackpoint_buttons = xf86SetBoolOption(opts, "HasTrackpointButtons", FALSE);
> -        if (priv->has_trackpoint_buttons)
> -            priv->has_scrollbuttons = FALSE;
> -    }
> -
> -    if (priv->has_scrollbuttons) {
>           pars->updown_button_scrolling =
>               xf86SetBoolOption(opts, "UpDownScrolling", TRUE);
>           pars->leftright_button_scrolling =
> @@ -1087,7 +1081,6 @@ SynapticsReset(SynapticsPrivate * priv)
>       priv->mid_emu_state = MBE_OFF;
>       priv->nextRepeat = 0;
>       priv->lastButtons = 0;
> -    priv->lastTrackpointButtons = 0;
>       priv->prev_z = 0;
>       priv->prevFingers = 0;
>       priv->num_active_touches = 0;
> @@ -2786,34 +2779,6 @@ handle_clickfinger(SynapticsPrivate * priv, struct SynapticsHwState *hw)
>       }
>   }
>
> -static void
> -handle_trackpoint_buttons(const InputInfoPtr pInfo,
> -                          struct SynapticsHwState *hw)
> -{
> -    SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private);
> -    unsigned int buttons, change;
> -    int id;
> -
> -   buttons = (hw->multi[0] ? 0x1 : 0) |
> -             (hw->multi[1] ? 0x4 : 0) |
> -             (hw->multi[2] ? 0x2 : 0);
> -
> -    change = buttons ^ priv->lastTrackpointButtons;
> -    while (change) {
> -        id = ffs(change);       /* number of first set bit 1..32 is returned */
> -        change &= ~(1 << (id - 1));
> -        xf86PostButtonEvent(pInfo->dev, FALSE, id,
> -                            (buttons & (1 << (id - 1))),
> -                            0, 0);
> -    }
> -
> -    hw->multi[0] = FALSE;
> -    hw->multi[1] = FALSE;
> -    hw->multi[2] = FALSE;
> -
> -    priv->lastTrackpointButtons = buttons;
> -}
> -
>   /* Adjust the hardware state according to the extra buttons (if the touchpad
>    * has any and not many touchpads do these days). These buttons are up/down
>    * tilt buttons and/or left/right buttons that then map into a specific
> @@ -3169,13 +3134,6 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
>       Bool using_cumulative_coords = FALSE;
>       Bool ignore_motion;
>
> -    /* if we have phys. trackpoint buttons wired up to the touchpad, process
> -     * them first. They belong to a different device so we don't care about
> -     * sending out motion events before the trackpoint buttons. This makes
> -     * the code a lot easier to slot in */
> -    if (priv->has_trackpoint_buttons)
> -        handle_trackpoint_buttons(pInfo, hw);
> -
>       /* We need both and x/y, the driver can't handle just one of the two
>        * yet. But since it's possible to hit a phys button on non-clickpads
>        * without ever getting motion data first, we must continue with 0/0 for
> diff --git a/src/synapticsstr.h b/src/synapticsstr.h
> index 91c41fc..f8ab14e 100644
> --- a/src/synapticsstr.h
> +++ b/src/synapticsstr.h
> @@ -289,7 +289,6 @@ struct _SynapticsPrivateRec {
>       int repeatButtons;          /* buttons for repeat */
>       int nextRepeat;             /* Time when to trigger next auto repeat event */
>       int lastButtons;            /* last state of the buttons */
> -    int lastTrackpointButtons;  /* last state of the trackpoint buttons */
>       int prev_z;                 /* previous z value, for palm detection */
>       int prevFingers;            /* previous numFingers, for transition detection */
>       int avg_width;              /* weighted average of previous fingerWidth values */
> @@ -309,7 +308,6 @@ struct _SynapticsPrivateRec {
>       Bool has_pressure;          /* device reports pressure */
>       Bool has_width;             /* device reports finger width */
>       Bool has_scrollbuttons;     /* device has physical scrollbuttons */
> -    Bool has_trackpoint_buttons;/* device has trackpoint buttons wired to touchpad */
>       Bool has_semi_mt;           /* device is only semi-multitouch capable */
>       Bool has_mt_palm_detect;    /* device reports per finger width and pressure */
>
>


More information about the xorg-devel mailing list