diff options
Diffstat (limited to 'src/2.4.22/wacom.c')
-rw-r--r-- | src/2.4.22/wacom.c | 32 |
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]); } |