Update to xf86-input-synaptics 1.8.1.
ok matthieu@
This commit is contained in:
parent
6b49aaeac1
commit
ba9b4799b8
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
20
driver/xf86-input-synaptics/configure
vendored
20
driver/xf86-input-synaptics/configure
vendored
@ -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\\"
|
||||
|
||||
|
@ -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])
|
||||
|
@ -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);
|
||||
hw->millis = 1000 * ev.time.tv_sec + ev.time.tv_usec / 1000;
|
||||
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,7 +893,13 @@ event_query_touch(InputInfoPtr pInfo)
|
||||
break;
|
||||
|
||||
default:
|
||||
priv->touch_axes[axnum].label = labels[axis_idx];
|
||||
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);
|
||||
/* Kernel provides units/mm, X wants units/m */
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
@ -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)) &&
|
||||
((abs(hw->x - priv->touch_on.x) >= para->tap_move) ||
|
||||
(abs(hw->y - priv->touch_on.y) >= para->tap_move)));
|
||||
(priv->prevFingers == hw->numFingers &&
|
||||
((abs(hw->x - priv->touch_on.x) >= para->tap_move) ||
|
||||
(abs(hw->y - priv->touch_on.y) >= para->tap_move))));
|
||||
press = (hw->left || hw->right || hw->middle);
|
||||
|
||||
if (touch) {
|
||||
|
@ -31,6 +31,8 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <xorg-server.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <xf86.h>
|
||||
|
@ -292,7 +292,7 @@ WSConsReadDevDimensions(InputInfoPtr pInfo)
|
||||
case WSMOUSE_TYPE_SYNAP_SBTN:
|
||||
para->clickpad = TRUE;
|
||||
para->has_secondary_buttons = TRUE;
|
||||
/* FALLTHROUGH */
|
||||
/* FALLTHROUGH */
|
||||
case WSMOUSE_TYPE_SYNAPTICS:
|
||||
priv->model = MODEL_SYNAPTICS;
|
||||
priv->has_width = TRUE;
|
||||
|
Loading…
Reference in New Issue
Block a user