Re: [PATCH 2/2]input - wacom_w8001: Add one finger touch support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 9, 2010 at 1:21 PM, Chris Bagwell <chris@xxxxxxxxxxxxxx> wrote:
> On Thu, Dec 9, 2010 at 1:50 PM, Dmitry Torokhov
> <dmitry.torokhov@xxxxxxxxx> wrote:
>> On Thu, Dec 09, 2010 at 11:36:19AM -0800, Ping Cheng wrote:
>>> On Thu, Dec 9, 2010 at 7:06 AM, Chris Bagwell <chris@xxxxxxxxxxxxxx> wrote:
>>> > On Wed, Dec 8, 2010 at 7:23 PM, Ping Cheng <pinglinux@xxxxxxxxx> wrote:
>>> >> @@ -228,9 +277,17 @@ static irqreturn_t w8001_interrupt(struct serio *serio,
>>> >>                if (tmp == W8001_TOUCH_BYTE)
>>> >>                        break;
>>> >>
>>> >> +               if (w8001->has_touch) {
>>> >> +                       /* send touch data out */
>>> >> +                       w8001->has_touch = 0;
>>> >> +                       input_report_key(dev, BTN_TOUCH, 0);
>>> >> +                       input_report_key(dev, BTN_TOOL_FINGER, 0);
>>> >
>>> > Probably its better to set ABS_X/ABS_Y to zero and do a sync here?  So
>>> > duplicate x/y values don't get dropped and aligns with wacom_wac.c.
>>> > This is related to comment about forcing ABS_X/Y to zero above.  Its
>>> > so pen has known starting point when coming in proximity.  I wouldn't
>>> > do one without the other.
>>>
>>> I'll do both to make you happy (just kidding, to make it safe ;).
>>>
>>
>> Actually do not see how (0,0) is any safer than let's say (123,78)
>> sincve i believe (0,0) is a valid coordinate. Userspace should still
>> hang on to the last reported coordinate and use it if it did not get
>> a new one.
>>
>> Also, if you add input_sync() here won't it cause (in certain
>> situtations) false click or tap events - BTN_TOUCH goes from 1 to 0 and
>> then again to 1 if pen is already in proximity...
>
> The patches behavior happens to align good with existing wacom
> behavior and user land apps (xf86-input-wacom mostly) but its good to
> get this input from those not concentrating on wacom as much.  It
> helps remind me the old way is not the only way.
>
> Let me answer the second point first.
>
> The above code is following a kinda rule that other wacom tablet
> drivers obey.  That rule is that if 2 tools share ABS_* events then
> only 1 of those tools can be in proximity at one time.  If a driver
> follows that rule then you will not get the unwanted clicks you
> mention.
>
> The 1 tool in proximity probably originates from physical attribute of
> having to flip pen to get eraser or switching to another physical
> stylus.  I think it wasn't until touch+stylus that HW supported 2
> tools in proximity with same ABS_*.  The above logic comes in to
> simulate older HW enforced behavior.  There is some user land code I
> know of that depends on that rule right now but easy enough to fix (by
> buffering last (x,y,touch) values).
>
> For first point, your right that (123,78) is just a good "known
> starting value" if a driver is going to use that concept because it
> could be filtered just as easy as (0,0).  Its the "known" part thats
> more useful to userland.  They can do a memset() when entering
> proximity instead of buffering previous values.
>
> I think this part of past driver behavior originated because, before
> touch tools, wacom hardware was good about sending (x,y,touch) as
> (0,0,0) when tool was out of proximity and this behavior came out to
> userland without driver doing anything.  For touch case, software
> driver must simulate older hardware behavior.  Again, I happen to know
> some userland code that came to depend on that (0,0,0) but its easy
> enough to fix.
>
> So the overall patch is in line with existing multi-tool wacom tablets
> and their code flow.
>
> My original comment can be restated as if you going to send
> BTN_TOUCH=0 then probably you should send ABS_X/Y=0 for consistency
> with other wacom behavior.

So, do you mean if we do not send BTN_TOUCH=0, we do not need to send
ABS_X/Y=0? That is we only need to send BTN_TOOL_FINGER=0?

Ping
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux