On Wed, Nov 17, 2010 at 12:33:49PM -0800, Ping Cheng wrote: > From: Ping Cheng <[email protected]> > > They said using BTN_TOOL_FINGER is too confusing. But we still
Who is "they"? the people in the street? some guy in a pub? :) > 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]> > Reviewed-by: Chris Bagwell <[email protected]> > --- > src/wcmUSB.c | 3 ++- > src/wcmValidateDevice.c | 40 ++++++++++++++++++++++------------------ > 2 files changed, 24 insertions(+), 19 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..93857ec 100644 > --- a/src/wcmValidateDevice.c > +++ b/src/wcmValidateDevice.c > @@ -120,20 +120,20 @@ ret: > static struct > { > const char* type; > - __u16 tool; > + __u16 tool [3]; no space before [] please. > } 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, 0 } } > }; this needs a comment that this is a zero-terminated array. > /* 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,18 +146,22 @@ Bool wcmIsAValidType(InputInfoPtr pInfo, const char* > type) > { > if (!strcmp(wcmType[j].type, type)) > { > - if (ISBITSET (common->wcmKeys, wcmType[j].tool)) > + k = 0; > + do > { > - 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 (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; > + } > + } while (wcmType[j].tool[++k]); wouldn't a for loop be a little bit easier to read. do {} while loops are somewhat uncommon and not needed here. for (k = 0; wcmType[j].tool[k] && !ret; k++) does the same job (and allows to remove the "break") ack in principle though Cheers, Peter > } > } > return ret; > -- > 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
