TOUCH(3)                                                 TOUCH(3)

     NAME
          touch - touch screen

     SYNOPSIS
          bind -a '#T' /dev

          /dev/touchcal
          /dev/touchctl
          /dev/touchstat
          /dev/touch

     DESCRIPTION
          The touch screen driver serves a one-level directory giving
          access to a touch panel.  The driver attempts to compensate
          for the warped nature of the panels we have used: amongst
          other things, it repeatedly samples the panel to obtain a
          stable reading, and applies a transformation to the (x, y)
          coordinates obtained to account for the peculiar distortions
          of individual panels.  A panel should be calibrated by
          touchcal(8) before use.

          There are two variants of the driver.  One drives a DynaPro
          touch panel on a York Electronics Centre BRD/98/024 inter-
          face (Version A) accessed via the Motorola MPC8xx SPI inter-
          face.  The other drives a different pressure-sensitive touch
          panel on a webphone reference design.

          The driver initialisation starts a kernel process to read
          samples from the touch screen and provide them to the system
          through the interface used for mouse events.  The events
          generated mark `mouse button' 1 as down as long as the panel
          is touched and up otherwise.  Other `mouse buttons' are
          always up.  This is adequate for many applications (but not
          acme(1)).

          The data file touch is read-only.  Each read samples the
          touch panel and returns two decimal numbers, separated by a
          space, giving the x and y coordinates read.  The values are
          both -1 if a consistent reading could not be made.  This
          file is used only for debugging; the window system should
          not be running.

          The control file touchctl accepts commands to set driver
          parameters:

          X a b c  (MPC8xx only) Set the parameters for a transforma-
                   tion of the X-coordinates received from the panel:

                        x' = a*x+b*y+c

     TOUCH(3)                                                 TOUCH(3)

                   The values are fixed-point: 1.0 is represented by
                   216.

          Y d e f  (MPC8xx only) Set the parameters for a similar
                   transformation of Y-coordinates:

                        y' = d*x+e*y+f

          sn       Sample every n milliseconds.

          cp sx sy (SA1100) Wait for the screen to be touched and sam-
                   ple parameters for point p, 0≦p≦3, corresponding to
                   one of the four corners of the screen.  Save the
                   sample parameters for calibration.

          C        (SA1100) Compute calibration parameters based on
                   previously stored samples.

          rn       Sets delay between touch reads.

          Rn       Average 2^n readings each sample.

          fn       Set the filter level (-1024 ≦n≦1024).

          ex y     Set error term for x and y; normally calculated by
                   C.

          tp r     Set pressure threshold for press and release

          Reads of touchctl return all current parameters in the same
          form as the commands (allowing settings to be read from the
          file and later restored by simply writing them back).

          The read-only file touchstat contains four decimal values
          separated by spaces or newlines: the number of raw samples,
          the number of valid samples, microseconds waiting for sam-
          ples, and microseconds spent processing samples.

          The SA1100 driver provides a file /dev/touchcal that holds
          the calibration results as a set of decimal numbers for each
          of the four sample points, one set per line.  The results
          can be saved and written back to restore the same calibra-
          tion.

     SOURCE
          /os/mpc/devtouch.c
          /os/sa1100/devtouch.c

     SEE ALSO
          touchcal(8)