Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Feb 2006 12:22:49 +0100
From:      =?UTF-8?B?SmVhbi1Tw6liYXN0aWVuIFDDqWRyb24=?= <dumbbell@freebsd.org>
To:        freebsd-mobile@freebsd.org
Subject:   [PATCH] Fixes and improvements for Synaptics Touchpads
Message-ID:  <43FAF809.60106@freebsd.org>

next in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

I sent a similar mail a month ago on freebsd-current@ but didn't get any
feedback, so I try here.

In this new mail, I begin with the content of the previous mail about
the initialization of the touchpad. After that, I'll talk about
coordinates filtering and virtual scrolling.

1. Initialization correction

The Synaptics TouchPad on my laptop (Asus V6V, Synaptics TouchPad V5.9)
doesn't work at all with FreeBSD -CURRENT (neither with 6-STABLE).

In psm.c:psmprobe(), the touchpad reverts back to Relative mode (default
mode) just after auxiliary kbdc ports are disabled. A workaround is to
send a Read Mode Byte command: the touchpad is again in Absolute mode.

Because I don't know if other laptops/touchpad versions work with
current psm(4), I'd be happy with success/failure reports with this
patch from people who have (working or not) touchpads. To enable
Synaptics support, you must add this line to your /boot/loader.conf:
hw.psm.synaptics_support="1"

If psm(4) gurus think this isn't the right way to fix it, please tell me.

The patch is available at:
http://people.freebsd.org/~dumbbell/synaptics/psm-synaptics-abs_mode-c.patch

2. Coordinates filtering

This next patch processes raw coordinates to improve the smoothness of
the movements. The algorithm is almost the same as before but corrects
the behaviour when the finger doesn't move or move slowly. Also, the
pointer won't "jump" when the finger taps or leaves the touchpad.

Like the current driver, this patch still simulates right and middle
click with two and three fingers tap respectively. It adds the support
for tap-hold (to move a window with a single finger for instance).

To tweak the behaviour, one can use the same sysctl's as before.

The patch is available at:
http://people.freebsd.org/~dumbbell/synaptics/psm-synaptics-filtering-c.patch
(it includes the previous one)

3. Virtual scrolling

To simulate wheels, one can define a margin around the touchpad for
virtual scrolling. When an action starts inside this area, the driver
won't report X/Y movements but changes in the Z axis.

It supports vertical and horizontal scrolling and both can be used at
the same time when the finger goes to diagonal (not sure with this
expression).

The margin may be tuned with the hw.psm.synaptics.directional_scrolls
sysctl (expressed in touchpad units; the touchpad widhth and height are
both 6143).

The patch is available at:
http://people.freebsd.org/~dumbbell/synaptics/psm-synaptics-virtualscrolling-c.patch
(it includes the two above)

As with the first patch, I'd be happy with success/failure reports.

Best regards,

- --
Jean-Sébastien Pédron
http://www.dumbbell.fr/

PGP Key: http://www.dumbbell.fr/pgp/pubkey.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFD+vgJa+xGJsFYOlMRApJVAJ9OdbgXIiBNNLL6lYqIy/Z5orFOcwCcCy9Z
JJNSQBrHowIDeZfDVD3ODD4=
=Tcze
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43FAF809.60106>