[PATCH] xf86-input-synaptics: add an option to disable just the buttons
Peter Hutterer
peter.hutterer at who-t.net
Tue Aug 2 18:21:56 PDT 2011
On Tue, Aug 02, 2011 at 02:21:44AM +0400, Alexander Polakov wrote:
> The options is TouchpadOff=3
> This is an update version of a patch by Marius Gedminas
> <marius at gedmin.as>, which can be found here:
> http://mg.pov.lt/xserver-xorg-input-synaptics-0.14.6-touchpad-buttons-off.patch
the use-case mentioned in the original patch seems to be better handled by
remapping the buttons to 0.
Cheers,
Peter
> ---
> man/synaptics.man | 1 +
> src/properties.c | 2 +-
> src/synaptics.c | 8 ++++++++
> src/synapticsstr.h | 1 +
> tools/synclient.c | 2 +-
> 5 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/man/synaptics.man b/man/synaptics.man
> index cb5f4c6..9e3eaab 100644
> --- a/man/synaptics.man
> +++ b/man/synaptics.man
> @@ -298,6 +298,7 @@ l l.
> 0 Touchpad is enabled
> 1 Touchpad is switched off
> 2 Only tapping and scrolling is switched off
> +3 Only buttons switched off
> .TE
> Property: "Synaptics Off"
> .TP
> diff --git a/src/properties.c b/src/properties.c
> index 299a444..41585ec 100644
> --- a/src/properties.c
> +++ b/src/properties.c
> @@ -534,7 +534,7 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
>
> off = *(CARD8*)prop->data;
>
> - if (off > 2)
> + if (off > 3)
> return BadValue;
>
> para->touchpad_off = off;
> diff --git a/src/synaptics.c b/src/synaptics.c
> index cf91b9f..0053397 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -2452,6 +2452,14 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw)
> if (para->touchpad_off == 1)
> return delay;
>
> + /*
> + * If only touchpad buttons are switched off, reset them before we process
> + * guest mouse status.
> + */
> + if (para->touchpad_off == 3) {
> + hw->left = hw->right = FALSE;
> + }
> +
> /* apply hysteresis before doing anything serious. This cancels
> * out a lot of noise which might surface in strange phenomena
> * like flicker in scrolling or noise motion. */
> diff --git a/src/synapticsstr.h b/src/synapticsstr.h
> index b2fecbe..3f808d1 100644
> --- a/src/synapticsstr.h
> +++ b/src/synapticsstr.h
> @@ -141,6 +141,7 @@ typedef struct _SynapticsParameters
> * 0 : Not off
> * 1 : Off
> * 2 : Only tapping and scrolling off
> + * 3 : Only buttons off
> */
> Bool locked_drags; /* Enable locked drags */
> int locked_drag_time; /* timeout for locked drags */
> diff --git a/tools/synclient.c b/tools/synclient.c
> index 08bd22b..0a7e586 100644
> --- a/tools/synclient.c
> +++ b/tools/synclient.c
> @@ -110,7 +110,7 @@ static struct Parameter params[] = {
> {"UpDownScrollRepeat", PT_BOOL, 0, 1, SYNAPTICS_PROP_BUTTONSCROLLING_REPEAT, 8, 0},
> {"LeftRightScrollRepeat", PT_BOOL, 0, 1, SYNAPTICS_PROP_BUTTONSCROLLING_REPEAT, 8, 1},
> {"ScrollButtonRepeat", PT_INT, SBR_MIN , SBR_MAX, SYNAPTICS_PROP_BUTTONSCROLLING_TIME, 32, 0},
> - {"TouchpadOff", PT_INT, 0, 2, SYNAPTICS_PROP_OFF, 8, 0},
> + {"TouchpadOff", PT_INT, 0, 3, SYNAPTICS_PROP_OFF, 8, 0},
> {"LockedDrags", PT_BOOL, 0, 1, SYNAPTICS_PROP_LOCKED_DRAGS, 8, 0},
> {"LockedDragTimeout", PT_INT, 0, 30000, SYNAPTICS_PROP_LOCKED_DRAGS_TIMEOUT, 32, 0},
> {"RTCornerButton", PT_INT, 0, SYN_MAX_BUTTONS, SYNAPTICS_PROP_TAP_ACTION, 8, 0},
> --
> 1.7.6
More information about the xorg-devel
mailing list