Touchpad stylus mode
Bert Freudenberg
bert at freudenbergs.de
Sun Mar 18 18:34:25 EDT 2007
On Mar 18, 2007, at 22:23 , Zephaniah E. Hull wrote:
> I'll write a more complete reply tomorrow, however.
>
> On Sun, Mar 18, 2007 at 01:18:26PM -0400, Albert Cahalan wrote:
>>>> Preventing sudden pointer movement on mode switch is critical.
>>>> To the raw stylus data, subtract the initial (post-mode-switch)
>>>> stylus data and add the pre-mode-switch screen location.
>>>
>>> That roughly describes how we use the GS as a relative device, it is
>>> useful for moving the cursor around for use on menus, however the PT
>>> sensor is there for use with drawing, that _absolutely_ requires
>>> that
>>> there be jumps when you lift the stylus and move it to another
>>> point on
>>> the touchpad.
>>
>> You're not immediately post-mode-switch when you place the
>> stylus for a second time, so there would be the expected jump.
>> The initial stylus data is only determined from stylus input that
>> immediately follows finger input.
>
> Actually, you are. There is simply no usable way around the fact
> that a
> lift and retouch elsewhere is counted as a post-mode-switch on the
> second touch.
>
> See below for why.
>>
>>> Please keep in mind, the GS sensor is not usable at all while in PT
>>> mode, and the only indication that we have that we may wish to go
>>> back
>>> to GS mode is the device indicating that there is no longer a stylus
>>> touching the touchpad. Thus, every lift and move to another
>>> position is
>>> going to involve a mode switch to GS, then a mode switch to PT.
>>
>> That is a bad time for the mode switch. Mode switches should only
>> happen when there is both activity on the non-active device and
>> inactivity on the active device. If there is activity on both
>> devices,
>> the inactive one gets ignored.
>>
>> So, when in stylus mode, you should remain there until there is
>> finger movement without stylus pressure. When in finger mode,
>> you should remain there until there is stylus pressure without any
>> finger detection.
>
> This is not possible with the existing hardware.
>
> We do not have the ability to detect GS down while in PT mode, so we
> must switch back to GS mode once the stylus is no longer in contact
> with the touchpad.
>
> There is currently a debounce delay there, to handle a stylus that the
> touchpad is only half seeing, set at 50ms, however that is far too
> small
> to avoid the mode switches, increasing this to some arbitrary amount
> would, likewise, not be as useful as it could be, because an
> accidental
> touch with a fingernail will render the GS unusable until the timeout
> happens.
Just another reason to not let the cursor move when a mode switch
happens. Why should the user care?
> Perhaps in some future revision of the touchpad we will be able to get
> GS-down data while in PT mode, however with the current hardware, it's
> just not possible.
Even if the time-out happens and the hardware is switched to GS mode,
you would not actually need to report that higher up until the next
event, which could be a PT or GS one, right? So if there are PT
events, then the stylus is lifted, but the next events are again from
PT, the "virtual" stylus mode could still be in effect. Only when a
GS event is registered, we'd drop out of the "virtual" stylus mode.
- Bert -
More information about the Devel
mailing list