On Tue, Nov 16, 2010 at 4:03 PM, Chris Bagwell <[email protected]> wrote:
> Ah ha, things are becoming clearer to me by the minute on what your doing.
>
> Your addressing step one.  A lot of my discussion was at step 5 or so.

Glad that we agreed on the first step. I have a short vision, you know ;).

> I do think this is very much on the right track for creating our PAD
> devices.  This framework probably helps "generic tablets"; in case they
> think BTN_RIGHT is what they want to send.

More cleanup will follow once this patch is in.

> I also grepped drivers/input and agree with all your previous findings.
> Below seems to work for all cases... and even will for "cursor" if they have
> BTN_FORWARD as long as they are listed first in list.

Why does BTN_FORWARD have to be the first in the list? I want to have
your vision too.

> Instead of fixed size loop of 2, can you search until zero value so that
> table can expand with no code changes?

Sure I can. Will submit a new one after I hear your reply.

> Besides that:
>
> Reviewed-by: Chris Bagwell <[email protected]>

Thank you.

Ping

>
> On Tue, Nov 16, 2010 at 3:47 PM, Ping Cheng <[email protected]> wrote:
>>
>> From: Ping Cheng <[email protected]>
>>
>> They said using BTN_TOOL_FINGER is too confusing. But we still
>> need to configure those tablet buttons and strips/ring. Let's
>> detect the actual buttons we are going to receive to determine
>> the existence of a pad tool.
>>
>> BTN_0 and BTN_FORWARD are the two unique BTN_s that we use for
>> tablet buttons in the kernel driver.
>>
>> Signed-off-by: Ping Cheng <[email protected]>
>> ---
>>  src/wcmUSB.c            |    3 ++-
>>  src/wcmValidateDevice.c |   41 ++++++++++++++++++++++++-----------------
>>  2 files changed, 26 insertions(+), 18 deletions(-)
>>
>> diff --git a/src/wcmUSB.c b/src/wcmUSB.c
>> index 4d8a0fb..98d3c05 100644
>> --- a/src/wcmUSB.c
>> +++ b/src/wcmUSB.c
>> @@ -846,7 +846,8 @@ static struct
>>        { CURSOR_ID, BTN_TOOL_LENS      },
>>        { TOUCH_ID,  BTN_TOOL_DOUBLETAP },
>>        { TOUCH_ID,  BTN_TOOL_TRIPLETAP },
>> -       { PAD_ID,    BTN_TOOL_FINGER    }
>> +       { PAD_ID,    BTN_FORWARD        },
>> +       { PAD_ID,    BTN_0              }
>>  };
>>
>>  #define MOD_BUTTONS(bit, value) do { \
>> diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c
>> index 0968991..0adcab3 100644
>> --- a/src/wcmValidateDevice.c
>> +++ b/src/wcmValidateDevice.c
>> @@ -120,20 +120,20 @@ ret:
>>  static struct
>>  {
>>        const char* type;
>> -       __u16 tool;
>> +       __u16 tool [2];
>>  } wcmType [] =
>>  {
>> -       { "stylus", BTN_TOOL_PEN       },
>> -       { "eraser", BTN_TOOL_RUBBER    },
>> -       { "cursor", BTN_TOOL_MOUSE     },
>> -       { "touch",  BTN_TOOL_DOUBLETAP },
>> -       { "pad",    BTN_TOOL_FINGER    }
>> +       { "stylus", { BTN_TOOL_PEN,       0     } },
>> +       { "eraser", { BTN_TOOL_RUBBER,    0     } },
>> +       { "cursor", { BTN_TOOL_MOUSE,     0     } },
>> +       { "touch",  { BTN_TOOL_DOUBLETAP, 0     } },
>> +       { "pad",    { BTN_FORWARD,        BTN_0 } }
>>  };
>>
>>  /* validate tool type for device/product */
>>  Bool wcmIsAValidType(InputInfoPtr pInfo, const char* type)
>>  {
>> -       int j, ret = FALSE;
>> +       int j, k, ret = FALSE;
>>        WacomDevicePtr priv = (WacomDevicePtr)pInfo->private;
>>        WacomCommonPtr common = priv->common;
>>        char* dsource = xf86CheckStrOption(pInfo->options, "_source", "");
>> @@ -146,17 +146,24 @@ Bool wcmIsAValidType(InputInfoPtr pInfo, const char*
>> type)
>>        {
>>                if (!strcmp(wcmType[j].type, type))
>>                {
>> -                       if (ISBITSET (common->wcmKeys, wcmType[j].tool))
>> +                       for (k = 0; k < 2; k++)
>>                        {
>> -                               ret = TRUE;
>> -                               break;
>> -                       }
>> -                       else if (!strlen(dsource)) /* an user defined type
>> */
>> -                       {
>> -                               /* assume it is a valid type */
>> -                               SETBIT(common->wcmKeys, wcmType[j].tool);
>> -                               ret = TRUE;
>> -                               break;
>> +                               if (!wcmType[j].tool[k])
>> +                               {
>> +                                       break;
>> +                               }
>> +                               if (ISBITSET (common->wcmKeys,
>> wcmType[j].tool[k]))
>> +                               {
>> +                                       ret = TRUE;
>> +                                       break;
>> +                               }
>> +                               else if (!strlen(dsource)) /* an user
>> defined type */
>> +                               {
>> +                                       /* assume it is a valid type */
>> +                                       SETBIT(common->wcmKeys,
>> wcmType[j].tool[k]);
>> +                                       ret = TRUE;
>> +                                       break;
>> +                               }
>>                        }
>>                }
>>        }
>> --
>> 1.7.2.3
>>
>
>

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to