Update to xf86-input-synaptics 1.8.1.

ok matthieu@
This commit is contained in:
shadchin 2015-01-24 17:43:59 +00:00
parent 6b49aaeac1
commit ba9b4799b8
11 changed files with 298 additions and 40 deletions

View File

@ -1,3 +1,141 @@
commit d50c4bab8ae2836a0f38b29a5d22be2e950e4d08
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Thu Sep 18 07:40:13 2014 +1000
synaptics 1.8.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit bdf6a6b2e2603142e62ae5968c65e6e26f57e51d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Sep 16 10:44:40 2014 +1000
Prohibit negative or zero x/y resolutions
Default resolution is 1, don't allow setting 0 to avoid divisions by 0 or
just general weirdness.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 049611bd7f04e285909c55807478306cce83385f)
commit 2dd60417450af4ac4f9938e09b06707dd91bddfb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Sep 5 15:14:47 2014 +1000
When resetting, reset the open slots to -1
open_slots holds the slot index, resetting it to 0 is a bad idea. And make
sure that we do reset after DEVICE_INIT. We already do so on DEVICE_CLOSE, but
after the first DEVICE_ON the data could still be random.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit afbbcfa10eb3a2295823720907f35bb59972dd82)
commit 9de611219bebd9b101b98bb79cc0173115ee1833
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Sep 5 14:24:29 2014 +1000
eventcomm: add missing axis labels to avoid array overrun
And warn when we run out of labels.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit d239f831f17ccf5468f5dc6b2f199a9c1f6e35af)
commit 36d7ee1c9d60752666a94ee4755b3a1d0f339164
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Thu Aug 28 14:13:38 2014 +1000
eventcomm: ensure we're on the same clock as the server
Default on evdev devices is CLOCK_REALTIME. If that clock falls behind the
server's CLOCK_MONOTONIC, motion after a clickpad click may be delayed by the
difference in the clocks.
In detail:
When the timer func is triggered, GetTimeInMillis() which is CLOCK_MONOTONIC,
is stored as hwState->millis. The eventcomm backend uses struct
input_event time (CLOCK_REALTIME).
When we read events from the device, if the evdev time is less than the server
time, the fix for (#48777) sets the current event time to hwState->millis.
Until the evdev time overtakes that stored time, all events have the
hwState->millis time.
If during that time a clickpad triggers a physical click,
clickpad_click_millis is set to hwState->millis + the ignore-motion timeout.
Thus, all motion is ignored until the event time overtakes that stored
time.
The whole issue is further enhanced by us unconditionally setting the timer
func if we get any events, which is a separate issue anyway.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 90d19302306f49722e210227b2fb5161e6f51880)
commit 475e0d3668097f4deb9448c8765dd12b3f15534f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Aug 29 07:57:41 2014 +1000
Include xorg-server.h to fix build errors on newest glibc
In file included from /usr/include/string.h:634:0,
from /usr/include/xorg/os.h:53,
from /usr/include/xorg/misc.h:115,
from /usr/include/xorg/xf86str.h:37,
from /usr/include/xorg/xf86Xinput.h:54,
from synproto.h:36,
from synproto.c:24:
/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__'
strndup(const char *str, size_t n);
See http://lists.freedesktop.org/archives/xorg-devel/2014-July/043070.html
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 96e60a4ea242d2decf109835981ae186cc36f642)
commit ae77fdfc8e57e612e8aa0e9b45bbea478a82c30b
Author: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Date: Sun Jul 27 12:58:18 2014 +0200
Prevent two-finger taps from being ignored
When two fingers are used, the coordinates of only one of them is taken into
account. This can lead to sudden variations of the absolute coordinates when
two-fingers taps are performed if the finger considered changes.
Take into account coordinates variations to prevent unwanted taps only if
the number of fingers doesn't change.
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 7d0ff39519e4d3760722b914883bee276035061c)
commit cbf0ca508a14201d2c25f96dd6f38cea2cb1954b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed Aug 6 12:04:14 2014 +1000
conf: increase top software button area to 15%
We had reports that the top software button area is hard to hit for those
using the trackpoint and clicking the buttons with their thumb.
Analysis of event recordings (3 different people) for left, right and middle
clicks shows that there is a significant amount of events up to about 10mm
(with outliers up to 12mm) from the top of the touchpad. That maps to 15%.
Interestingly, the middle button does not seem to need this, presumably the
haptic feedback of the little dots sticking out from the surface make hitting
the button easier. Its size is increased to 15% anyway, for simplicity and
because a sample set of 3 is too small to be definitive about this.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 730101223432f60397c61f74a5e6789b3ee34ecd)
commit 3a4cc96590ca0e0ff526a5e5406f29a402bddd1a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue May 13 11:20:25 2014 +1000

View File

@ -1,11 +1,13 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
@ -13,7 +15,11 @@ Basic Installation
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@ -42,7 +48,7 @@ may remove or edit it.
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
@ -53,12 +59,22 @@ The simplest way to compile this package is:
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation.
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. You can remove the program binaries and object files from the
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
@ -67,8 +83,15 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
6. Often, you can also type `make uninstall' to remove the installed
files again.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
@ -93,7 +116,8 @@ same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
@ -120,7 +144,8 @@ Installation Names
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@ -131,15 +156,46 @@ Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
@ -152,6 +208,13 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
==================
@ -159,10 +222,15 @@ Particular systems
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae"
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
@ -174,6 +242,16 @@ and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
@ -189,7 +267,8 @@ type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
OS KERNEL-OS
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
@ -277,7 +356,7 @@ operates.
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *Note Installation Names::
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.

View File

@ -33,7 +33,7 @@ Section "InputClass"
Identifier "Default clickpad buttons"
MatchDriver "synaptics"
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
Option "SecondarySoftButtonAreas" "58% 0 0 8% 42% 58% 0 8%"
Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%"
EndSection
# This option disables software buttons on Apple touchpads.

View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for xf86-input-synaptics 1.8.0.
# Generated by GNU Autoconf 2.69 for xf86-input-synaptics 1.8.1.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='xf86-input-synaptics'
PACKAGE_TARNAME='xf86-input-synaptics'
PACKAGE_VERSION='1.8.0'
PACKAGE_STRING='xf86-input-synaptics 1.8.0'
PACKAGE_VERSION='1.8.1'
PACKAGE_STRING='xf86-input-synaptics 1.8.1'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@ -1378,7 +1378,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures xf86-input-synaptics 1.8.0 to adapt to many kinds of systems.
\`configure' configures xf86-input-synaptics 1.8.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1449,7 +1449,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of xf86-input-synaptics 1.8.0:";;
short | recursive ) echo "Configuration of xf86-input-synaptics 1.8.1:";;
esac
cat <<\_ACEOF
@ -1586,7 +1586,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
xf86-input-synaptics configure 1.8.0
xf86-input-synaptics configure 1.8.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1910,7 +1910,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by xf86-input-synaptics $as_me 1.8.0, which was
It was created by xf86-input-synaptics $as_me 1.8.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2739,7 +2739,7 @@ fi
# Define the identity of the package.
PACKAGE='xf86-input-synaptics'
VERSION='1.8.0'
VERSION='1.8.1'
cat >>confdefs.h <<_ACEOF
@ -18820,7 +18820,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by xf86-input-synaptics $as_me 1.8.0, which was
This file was extended by xf86-input-synaptics $as_me 1.8.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -18886,7 +18886,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
xf86-input-synaptics config.status 1.8.0
xf86-input-synaptics config.status 1.8.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-synaptics],
[1.8.0],
[1.8.1],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-input-synaptics])
AC_CONFIG_SRCDIR([Makefile.am])

View File

@ -39,6 +39,7 @@
#include <dirent.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#include "synproto.h"
#include "synapticsstr.h"
#include <xf86.h>
@ -88,6 +89,8 @@ struct eventcomm_proto_data {
struct libevdev *evdev;
enum libevdev_read_flag read_flag;
int have_monotonic_clock;
};
static void
@ -217,6 +220,7 @@ EventDeviceOnHook(InputInfoPtr pInfo, SynapticsParameters * para)
SynapticsPrivate *priv = (SynapticsPrivate *) pInfo->private;
struct eventcomm_proto_data *proto_data =
(struct eventcomm_proto_data *) priv->proto_data;
int ret;
set_libevdev_log_handler();
@ -238,7 +242,6 @@ EventDeviceOnHook(InputInfoPtr pInfo, SynapticsParameters * para)
if (para->grab_event_device) {
/* Try to grab the event device so that data don't leak to /dev/input/mice */
int ret;
ret = libevdev_grab(proto_data->evdev, LIBEVDEV_GRAB);
if (ret < 0) {
@ -250,6 +253,9 @@ EventDeviceOnHook(InputInfoPtr pInfo, SynapticsParameters * para)
proto_data->need_grab = FALSE;
ret = libevdev_set_clock_id(proto_data->evdev, CLOCK_MONOTONIC);
proto_data->have_monotonic_clock = (ret == 0);
InitializeTouch(pInfo);
return TRUE;
@ -686,7 +692,10 @@ EventReadHwState(InputInfoPtr pInfo,
switch (ev.code) {
case SYN_REPORT:
hw->numFingers = count_fingers(pInfo, comm);
if (proto_data->have_monotonic_clock)
hw->millis = 1000 * ev.time.tv_sec + ev.time.tv_usec / 1000;
else
hw->millis = GetTimeInMillis();
SynapticsCopyHwState(hwRet, hw);
return TRUE;
}
@ -836,7 +845,7 @@ event_query_touch(InputInfoPtr pInfo)
if (priv->has_touch) {
int axnum;
static const char *labels[] = {
static const char *labels[ABS_MT_MAX] = {
AXIS_LABEL_PROP_ABS_MT_TOUCH_MAJOR,
AXIS_LABEL_PROP_ABS_MT_TOUCH_MINOR,
AXIS_LABEL_PROP_ABS_MT_WIDTH_MAJOR,
@ -848,6 +857,9 @@ event_query_touch(InputInfoPtr pInfo)
AXIS_LABEL_PROP_ABS_MT_BLOB_ID,
AXIS_LABEL_PROP_ABS_MT_TRACKING_ID,
AXIS_LABEL_PROP_ABS_MT_PRESSURE,
AXIS_LABEL_PROP_ABS_MT_DISTANCE,
AXIS_LABEL_PROP_ABS_MT_TOOL_X,
AXIS_LABEL_PROP_ABS_MT_TOOL_Y,
};
priv->max_touches = libevdev_get_num_slots(dev);
@ -881,6 +893,12 @@ event_query_touch(InputInfoPtr pInfo)
break;
default:
if (axis_idx >= sizeof(labels)/sizeof(labels[0])) {
xf86IDrvMsg(pInfo, X_ERROR,
"Axis %d out of label range. This is a bug\n",
axis);
priv->touch_axes[axnum].label = NULL;
} else
priv->touch_axes[axnum].label = labels[axis_idx];
priv->touch_axes[axnum].min = libevdev_get_abs_minimum(dev, axis);
priv->touch_axes[axnum].max = libevdev_get_abs_maximum(dev, axis);

View File

@ -27,6 +27,8 @@
#ifndef _EVENTCOMM_H_
#define _EVENTCOMM_H_
#include <xorg-server.h>
#include <linux/input.h>
#include <linux/version.h>
#include <xf86Xinput.h>

View File

@ -22,6 +22,8 @@
#ifndef _PS2COMM_H_
#define _PS2COMM_H_
#include <xorg-server.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include "xf86_OSproc.h"

View File

@ -772,6 +772,16 @@ set_default_parameters(InputInfoPtr pInfo)
xf86SetIntOption(opts, "HorizResolution", horizResolution);
pars->resolution_vert =
xf86SetIntOption(opts, "VertResolution", vertResolution);
if (pars->resolution_horiz <= 0) {
xf86IDrvMsg(pInfo, X_ERROR,
"Invalid X resolution, using 1 instead.\n");
pars->resolution_horiz = 1;
}
if (pars->resolution_vert <= 0) {
xf86IDrvMsg(pInfo, X_ERROR,
"Invalid Y resolution, using 1 instead.\n");
pars->resolution_vert = 1;
}
/* Warn about (and fix) incorrectly configured TopEdge/BottomEdge parameters */
if (pars->top_edge > pars->bottom_edge) {
@ -1029,6 +1039,8 @@ error:
static void
SynapticsReset(SynapticsPrivate * priv)
{
int i;
SynapticsResetHwState(priv->hwState);
SynapticsResetHwState(priv->local_hw_state);
SynapticsResetHwState(priv->comm.hwState);
@ -1058,7 +1070,9 @@ SynapticsReset(SynapticsPrivate * priv)
priv->prev_z = 0;
priv->prevFingers = 0;
priv->num_active_touches = 0;
memset(priv->open_slots, 0, priv->num_slots * sizeof(int));
for (i = 0; i < priv->num_slots; i++)
priv->open_slots[i] = -1;
}
static int
@ -1355,6 +1369,8 @@ DeviceInit(DeviceIntPtr dev)
InitDeviceProperties(pInfo);
XIRegisterPropertyHandler(pInfo->dev, SetProperty, NULL, NULL);
SynapticsReset(priv);
return Success;
fail:
@ -1963,8 +1979,9 @@ HandleTapProcessing(SynapticsPrivate * priv, struct SynapticsHwState *hw,
(priv->tap_max_fingers <=
((priv->horiz_scroll_twofinger_on ||
priv->vert_scroll_twofinger_on) ? 2 : 1)) &&
(priv->prevFingers == hw->numFingers &&
((abs(hw->x - priv->touch_on.x) >= para->tap_move) ||
(abs(hw->y - priv->touch_on.y) >= para->tap_move)));
(abs(hw->y - priv->touch_on.y) >= para->tap_move))));
press = (hw->left || hw->right || hw->middle);
if (touch) {

View File

@ -31,6 +31,8 @@
#include "config.h"
#endif
#include <xorg-server.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <xf86.h>