diff options
author | pingc <pingc> | 2005-09-16 19:21:03 +0000 |
---|---|---|
committer | pingc <pingc> | 2005-09-16 19:21:03 +0000 |
commit | 077b10c7457b5fbfd7c9d1c862e2422ea133377e (patch) | |
tree | 9bb78251e3efbf5d8bbf8db85912f9f2ebd5f6f2 | |
parent | 81da644f03a9d1c46cc93205ba1016ea2def358e (diff) | |
download | xf86-input-wacom-release-0.7.0.tar.gz |
Reports USB tool IDrelease-0_7_0release-0.7.0
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/2.4.22/wacom.c | 8 | ||||
-rw-r--r-- | src/2.4.30x86-64/wacom.c | 8 | ||||
-rw-r--r-- | src/2.4/wacom.c | 8 | ||||
-rw-r--r-- | src/2.6.10/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.11/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.2/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.3/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.4/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.5/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.6/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.7/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.8/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6.9/wacom.c | 7 | ||||
-rw-r--r-- | src/2.6/wacom.c | 7 | ||||
-rw-r--r-- | src/wcmCommon.c | 3 | ||||
-rw-r--r-- | src/wcmISDV4.c | 6 | ||||
-rw-r--r-- | src/wcmSerial.c | 12 | ||||
-rw-r--r-- | src/wcmUSB.c | 8 | ||||
-rw-r--r-- | src/xf86Wacom.h | 2 |
20 files changed, 89 insertions, 48 deletions
@@ -1,3 +1,8 @@ +2005-09-16 Ping Cheng <pingc@wacom.com> + * Fixed a P4 eraser bug + * Fixed an initial relative pressure bug (Fred) + * Reports USB tool ID + 2005-09-09 Ping Cheng <pingc@wacom.com> * Supports 16 button events for all tools * Merged TabletPC button1 patch from Brent Baccala diff --git a/src/2.4.22/wacom.c b/src/2.4.22/wacom.c index 9692bf2..2883adb 100644 --- a/src/2.4.22/wacom.c +++ b/src/2.4.22/wacom.c @@ -1,5 +1,5 @@ /* - * $Id: wacom.c,v 1.15 2005/08/18 18:45:39 pingc Exp $ + * $Id: wacom.c,v 1.16 2005/09/16 19:21:04 pingc Exp $ * * Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2000 Andreas Bach Aaen <abach@stofanet.dk> @@ -378,7 +378,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -396,7 +396,8 @@ static int wacom_intuos_inout(struct urb *urb) (((__u32)data[2] << 4) | (data[3] >> 4))); #endif - switch ((((__u32)data[2] << 4) | (data[3] >> 4))) + type = ((__u32)data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Intuos2 ink pen XP-110-00A */ case 0x801: /* Intuos3 Inking pen */ @@ -445,6 +446,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; break; } + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); return 1; } diff --git a/src/2.4.30x86-64/wacom.c b/src/2.4.30x86-64/wacom.c index 7ac98ae..f175e09 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.1 2005/08/18 18:45:39 pingc Exp $ + * $Id: wacom.c,v 1.2 2005/09/16 19:21:04 pingc Exp $ * * Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2000 Andreas Bach Aaen <abach@stofanet.dk> @@ -323,7 +323,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -341,7 +341,8 @@ static int wacom_intuos_inout(struct urb *urb) (((__u32)data[2] << 4) | (data[3] >> 4))); #endif - switch ((((__u32)data[2] << 4) | (data[3] >> 4))) + type = ((__u32)data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Intuos2 ink pen XP-110-00A */ case 0x801: /* Intuos3 Inking pen */ @@ -390,6 +391,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; break; } + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); return 1; } diff --git a/src/2.4/wacom.c b/src/2.4/wacom.c index 1d9f244..e205445 100644 --- a/src/2.4/wacom.c +++ b/src/2.4/wacom.c @@ -1,5 +1,5 @@ /* - * $Id: wacom.c,v 1.16 2005/08/18 18:45:39 pingc Exp $ + * $Id: wacom.c,v 1.17 2005/09/16 19:21:04 pingc Exp $ * * Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2000 Andreas Bach Aaen <abach@stofanet.dk> @@ -378,7 +378,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -396,7 +396,8 @@ static int wacom_intuos_inout(struct urb *urb) (((__u32)data[2] << 4) | (data[3] >> 4))); #endif - switch ((((__u32)data[2] << 4) | (data[3] >> 4))) + type = ((__u32)data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Intuos2 ink pen XP-110-00A */ case 0x801: /* Intuos3 Inking pen */ @@ -445,6 +446,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; break; } + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); return 1; } diff --git a/src/2.6.10/wacom.c b/src/2.6.10/wacom.c index 334a006..2fbba17 100644 --- a/src/2.6.10/wacom.c +++ b/src/2.6.10/wacom.c @@ -410,7 +410,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -423,7 +423,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + ((__u32)data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type)) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -471,7 +472,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.11/wacom.c b/src/2.6.11/wacom.c index 5e1e0e0..c81bced 100644 --- a/src/2.6.11/wacom.c +++ b/src/2.6.11/wacom.c @@ -412,7 +412,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -425,7 +425,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -473,7 +474,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.2/wacom.c b/src/2.6.2/wacom.c index 9a63f6e..4660e3f 100644 --- a/src/2.6.2/wacom.c +++ b/src/2.6.2/wacom.c @@ -407,7 +407,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -420,7 +420,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -468,7 +469,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.3/wacom.c b/src/2.6.3/wacom.c index a9dd7eb..52d2cad 100644 --- a/src/2.6.3/wacom.c +++ b/src/2.6.3/wacom.c @@ -412,7 +412,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -425,7 +425,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -473,7 +474,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.4/wacom.c b/src/2.6.4/wacom.c index 475bf6a..3989903 100644 --- a/src/2.6.4/wacom.c +++ b/src/2.6.4/wacom.c @@ -411,7 +411,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -424,7 +424,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -472,7 +473,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.5/wacom.c b/src/2.6.5/wacom.c index 644f127..9ef3919 100644 --- a/src/2.6.5/wacom.c +++ b/src/2.6.5/wacom.c @@ -409,7 +409,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -422,7 +422,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -470,7 +471,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.6/wacom.c b/src/2.6.6/wacom.c index 8f3b378..e78a8fc 100644 --- a/src/2.6.6/wacom.c +++ b/src/2.6.6/wacom.c @@ -412,7 +412,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -425,7 +425,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -473,7 +474,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.7/wacom.c b/src/2.6.7/wacom.c index faaf103..9739c15 100644 --- a/src/2.6.7/wacom.c +++ b/src/2.6.7/wacom.c @@ -411,7 +411,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -424,7 +424,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -472,7 +473,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.8/wacom.c b/src/2.6.8/wacom.c index ce482a5..6fc4dba 100644 --- a/src/2.6.8/wacom.c +++ b/src/2.6.8/wacom.c @@ -411,7 +411,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -424,7 +424,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -472,7 +473,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6.9/wacom.c b/src/2.6.9/wacom.c index 865cb83..4267467 100644 --- a/src/2.6.9/wacom.c +++ b/src/2.6.9/wacom.c @@ -411,7 +411,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -424,7 +424,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -472,7 +473,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/2.6/wacom.c b/src/2.6/wacom.c index d8aa096..d0ebaa8 100644 --- a/src/2.6/wacom.c +++ b/src/2.6/wacom.c @@ -409,7 +409,7 @@ static int wacom_intuos_inout(struct urb *urb) struct wacom *wacom = urb->context; unsigned char *data = wacom->data; struct input_dev *dev = &wacom->dev; - int idx; + int idx, type; /* tool number */ idx = data[1] & 0x01; @@ -422,7 +422,8 @@ static int wacom_intuos_inout(struct urb *urb) (data[4] << 20) + (data[5] << 12) + (data[6] << 4) + (data[7] >> 4); - switch ((data[2] << 4) | (data[3] >> 4)) { + type = (data[2] << 4) | (data[3] >> 4); + switch (type) { case 0x812: /* Inking pen */ case 0x801: /* Intuos3 Inking pen */ case 0x012: @@ -470,7 +471,7 @@ static int wacom_intuos_inout(struct urb *urb) default: /* Unknown tool */ wacom->tool[idx] = BTN_TOOL_PEN; } - input_report_key(dev, wacom->tool[idx], 1); + input_report_key(dev, wacom->tool[idx], type); input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); input_sync(dev); return 1; diff --git a/src/wcmCommon.c b/src/wcmCommon.c index 2a3dc76..1383d69 100644 --- a/src/wcmCommon.c +++ b/src/wcmCommon.c @@ -475,11 +475,13 @@ void xf86WcmSendEvents(LocalDevicePtr local, const WacomDeviceState* ds, unsigne rx = x - priv->oldX; ry = y - priv->oldY; + rz = z - priv->oldZ; } else { rx = 0; ry = 0; + rz = z; } /* don't apply speed for fairly small increments */ @@ -516,7 +518,6 @@ void xf86WcmSendEvents(LocalDevicePtr local, const WacomDeviceState* ds, unsigne } ry *= param; } - rz = z - priv->oldZ; rtx = tx - priv->oldTiltX; rty = ty - priv->oldTiltY; rrot = rot - priv->oldRot; diff --git a/src/wcmISDV4.c b/src/wcmISDV4.c index 07fe261..e6f9581 100644 --- a/src/wcmISDV4.c +++ b/src/wcmISDV4.c @@ -249,6 +249,12 @@ static int isdv4Parse(WacomCommonPtr common, const unsigned char* data) } } + /* don't send button 3 event for eraser + * button 1 event will be sent by testing presure level + */ + if (ds->device_type == ERASER_ID && ds->buttons&4) + ds->buttons = 0; + DBG(8, ErrorF("isdv4Parse %s\n", ds->device_type == ERASER_ID ? "ERASER " : ds->device_type == STYLUS_ID ? "STYLUS" : "NONE")); diff --git a/src/wcmSerial.c b/src/wcmSerial.c index f956e70..bc615b6 100644 --- a/src/wcmSerial.c +++ b/src/wcmSerial.c @@ -596,7 +596,7 @@ static int serialParseGraphire(WacomCommonPtr common, const unsigned char* data) ((data[6]&ZAXIS_SIGN_BIT) ? 0 : 0x100); /* get buttons */ - ds->buttons = (data[3] & 0x38) >> 3; + ds->buttons = (data[3] & BUTTONS_BITS) >> 3; /* requires button info, so it goes down here. */ serialParseP4Common(common,data,last,ds); @@ -645,7 +645,7 @@ static int serialParseCintiq(WacomCommonPtr common, const unsigned char* data) } /* get buttons */ - ds->buttons = (data[3] & 0x38) >> 3; + ds->buttons = (data[3] & BUTTONS_BITS) >> 3; /* requires button info, so it goes down here. */ serialParseP4Common(common,data,last,ds); @@ -1248,7 +1248,7 @@ static void serialParseP4Common(WacomCommonPtr common, } /* first time into prox */ - if (!last->proximity && ds->proximity) + if (!last->proximity && ds->proximity) ds->device_type = cur_type; /* check on previous proximity */ else if (is_stylus && ds->proximity) @@ -1265,6 +1265,12 @@ static void serialParseP4Common(WacomCommonPtr common, } } + /* don't send button 3 event for eraser + * button 1 event will be sent by testing presure level + */ + if (ds->device_type == ERASER_ID && ds->buttons&4) + ds->buttons = 0; + DBG(8, ErrorF("serialParseP4Common %s\n", ds->device_type == CURSOR_ID ? "CURSOR" : ds->device_type == ERASER_ID ? "ERASER " : diff --git a/src/wcmUSB.c b/src/wcmUSB.c index 6fae2c9..89f732f 100644 --- a/src/wcmUSB.c +++ b/src/wcmUSB.c @@ -667,6 +667,8 @@ static void usbParseChannel(WacomCommonPtr common, int channel, int serial) { ds->device_type = STYLUS_ID; ds->proximity = (event->value != 0); + if (ds->proximity) + ds->device_id = event->value; DBG(6, ErrorF("USB stylus detected %x\n", event->code)); } @@ -674,8 +676,10 @@ static void usbParseChannel(WacomCommonPtr common, int channel, int serial) { ds->device_type = ERASER_ID; ds->proximity = (event->value != 0); - if (ds->proximity) + if (ds->proximity) { ds->proximity = ERASER_PROX; + ds->device_id = event->value; + } DBG(6, ErrorF("USB eraser detected %x\n", event->code)); } @@ -686,6 +690,8 @@ static void usbParseChannel(WacomCommonPtr common, int channel, int serial) event->code)); ds->device_type = CURSOR_ID; ds->proximity = (event->value != 0); + if (ds->proximity) + ds->device_id = event->value; } else if (event->code == BTN_TOOL_FINGER) { diff --git a/src/xf86Wacom.h b/src/xf86Wacom.h index cba0930..922de48 100644 --- a/src/xf86Wacom.h +++ b/src/xf86Wacom.h @@ -142,7 +142,7 @@ #define POINTER_BIT 0x20 #define PROXIMITY_BIT 0x40 #define BUTTON_FLAG 0x08 -#define BUTTONS_BITS 0x78 +#define BUTTONS_BITS 0x38 #define TILT_SIGN_BIT 0x40 #define TILT_BITS 0x3F |