Multi-Touch

Ian Stirling openmoko at mauve.plus.com
Wed Apr 4 01:43:17 CEST 2007


mathew davis wrote:
<snip>
>     * The output is the center of the bounding box of the touched area
>     * The touch point skips instantly on double touch
>     * Pressure has almost no effect on a single touch, but not so on a
>       double touch. The relative pressures will cause a significant
>       skewing effect towards the harder touch. You can easily move the
>       pointer along the line between your two fingers by changing the
>       relative pressure. 
> 
> So my question now is do we have access to the bounding box?  If we can 
> get at the coordinates of the bounding box can we not figure out if the 
> bounding box is shrinking or growing?  The iphone has a camera which 


Ok - I wrote the above, and it could do with some clarification.
The 'center of the bounding box' is the only thing the current hardware 
has access to.
It is 'computed' solely in the resistances of the touchscreen, not 
externally.
Pressing harder with one finger than the other, or pressing over a 
larger area gives a (possibly slightly, possibly greatly, depending on 
design) skew towards the area with the higher contact pressure * area.
(And it may not be as simple as contact pressure*area, it probably hits 
a limit at a small pressure)
When measuring the touch position this is basically what is done.

The screen is composed of two resistive layers, one flexible plastic, 
one glass, with linear electrodes on the X or Y axes (parallel 
electrodes on the same layer).

Connect X+ and X- to battery + and -.

This now creates a voltage gradient vertically across the screen - say 
0V at the bottom, and 1V at the top.
Now, when someone presses the screen at a point, this is connected to 
the 'Y' electrodes, and the voltage (say 0.5V) can be read out and 
converted into 'X=320'. (repeat for Y+ Y- and an X for other axes)

If the screen is pressed over multiple points, or areas, it's a little 
more complex.
You have now current flowing in addition to through the X layer, flowing 
parallel to the X layer, through the Y layer - this will distort the 
nice smooth gradient, and make it so that instead of rising smoothly 
from 0 to 1V as you go up the display, it rises half as steeply over the 
touched area.
This assumes that the contact resistance is zero though, and it's not.
As the resistance at a touch point drops, the sensed point moves towards 
  that point,

A not-terrible mechanical analogy is to take a hacksaw blade, and put it 
on a towel.
pressing (gently) on it on it at several points will (usually) make only 
one point furthest down.




More information about the community mailing list