[gpm]Synaptics driver GUI configuration...

Laurent PERROTON l.perroton@esiee.fr
Mon, 13 May 2002 11:32:28 +0200


This is a multi-part message in MIME format.
--------------8793C9470552765BD22FDDF6
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


Hi,

I have done a little Tcl/Tk GUI to dynamically manage the
configuration of the parameters of the synaptics touchpad driver. The
gui communicates with the driver with two pipes (/dev/synaptics and
/dev/synapticsctl). The GUI is in Tcl/Tk, it gives a real time display
of the presure of the finger, position on the pad, you can
interactively set the "edges" definiton, toggle tossing, edge_motion,
etc, etc...

Also, I have introduced a new algorithm which I find smoother to
manage the coordinates from the pad and tune the acceleration (I
originally did the GUI to easier tune the parameters of the algorithm)

Right now, this is a work in progress, just a "big hack", but it is
fully functionnal though. I am looking for some feed back, for example
on the following questions:

- Is /dev the right place (why not /tmp... ?) anyways, this is
  configurable at startup of gpm in gpm-config file (parameter 

- pipe, UNIX socket, shm other IPC between driver and GUI maybe the
  right choice ?

- What other funny graphic parameters display to add (I want to
  include X server acceleration, tap and double-tap time...)

Comments welcomed

I worked with gpm-1.19.6 (yes, I know, 1.20 is out, did not get time
to check if it works yet) Included here are:

- diff for gpm-xx.xx/src/synaptics.c
- synaptics.tk

just patch the original synaptics.c, compile, run gpm,
then the GUI. I assume you have a Tcl/Tk >= 8.0


Regards,

Laurent
--------------8793C9470552765BD22FDDF6
Content-Type: application/x-gzip;
 name="synaptics.c.diff.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="synaptics.c.diff.gz"

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
NAza9Ot/inkux5hwAAA=
--------------8793C9470552765BD22FDDF6
Content-Type: application/x-gzip;
 name="synaptics.tk.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="synaptics.tk.gz"

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
2Vy0l/r/AdAyc4EmPQAA
--------------8793C9470552765BD22FDDF6--