diff options
author | pingc <pingc> | 2006-03-07 00:29:03 +0000 |
---|---|---|
committer | pingc <pingc> | 2006-03-07 00:29:03 +0000 |
commit | 638fd320b1bff6ca6c488291f572b780b543b23d (patch) | |
tree | a366262a3d353bd87168287e24bc01a3bc8dbabc | |
parent | 547f03523957bb59eff1a4ce87da6c9a71e29ce1 (diff) | |
download | xf86-input-wacom-638fd320b1bff6ca6c488291f572b780b543b23d.tar.gz |
Supporting tablet attach/detach while X driver runningrelease-0_7_3release-0.7.3
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/2.4.22/wacom.c | 41 | ||||
-rw-r--r-- | src/2.4.30x86-64/wacom.c | 41 | ||||
-rw-r--r-- | src/2.4/wacom.c | 42 | ||||
-rw-r--r-- | src/2.6.10/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.11/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.13/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.14/wacom.c | 42 | ||||
-rw-r--r-- | src/2.6.15/wacom.c | 42 | ||||
-rw-r--r-- | src/2.6.2/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.3/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.4/wacom.c | 36 | ||||
-rw-r--r-- | src/2.6.5/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.6/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.7/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.8/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6.9/wacom.c | 40 | ||||
-rw-r--r-- | src/2.6/wacom.c | 40 | ||||
-rw-r--r-- | src/wcmUSB.c | 4 | ||||
-rw-r--r-- | src/xf86Wacom.c | 23 | ||||
-rw-r--r-- | src/xsetwacom.c | 5 |
21 files changed, 253 insertions, 470 deletions
@@ -1,3 +1,10 @@ +2006-03-06 Ping Cheng <pingc@wacom.com> + * Fixed a Volito bug (Kirill Frolov) + * Fixed a xsetwacom.c typo + * Supporting tablet attach/detach while X driver running (Christian Lupien) + * Remove SYSCALL from xf86 calls (Christian Lupien) + * Swapped USB tablet wheel directions (Christian Lupien) + 2006-02-27 Ping Cheng <pingc@wacom.com> * Updated website * Support 2.6.15 diff --git a/src/2.4.22/wacom.c b/src/2.4.22/wacom.c index d270af2..1614974 100644 --- a/src/2.4.22/wacom.c +++ b/src/2.4.22/wacom.c @@ -1,5 +1,5 @@ /* - * $Id: wacom.c,v 1.20 2006/02/13 05:24:22 pingc Exp $ + * $Id: wacom.c,v 1.21 2006/03/07 00:29:04 pingc Exp $ * * Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2000 Andreas Bach Aaen <abach@stofanet.dk> @@ -342,6 +342,8 @@ static void wacom_graphire_irq(struct urb *urb) if (urb->status) return; + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { printk(KERN_INFO "wacom_graphire_irq: received unknown report #%d\n", data[0]); @@ -367,10 +369,10 @@ static void wacom_graphire_irq(struct urb *urb) input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( strstr(wacom->features->name, "Graphire4") ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : data[7] & 0x03; - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -409,34 +411,19 @@ static void wacom_graphire_irq(struct urb *urb) /* send pad data */ if ( strstr(wacom->features->name, "Graphire4") ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } } @@ -690,8 +677,8 @@ static void wacom_intuos_irq(struct urb *urb) input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); /* mouse wheel is positive when rolled backwards */ - input_report_rel(dev, REL_WHEEL, (__u32)((data[8] & 0x02) >> 1) - - (__u32)(data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (__u32)(data[8] & 0x01)) + - (__u32)((data[8] & 0x02) >> 1); /* I3 2D mouse side buttons */ if (strstr(wacom->features->name, "Intuos3")) diff --git a/src/2.4.30x86-64/wacom.c b/src/2.4.30x86-64/wacom.c index 50444d1..bc14c03 100644 --- a/src/2.4.30x86-64/wacom.c +++ b/src/2.4.30x86-64/wacom.c @@ -1,5 +1,5 @@ /* - * $Id: wacom.c,v 1.6 2006/02/13 05:24:23 pingc Exp $ + * $Id: wacom.c,v 1.7 2006/03/07 00:29:04 pingc Exp $ * * Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2000 Andreas Bach Aaen <abach@stofanet.dk> @@ -287,6 +287,8 @@ static void wacom_graphire_irq(struct urb *urb) if (urb->status) return; + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { printk(KERN_INFO "wacom_graphire_irq: received unknown report #%d\n", data[0]); @@ -310,10 +312,10 @@ static void wacom_graphire_irq(struct urb *urb) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( strstr(wacom->features->name, "Graphire4") ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : data[7] & 0x03; - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : data[7] & 0x03; + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -352,34 +354,19 @@ static void wacom_graphire_irq(struct urb *urb) /* send pad data */ if ( strstr(wacom->features->name, "Graphire4") ) { - /* fist tine sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } } @@ -632,8 +619,8 @@ static void wacom_intuos_irq(struct urb *urb) input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); /* mouse wheel is positive when rolled backwards */ - input_report_rel(dev, REL_WHEEL, (__u32)((data[8] & 0x02) >> 1) - - (__u32)(data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (__u32)(data[8] & 0x01) + - (__u32)((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (strstr(wacom->features->name, "Intuos3")) diff --git a/src/2.4/wacom.c b/src/2.4/wacom.c index 5e21f74..7786700 100644 --- a/src/2.4/wacom.c +++ b/src/2.4/wacom.c @@ -1,5 +1,5 @@ /* - * $Id: wacom.c,v 1.21 2006/02/13 05:24:22 pingc Exp $ + * $Id: wacom.c,v 1.22 2006/03/07 00:29:04 pingc Exp $ * * Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2000 Andreas Bach Aaen <abach@stofanet.dk> @@ -342,6 +342,8 @@ static void wacom_graphire_irq(struct urb *urb) if (urb->status) return; + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { printk(KERN_INFO "wacom_graphire_irq: received unknown report #%d\n", data[0]); @@ -366,10 +368,10 @@ static void wacom_graphire_irq(struct urb *urb) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( strstr(wacom->features->name, "Graphire4") ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : data[7] & 0x03; - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : data[7] & 0x03; + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -408,34 +410,20 @@ static void wacom_graphire_irq(struct urb *urb) /* send pad data */ if ( strstr(wacom->features->name, "Graphire4") ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } } @@ -689,8 +677,8 @@ static void wacom_intuos_irq(struct urb *urb) input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); /* mouse wheel is positive when rolled backwards */ - input_report_rel(dev, REL_WHEEL, (__u32)((data[8] & 0x02) >> 1) - - (__u32)(data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (__u32)(data[8] & 0x01) + - (__u32)((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (strstr(wacom->features->name, "Intuos3")) diff --git a/src/2.6.10/wacom.c b/src/2.6.10/wacom.c index 11e3c04..ada39b7 100644 --- a/src/2.6.10/wacom.c +++ b/src/2.6.10/wacom.c @@ -382,6 +382,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -406,10 +408,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : data[7] & 0x03; - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : data[7] & 0x03; + input_report_rel(dev, REL_WHEEL, -rw); else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -448,34 +450,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -737,8 +723,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.11/wacom.c b/src/2.6.11/wacom.c index a2b0d3c..0ca5e22 100644 --- a/src/2.6.11/wacom.c +++ b/src/2.6.11/wacom.c @@ -384,6 +384,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -408,10 +410,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -450,34 +452,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -740,8 +726,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.13/wacom.c b/src/2.6.13/wacom.c index d5284b8..0778568 100644 --- a/src/2.6.13/wacom.c +++ b/src/2.6.13/wacom.c @@ -375,6 +375,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -399,10 +401,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -441,34 +443,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -721,8 +707,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) { diff --git a/src/2.6.14/wacom.c b/src/2.6.14/wacom.c index e5f2737..46b6ba0 100644 --- a/src/2.6.14/wacom.c +++ b/src/2.6.14/wacom.c @@ -374,6 +374,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -398,10 +400,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if (wacom->features->type == G4) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -439,34 +441,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if (wacom->features->type == G4) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) { - wacom->id[1] = 0; - wacom->serial[1] = (data[7] & 0x38) >> 2; - } - if (data[7] & 0xf8) { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if (((data[7] & 0x38) >> 2) == (wacom->serial[1] & 0x0e)) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1; - else - wacom->serial[1] = (data[7] & 0x38) >> 2; - - /* don't alter the value when there is no wheel event */ - if (wacom->serial[1] == 1) - wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = (rw & 0x08) ? -(rw & 0x07) : (rw & 0x07); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); - } else if (wacom->id[1]) { + } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -718,8 +704,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) { diff --git a/src/2.6.15/wacom.c b/src/2.6.15/wacom.c index c23824d..c0ea882 100644 --- a/src/2.6.15/wacom.c +++ b/src/2.6.15/wacom.c @@ -374,6 +374,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -398,10 +400,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if (wacom->features->type == G4) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -439,34 +441,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if (wacom->features->type == G4) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) { - wacom->id[1] = 0; - wacom->serial[1] = (data[7] & 0x38) >> 2; - } - if (data[7] & 0xf8) { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if (((data[7] & 0x38) >> 2) == (wacom->serial[1] & 0x0e)) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - - /* don't alter the value when there is no wheel event */ - if (wacom->serial[1] == 1) - wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = (rw & 0x08) ? -(rw & 0x07) : (rw & 0x07); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); - } else if (wacom->id[1]) { + } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -718,8 +704,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) { diff --git a/src/2.6.2/wacom.c b/src/2.6.2/wacom.c index 64206d1..59637ae 100644 --- a/src/2.6.2/wacom.c +++ b/src/2.6.2/wacom.c @@ -378,6 +378,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -402,10 +404,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -444,34 +446,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -734,8 +720,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.3/wacom.c b/src/2.6.3/wacom.c index c64f6de..91d7d3c 100644 --- a/src/2.6.3/wacom.c +++ b/src/2.6.3/wacom.c @@ -179,6 +179,8 @@ static void wacom_pl_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_pl_irq: received unknown report #%d", data[0]); goto exit; @@ -406,10 +408,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -449,34 +451,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -739,8 +725,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.4/wacom.c b/src/2.6.4/wacom.c index 976b135..9b1d51f 100644 --- a/src/2.6.4/wacom.c +++ b/src/2.6.4/wacom.c @@ -382,6 +382,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -406,10 +408,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -448,34 +450,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); diff --git a/src/2.6.5/wacom.c b/src/2.6.5/wacom.c index 358b63b..37d36d4 100644 --- a/src/2.6.5/wacom.c +++ b/src/2.6.5/wacom.c @@ -380,6 +380,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -404,10 +406,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -446,34 +448,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -736,8 +722,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.6/wacom.c b/src/2.6.6/wacom.c index 7484e05..4e0b103 100644 --- a/src/2.6.6/wacom.c +++ b/src/2.6.6/wacom.c @@ -382,6 +382,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -406,10 +408,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -449,34 +451,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -739,8 +725,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.7/wacom.c b/src/2.6.7/wacom.c index fbe4e22..1a03ddc 100644 --- a/src/2.6.7/wacom.c +++ b/src/2.6.7/wacom.c @@ -381,6 +381,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -405,10 +407,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -447,34 +449,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -737,8 +723,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.8/wacom.c b/src/2.6.8/wacom.c index 85c6db4..ff0b75c 100644 --- a/src/2.6.8/wacom.c +++ b/src/2.6.8/wacom.c @@ -382,6 +382,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -406,10 +408,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -448,34 +450,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -738,8 +724,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6.9/wacom.c b/src/2.6.9/wacom.c index 34d02a3..238b9f7 100644 --- a/src/2.6.9/wacom.c +++ b/src/2.6.9/wacom.c @@ -382,6 +382,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -406,10 +408,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : (data[7] & 0x03); - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : (data[7] & 0x03); + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -448,34 +450,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -738,8 +724,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/2.6/wacom.c b/src/2.6/wacom.c index 07ed0de..29159a4 100644 --- a/src/2.6/wacom.c +++ b/src/2.6/wacom.c @@ -381,6 +381,8 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) goto exit; } + if (data[0] == 99) return; /* for Volito tablets */ + if (data[0] != 2) { dbg("wacom_graphire_irq: received unknown report #%d", data[0]); goto exit; @@ -405,10 +407,10 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) case 2: /* Mouse with wheel */ input_report_key(dev, BTN_MIDDLE, data[1] & 0x04); if ( wacom->features->type == G4 ) { - rw = data[7] & 0x04 ? -(data[7] & 0x03) : data[7] & 0x03; - input_report_rel(dev, REL_WHEEL, rw); + rw = data[7] & 0x04 ? (data[7] & 0x03)-4 : data[7] & 0x03; + input_report_rel(dev, REL_WHEEL, -rw); } else - input_report_rel(dev, REL_WHEEL, (signed char) data[6]); + input_report_rel(dev, REL_WHEEL, -(signed char) data[6]); /* fall through */ case 3: /* Mouse without wheel */ @@ -447,34 +449,18 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) /* send pad data */ if ( wacom->features->type == G4 ) { - /* fist time sending pad data */ - if (wacom->tool[1] != BTN_TOOL_FINGER) - { - wacom->id[1] = 0; - wacom->serial[1] = ( data[7] & 0x38 ) >> 2; - } - if ( data[7] & 0xf8 ) - { + if ( (wacom->serial[1] & 0xc0) != (data[7] & 0xf8) ) { + wacom->id[1] = 1; + wacom->serial[1] = (data[7] & 0xf8); input_report_key(dev, BTN_0, (data[7] & 0x40)); input_report_key(dev, BTN_4, (data[7] & 0x80)); - if ( (( data[7] & 0x38 ) >> 2) == (wacom->serial[1] & 0x0e) ) - /* alter REL_WHEEL value so X apps can get it */ - wacom->serial[1] += (wacom->serial[1] & 0x01) ? -1 : 1 ; - else - wacom->serial[1] = (data[7] & 0x38 ) >> 2; - /* don't alter the value when there is no wheel event */ - if ( wacom->serial[1] == 1 ) wacom->serial[1] = 0; - rw = wacom->serial[1]; - rw = ( rw & 0x08 ) ? -( rw & 0x07 ) : ( rw & 0x07 ); + rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); input_report_rel(dev, REL_WHEEL, rw); - wacom->tool[1] = BTN_TOOL_FINGER; - wacom->id[1] = data[7] & 0xf8; - input_report_key(dev, wacom->tool[1], 0xf0); + input_report_key(dev, BTN_TOOL_FINGER, 0xf0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } else if ( wacom->id[1] ) { wacom->id[1] = 0; - wacom->serial[1] = 0; - input_report_key(dev, wacom->tool[1], 0); + input_report_key(dev, BTN_TOOL_FINGER, 0); input_event(dev, EV_MSC, MSC_SERIAL, 0xf0); } input_sync(dev); @@ -737,8 +723,8 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_LEFT, data[8] & 0x04); input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); input_report_key(dev, BTN_RIGHT, data[8] & 0x10); - input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) - - (data[8] & 0x01)); + input_report_rel(dev, REL_WHEEL, (data[8] & 0x01) + - ((data[8] & 0x02) >> 1)); /* I3 2D mouse side buttons */ if (wacom->features->type == INTUOS3) diff --git a/src/wcmUSB.c b/src/wcmUSB.c index 54d4793..95f6278 100644 --- a/src/wcmUSB.c +++ b/src/wcmUSB.c @@ -1,6 +1,6 @@ /* * Copyright 1995-2002 by Frederic Lepied, France. <Lepied@XFree86.org> - * Copyright 2002-2005 by Ping Cheng, Wacom Technology. <pingc@wacom.com> + * Copyright 2002-2006 by Ping Cheng, Wacom Technology. <pingc@wacom.com> * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -696,7 +696,7 @@ static void usbParseChannel(WacomCommonPtr common, int channel, int serial) else if (event->type == EV_REL) { if (event->code == REL_WHEEL) - ds->relwheel = event->value; + ds->relwheel = -event->value; else ErrorF("wacom: rel event recv'd (%d)!\n", event->code); } diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c index 5ff9bbc..651721f 100644 --- a/src/xf86Wacom.c +++ b/src/xf86Wacom.c @@ -425,7 +425,7 @@ static void xf86WcmDevReadInput(LocalDevicePtr local) void xf86WcmReadPacket(LocalDevicePtr local) { WacomCommonPtr common = ((WacomDevicePtr)(local->private))->common; - int len, pos, cnt, remaining; + int len, pos, cnt, remaining, loop; if (!common->wcmModel) return; @@ -437,12 +437,20 @@ void xf86WcmReadPacket(LocalDevicePtr local) common->bufpos, remaining)); /* fill buffer with as much data as we can handle */ - SYSCALL(len = xf86WcmRead(local->fd, - common->buffer + common->bufpos, remaining)); + len = xf86WcmRead(local->fd, + common->buffer + common->bufpos, remaining); if (len <= 0) { ErrorF("Error reading wacom device : %s\n", strerror(errno)); + /* In case of error, we assume the device has been disconnected + so we close it. We need to iterate over all wcmDevices to + actually close the device. */ + for (loop=0; loop<common->wcmNumDevices; loop++) + { + if (common->wcmDevices[loop]->fd >= 0) + xf86WcmDevProc(common->wcmDevices[loop]->dev,DEVICE_OFF); + } return; } @@ -514,7 +522,7 @@ static void xf86WcmDevClose(LocalDevicePtr local) if (num == 1) { DBG(1,ErrorF("Closing device; uninitializing.\n")); - SYSCALL(xf86WcmClose(local->fd)); + xf86WcmClose(local->fd); common->wcmInitialized = FALSE; } @@ -622,9 +630,10 @@ static int xf86WcmDevProc(DeviceIntPtr pWcm, int what) DBG(1, ErrorF("xf86WcmProc fd=%d pWcm=%p what=ON\n", local->fd, (void *)pWcm)); - if ((local->fd < 0) && (!xf86WcmDevOpen(pWcm))) + /* if ((local->fd < 0) && (!xf86WcmDevOpen(pWcm))) */ + if (!xf86WcmDevOpen(pWcm)) { - pWcm->inited = FALSE; + /* pWcm->inited = FALSE; */ return !Success; } xf86AddEnabledDevice(local); @@ -1339,7 +1348,7 @@ static Bool xf86WcmInitDevice(LocalDevicePtr local) if (local->fd >= 0) { DBG(1,ErrorF("Closing device\n")); - SYSCALL(xf86WcmClose(local->fd)); + xf86WcmClose(local->fd); } local->fd = -1; return FALSE; diff --git a/src/xsetwacom.c b/src/xsetwacom.c index 66e28f5..b21cc27 100644 --- a/src/xsetwacom.c +++ b/src/xsetwacom.c @@ -2,7 +2,7 @@ ** xsetwacom.c ** ** Copyright (C) 2003 - John E. Joganic -** Copyright (C) 2004-2005 - Ping Cheng +** Copyright (C) 2004-2006 - Ping Cheng ** ** This program is free software; you can redistribute it and/or ** modify it under the terms of the GNU Lesser General Public License @@ -22,6 +22,7 @@ ** 2003-05-02 0.0.1 - JEJ - created ** 2005-10-24 0.0.4 - PC - added Pad ** 2005-11-17 0.0.5 - PC - update mode code +** 2006-02-27 0.0.6 - PC - fixed a typo * ****************************************************************************/ @@ -256,7 +257,7 @@ static int ListDev(WACOMCONFIG *hConfig, char** argv) { WACOMDEVICETYPE_CURSOR, "cursor" }, { WACOMDEVICETYPE_STYLUS, "stylus" }, { WACOMDEVICETYPE_ERASER, "eraser" }, - { WACOMDEVICETYPE_STYLUS, "pad" } + { WACOMDEVICETYPE_PAD, "pad" } }; if (*argv != NULL) |