On Tue, Apr 22, 2014 at 06:58:11PM +0200, Hans de Goede wrote: > Add a TopClickPad boolean config option which defaults to true for devices > with the INPUT_PROP_TOPBUTTONPAD and false for all other devices. > > Only parse the SecondarySoftButtonAreas when this option is true, effectively > disabling the top buttons when it is false. > > This means that it is now safe to always set a SecondarySoftButtonAreas > default in 50-synaptics.conf, and that he section which was intended for > use with future pnp-id matching can be dropped, as that is now all handled > in the kernel. > > While at also remove the comment about disabling the bottom edge area, as that > is now done automatically.
the only issue I have with this is that I'm not too fond of the term "TopClickPad". I'm at loss atm for a better term though, maybe something with TrackstickButtons? also, the man page hunk must have gotten lost ;) Cheers, Peter > > Signed-off-by: Hans de Goede <[email protected]> > --- > conf/50-synaptics.conf | 25 ++++--------------------- > src/eventcomm.c | 8 ++++++++ > src/synaptics.c | 4 +++- > src/synapticsstr.h | 1 + > 4 files changed, 16 insertions(+), 22 deletions(-) > > diff --git a/conf/50-synaptics.conf b/conf/50-synaptics.conf > index 161c1dd..a3145b8 100644 > --- a/conf/50-synaptics.conf > +++ b/conf/50-synaptics.conf > @@ -25,16 +25,15 @@ Section "InputClass" > Option "Ignore" "on" > EndSection > > -# This option enables the bottom right corner to be a right button on > -# non-synaptics clickpads. > +# This option enables the bottom right corner to be a right button on > clickpads > +# and the right and middle top areas to be right / middle buttons on > clickpads > +# with a top button area. > # This option is only interpreted by clickpads. > Section "InputClass" > Identifier "Default clickpad buttons" > MatchDriver "synaptics" > Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" > -# To disable the bottom edge area so the buttons only work as buttons, > -# not for movement, set the AreaBottomEdge > -# Option "AreaBottomEdge" "82%" > + Option "SecondarySoftButtonAreas" "58% 0 0 8% 42% 58% 0 8%" > EndSection > > # This option disables software buttons on Apple touchpads. > @@ -45,19 +44,3 @@ Section "InputClass" > MatchDriver "synaptics" > Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" > EndSection > - > -# The Lenovo *40 series has no physical button for the TrackPoint and needs > -# the top softbutton area enabled by default. > -# Affected devices and their PNPIDs > -# LEN0033: Helix > -# LEN0034: T431, T540, X1 Carbon > -# LEN0035: X240 > -# LEN0036: T440 > -# LEN0042: Yoga > -# LEN2004: L440, L540 > -Section "InputClass" > - Identifier "Lenovo TrackPoint top software buttons" > - MatchDriver "synaptics" > - MatchPnPID "LEN0033*|LEN0034*|LEN0035*|LEN0036*|LEN0042*|LEN2004*" > - Option "SecondarySoftButtonAreas" "58% 0 0 8% 42% 58% 0 8%" > -EndSection > diff --git a/src/eventcomm.c b/src/eventcomm.c > index 5871374..764e04b 100644 > --- a/src/eventcomm.c > +++ b/src/eventcomm.c > @@ -50,6 +50,9 @@ > #ifndef INPUT_PROP_SEMI_MT > #define INPUT_PROP_SEMI_MT 0x03 > #endif > +#ifndef INPUT_PROP_TOPBUTTONPAD > +#define INPUT_PROP_TOPBUTTONPAD 0x04 > +#endif > #ifndef ABS_MT_TOOL_Y > #define ABS_MT_TOOL_Y 0x3d > #endif > @@ -802,6 +805,11 @@ event_query_touch(InputInfoPtr pInfo) > xf86IDrvMsg(pInfo, X_INFO, "found clickpad property\n"); > para->clickpad = TRUE; > } > + > + if (libevdev_has_property(dev, INPUT_PROP_TOPBUTTONPAD)) { > + xf86IDrvMsg(pInfo, X_INFO, "found topclickpad property\n"); > + para->topclickpad = TRUE; > + } > #endif > > > diff --git a/src/synaptics.c b/src/synaptics.c > index 118d1c6..f4b77be 100644 > --- a/src/synaptics.c > +++ b/src/synaptics.c > @@ -674,6 +674,7 @@ set_default_parameters(InputInfoPtr pInfo) > pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180); > pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); > pars->clickpad = xf86SetBoolOption(opts, "ClickPad", pars->clickpad); > /* Probed */ > + pars->topclickpad = xf86SetBoolOption(opts, "TopClickPad", > pars->topclickpad); > pars->clickpad_ignore_motion_time = 100; /* ms */ > /* middle mouse button emulation on a clickpad? nah, you're joking */ > middle_button_timeout = pars->clickpad ? 0 : 75; > @@ -777,7 +778,8 @@ set_default_parameters(InputInfoPtr pInfo) > } > > set_primary_softbutton_areas_option(pInfo); > - set_secondary_softbutton_areas_option(pInfo); > + if (pars->topclickpad) > + set_secondary_softbutton_areas_option(pInfo); > } > > static double > diff --git a/src/synapticsstr.h b/src/synapticsstr.h > index b8a3492..98a482d 100644 > --- a/src/synapticsstr.h > +++ b/src/synapticsstr.h > @@ -176,6 +176,7 @@ typedef struct _SynapticsParameters { > int tap_time_2; /* max. tapping time for double taps */ > int click_time; /* The duration of a single click */ > Bool clickpad; /* Device is a has integrated buttons */ > + Bool topclickpad; /* Device has a top soft-button area */ > int clickpad_ignore_motion_time; /* Ignore motion for X ms after a click > */ > int emulate_mid_button_time; /* Max time between left and right > button presses to > emulate a middle button press. */ > -- > 1.9.0 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
