summaryrefslogtreecommitdiff
path: root/src/2.4.22/wacom.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/2.4.22/wacom.c')
-rw-r--r--src/2.4.22/wacom.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/2.4.22/wacom.c b/src/2.4.22/wacom.c
index a45a8b0..14ee058 100644
--- a/src/2.4.22/wacom.c
+++ b/src/2.4.22/wacom.c
@@ -87,6 +87,7 @@
* v1.30-j0.7.1 - added DTF720, DTU 710, G4
* v1.30-j0.7.3 - added DTF 521, I3 12x12, and I3 12x19
* v1.30-j0.7.5 - Support tablet buttons/keys
+ * v1.30-j0.7.7 - Support Intuos outbound tracking
*/
/*
@@ -117,7 +118,7 @@
/*
* Version Information
*/
-#define DRIVER_VERSION "v1.30-j0.7.5"
+#define DRIVER_VERSION "v1.30-j0.7.7"
#define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@suse.cz>"
#ifndef __JEJ_DEBUG
#define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver (LINUXWACOM)"
@@ -442,10 +443,12 @@ static void wacom_graphire_irq(struct urb *urb)
rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3);
input_report_rel(dev, REL_WHEEL, rw);
input_report_key(dev, BTN_TOOL_FINGER, 0xf0);
+ input_report_abs(dev, ABS_MISC, PAD_DEVICE_ID);
input_event(dev, EV_MSC, MSC_SERIAL, 0xf0);
} else if ( wacom->id[1] ) {
wacom->id[1] = 0;
input_report_key(dev, BTN_TOOL_FINGER, 0);
+ input_report_abs(dev, ABS_MISC, PAD_DEVICE_ID);
input_event(dev, EV_MSC, MSC_SERIAL, 0xf0);
}
}
@@ -524,14 +527,6 @@ static int wacom_intuos_inout(struct urb *urb)
default: /* Unknown tool */
wacom->tool[idx] = BTN_TOOL_PEN; break;
}
- if(!((wacom->tool[idx] == BTN_TOOL_LENS) &&
- (strstr(wacom->features->name, "Intuos3 12x12")
- || strstr(wacom->features->name, "Intuos3 12x19"))))
- {
- input_report_abs(dev, ABS_MISC, wacom->id[idx]); /* report tool id */
- input_report_key(dev, wacom->tool[idx], 1);
- input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]);
- }
return 1;
}
@@ -543,12 +538,7 @@ static int wacom_intuos_inout(struct urb *urb)
input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]);
return 1;
}
-
- if((wacom->tool[idx] == BTN_TOOL_LENS) && (strstr(wacom->features->name, "Intuos3 12x12")
- || strstr(wacom->features->name, "Intuos3 12x19")))
- return 1;
- else
- return 0;
+ return 0;
}
static void wacom_intuos_general(struct urb *urb)
@@ -628,6 +618,7 @@ static void wacom_intuos_irq(struct urb *urb)
input_report_key(dev, wacom->tool[1], 1);
else
input_report_key(dev, wacom->tool[1], 0);
+ input_report_abs(dev, ABS_MISC, PAD_DEVICE_ID);
input_event(dev, EV_MSC, MSC_SERIAL, 0xffffffff);
return;
}
@@ -721,8 +712,15 @@ static void wacom_intuos_irq(struct urb *urb)
}
}
- input_report_abs(dev, ABS_MISC, wacom->id[idx]); /* report tool id */
- input_report_key(dev, wacom->tool[idx], 1);
+ input_report_abs(dev, ABS_MISC, wacom->id[idx]);
+
+ /* Only large I3 supports Lens Cursor
+ * Report in-prox only when RDY is set
+ */
+ if((!((wacom->tool[idx] == BTN_TOOL_LENS) && (strstr(wacom->features->name, "Intuos3 12x12")
+ || strstr(wacom->features->name, "Intuos3 12x19"))))
+ && (data[1] & 0x40))
+ input_report_key(dev, wacom->tool[idx], 1);
input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]);
}