diff options
author | pingc <pingc> | 2007-11-12 19:32:43 +0000 |
---|---|---|
committer | pingc <pingc> | 2007-11-12 19:32:43 +0000 |
commit | 6f65a53cde6be39012e69546fdc44a7eb9ac9191 (patch) | |
tree | e6b550495f2aa538d867f5e6119af3769c5061bf | |
parent | 16dc273e8b4317d5e40f8dcdcde57f3551284122 (diff) | |
download | xf86-input-wacom-release-0_7_9-2.tar.gz |
Support BambooFun, Bamboo1, and Hummingbirdrelease-0_7_9-2release-0.7.9-2
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | acinclude.m4 | 26 | ||||
-rw-r--r-- | src/2.4.22/wacom.c | 160 | ||||
-rw-r--r-- | src/2.4.30x86-64/wacom.c | 161 | ||||
-rw-r--r-- | src/2.4/wacom.c | 156 | ||||
-rw-r--r-- | src/2.6.10/wacom.c | 22 | ||||
-rwxr-xr-x | src/2.6.11/wacom.h | 3 | ||||
-rwxr-xr-x | src/2.6.11/wacom_sys.c | 6 | ||||
-rwxr-xr-x | src/2.6.13/wacom.h | 4 | ||||
-rwxr-xr-x | src/2.6.13/wacom_sys.c | 6 | ||||
-rwxr-xr-x | src/2.6.15/wacom_sys.c | 6 | ||||
-rw-r--r-- | src/2.6.16/wacom.h | 3 | ||||
-rw-r--r-- | src/2.6.16/wacom_sys.c | 6 | ||||
-rw-r--r-- | src/2.6.16/wacom_wac.c | 23 | ||||
-rw-r--r-- | src/2.6.16/wacom_wac.h | 1 | ||||
-rw-r--r-- | src/2.6.18/wacom.h | 3 | ||||
-rwxr-xr-x | src/2.6.19/wacom.h | 3 | ||||
-rwxr-xr-x | src/2.6.19/wacom_sys.c | 6 | ||||
-rwxr-xr-x | src/2.6.19/wacom_wac.c | 23 | ||||
-rwxr-xr-x | src/2.6.22/wacom_sys.c | 6 | ||||
-rwxr-xr-x | src/2.6.22/wacom_wac.h | 1 | ||||
-rw-r--r-- | src/2.6.8/wacom.c | 32 | ||||
-rw-r--r-- | src/2.6.9/wacom.c | 22 | ||||
-rwxr-xr-x | src/util/xsetwacom.c | 8 | ||||
-rwxr-xr-x | src/wacomxi/wacomcpl-exec | 34 | ||||
-rwxr-xr-x | src/xdrv/Makefile.am | 2 | ||||
-rwxr-xr-x | src/xdrv/wcmUSB.c | 45 | ||||
-rwxr-xr-x | src/xdrv/xf86Wacom.c | 50 |
28 files changed, 515 insertions, 311 deletions
@@ -1,3 +1,11 @@ +2007-11-12 Ping Cheng <pingc@wacom.com> + * Support legacy kernels + * Label 0.7.9-2 + +2007-11-08 Ping Cheng <pingc@wacom.com> + * Added support for BambooFun, Bamboo1 and Hummingbird + * Support multimonitors horizontally and vertically in the same configuration + 2007-10-24 Ping Cheng <pingc@wacom.com> * Added support for 2.6.22 * Temporary workaround for Xorg 7.3 (Magnus and Ron) diff --git a/acinclude.m4 b/acinclude.m4 index cc6693f..c695830 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -361,25 +361,21 @@ AS_HELP_STRING([--with-xlib=dir], [uses a specified X11R6 directory]), dnl handle default case AC_MSG_CHECKING(for X lib directory) -if test "$WCM_XLIBDIR" == "" || test "$WCM_XLIBDIR" == "yes"; then - if test -f $WCM_XLIBDIR_DEFAULT2/libX11.so; then - WCM_ENV_XLIB=yes - WCM_XLIBDIR=$WCM_XLIBDIR_DEFAULT2 - AC_MSG_RESULT(found) - elif test -d $WCM_XLIBDIR_DEFAULT/X11 || + +if test -d $WCM_XLIBDIR && test -f $WCM_XLIBDIR/libX11.so; then + WCM_ENV_XLIB=yes + AC_MSG_RESULT(found) +elif test -f $WCM_XLIBDIR_DEFAULT2/libX11.so; then + WCM_ENV_XLIB=yes + WCM_XLIBDIR=$WCM_XLIBDIR_DEFAULT2 + AC_MSG_RESULT(found) +elif test -d $WCM_XLIBDIR_DEFAULT/X11 || test -d $WCM_XLIBDIR_DEFAULT; then - WCM_ENV_XLIB=yes - WCM_XLIBDIR=$WCM_XLIBDIR_DEFAULT - AC_MSG_RESULT(found) - else - AC_MSG_RESULT([not found, tried $WCM_XLIBDIR_DEFAULT/X11 and $WCM_XLIBDIR_DEFAULT2]) - WCM_ENV_XLIB=no - fi -elif test -d $WCM_XLIBDIR; then WCM_ENV_XLIB=yes + WCM_XLIBDIR=$WCM_XLIBDIR_DEFAULT AC_MSG_RESULT(found) else - AC_MSG_RESULT([not found, tried $WCM_XLIBDIR]) + AC_MSG_RESULT([not found, tried $WCM_XLIBDIR_DEFAULT/X11 and $WCM_XLIBDIR_DEFAULT2]) WCM_ENV_XLIB=no fi ]) diff --git a/src/2.4.22/wacom.c b/src/2.4.22/wacom.c index a812240..6ad899a 100644 --- a/src/2.4.22/wacom.c +++ b/src/2.4.22/wacom.c @@ -89,6 +89,7 @@ * v1.30-j0.7.5 - Support tablet buttons/keys * v1.30-j0.7.7 - Support Intuos outbound tracking * v1.30-j0.7.8 - Added Bamboo + * v1.30-j0.7.9 - added Bamboo1, Bamboo Fun, and Hummingbird */ /* @@ -119,7 +120,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.30-j0.7.8" +#define DRIVER_VERSION "v1.30-j0.7.9" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@suse.cz>" #ifndef __JEJ_DEBUG #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver (LINUXWACOM)" @@ -662,10 +663,12 @@ static void wacom_intuos_irq(struct urb *urb) input_report_key(dev, BTN_5, (data[6] & 0x02)); input_report_key(dev, BTN_6, (data[6] & 0x04)); input_report_key(dev, BTN_7, (data[6] & 0x08)); + input_report_key(dev, BTN_8, (data[5] & 0x10)); + input_report_key(dev, BTN_9, (data[6] & 0x10)); input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) input_report_key(dev, wacom->tool[1], 1); else @@ -712,13 +715,11 @@ static void wacom_intuos_irq(struct urb *urb) if(strstr(wacom->features->name, "Intuos3") || strstr(wacom->features->name, "Cintiq")) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = ((__u32)data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - input_report_abs(dev, ABS_WHEEL, t); + input_report_abs(dev, ABS_Z, t); } else { @@ -786,141 +787,156 @@ static void wacom_intuos_irq(struct urb *urb) #define WACOM_INTUOS_BUTTONS (BIT(BTN_SIDE) | BIT(BTN_EXTRA)) #define WACOM_INTUOS3S_BUTTONS (WACOM_INTUOS_BUTTONS | BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3)) #define WACOM_INTUOS3_BUTTONS (WACOM_INTUOS3S_BUTTONS | BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7)) +#define WACOM_BEE_BUTTONS (WACOM_INTUOS3_BUTTONS | BIT(BTN_8) | BIT(BTN_9)) #define WACOM_INTUOS_BITS (BIT(EV_REL)) #define WACOM_INTUOS_REL (BIT(REL_WHEEL)) #define WACOM_INTUOS_ABS (BIT(ABS_TILT_X) | BIT(ABS_TILT_Y) | BIT(ABS_RZ) | BIT(ABS_THROTTLE)) -#define WACOM_INTUOS3S_ABS (WACOM_INTUOS_ABS | BIT(ABS_RX)) +#define WACOM_INTUOS3S_ABS (WACOM_INTUOS_ABS | BIT(ABS_RX) | BIT(ABS_Z)) #define WACOM_INTUOS3_ABS (WACOM_INTUOS3S_ABS | BIT(ABS_RY)) struct wacom_features wacom_features[] = { /* PenPartner */ - /* 0 */ { "Wacom Penpartner", 7, 5040, 3780, 255, 32, + /* 0 */ { "Wacom Penpartner", 7, 5040, 3780, 255, 0, wacom_penpartner_irq, 0, 0, 0, 0 }, /* Graphire */ - /* 1 */ { "Wacom Graphire", 8, 10206, 7422, 511, 32, + /* 1 */ { "Wacom Graphire", 8, 10206, 7422, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 2 */ { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 32, + /* 2 */ { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 3 */ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 32, + /* 3 */ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, /* Intuos */ - /* 4 */ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 15, + /* 4 */ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from test tablet */ - /* 5 */ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 15, + /* 5 */ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 6 */ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 15, + /* 6 */ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 7 */ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 15, + /* 7 */ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 8 */ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 15, + /* 8 */ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* PL - Cintiq */ - /* 9 */ { "Wacom PL400", 8, 5408, 4056, 255, 32, + /* 9 */ { "Wacom PL400", 8, 5408, 4056, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 10 */ { "Wacom PL500", 8, 6144, 4608, 255, 32, + /* 10 */ { "Wacom PL500", 8, 6144, 4608, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 11 */ { "Wacom PL600", 8, 6126, 4604, 255, 32, + /* 11 */ { "Wacom PL600", 8, 6126, 4604, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 12 */ { "Wacom PL600SX", 8, 6260, 5016, 255, 32, + /* 12 */ { "Wacom PL600SX", 8, 6260, 5016, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 13 */ { "Wacom PL550", 8, 6144, 4608, 511, 32, + /* 13 */ { "Wacom PL550", 8, 6144, 4608, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 14 */ { "Wacom PL800", 8, 7220, 5780, 511, 32, + /* 14 */ { "Wacom PL800", 8, 7220, 5780, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 15 */ { "Wacom PL700", 8, 6758, 5406, 511, 32, + /* 15 */ { "Wacom PL700", 8, 6758, 5406, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 16 */ { "Wacom PL510", 8, 6282, 4762, 511, 32, + /* 16 */ { "Wacom PL510", 8, 6282, 4762, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 17 */ { "Wacom DTU710", 8, 34080, 27660, 511, 32, + /* 17 */ { "Wacom DTU710", 8, 34080, 27660, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, /* Intuos2 */ /* JEJ - confirmed X and Y range from J.N. tablet */ - /* 18 */ { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 15, + /* 18 */ { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from R.T. and J.S. tablets */ - /* 19 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 15, + /* 19 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - values from serial 9x12 */ - /* 20 */ { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 15, + /* 20 */ { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from J.J. tablet */ - /* 21 */ { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 15, + /* 21 */ { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 22 */ { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 15, + /* 22 */ { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* Volito1 */ - /* 23 */ { "Wacom Volito1", 8, 5104, 3712, 511, 32, + /* 23 */ { "Wacom Volito1", 8, 5104, 3712, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, /* Volito2 - PenPartner - PenStation */ - /* 24 */ { "Wacom PenStation2", 8, 3250, 2320, 255, 32, + /* 24 */ { "Wacom PenStation2", 8, 3250, 2320, 255, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 25 */ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 32, + /* 25 */ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 26 */ { "Wacom Volito2 2x3", 8, 3250, 2320, 511, 32, + /* 26 */ { "Wacom Volito2 2x3", 8, 3250, 2320, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 27 */ { "Wacom PenPartner2", 8, 3250, 2320, 511, 32, + /* 27 */ { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 28 */ { "Wacom Bamboo", 9, 14760, 9225, 511, 32, + /* 28 */ { "Wacom Bamboo", 9, 14760, 9225, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, - /* 29 */ { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 32, + /* 29 */ { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, + /* 30 */ { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 30 */ { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 32, + /* 31 */ { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 31 */ { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 32, + /* 32 */ { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, WACOM_G4_BUTTONS, WACOM_G4_TOOLS }, - /* 32 */ { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 32, + /* 33 */ { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, WACOM_G4_BUTTONS, WACOM_G4_TOOLS }, - /* 33 */ { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 32, + /* 34 */ { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, + WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, + /* 35 */ { "Wacom BambooFun 6x8", 9, 21648,13530, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, + WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, + /* 36 */ { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 31, wacom_ptu_irq, 0, 0, 0, 0 }, /* Intuos3 */ - /* 34 */ { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 15, + /* 37 */ { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3S_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3S_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 35 */ { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 15, - wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, - WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 36 */ { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 15, + /* 38 */ { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 37 */ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 15, + /* 39 */ { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 38 */ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 15, + /* 40 */ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 39 */ { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 15, + /* 41 */ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 40 */ { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 15, + /* 42 */ { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 43 */ { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3S_ABS, + WACOM_INTUOS_REL, WACOM_INTUOS3S_BUTTONS, WACOM_INTUOS3_TOOLS }, /* Protocol 5 Cintiq */ - /* 41 */ { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 15, + /* 44 */ { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, - WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 42 */ { "Wacom DTF720", 8, 6858, 5506, 511, 32, + 0, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 45 */ { "Wacom Cintiq 12UX", 10, 53020, 33440, 1023, 63, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, + 0, WACOM_BEE_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 46 */ { "Wacom DTF720", 8, 6858, 5506, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 43 */ { "Wacom DTF521", 8, 6282, 4762, 511, 32, + /* 47 */ { "Wacom DTF521", 8, 6282, 4762, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, + /* 48 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, + WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, { NULL , 0 } }; @@ -954,21 +970,25 @@ struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63), driver_info: 26 }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64), driver_info: 27 }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65), driver_info: 28 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13), driver_info: 29 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14), driver_info: 30 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15), driver_info: 31 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16), driver_info: 32 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03), driver_info: 33 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0), driver_info: 34 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1), driver_info: 35 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2), driver_info: 36 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3), driver_info: 37 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4), driver_info: 38 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5), driver_info: 39 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7), driver_info: 40 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F), driver_info: 41 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0), driver_info: 42 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4), driver_info: 43 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69), driver_info: 29 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13), driver_info: 30 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14), driver_info: 31 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15), driver_info: 32 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16), driver_info: 33 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17), driver_info: 34 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18), driver_info: 35 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03), driver_info: 36 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0), driver_info: 37 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1), driver_info: 38 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2), driver_info: 39 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3), driver_info: 40 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4), driver_info: 41 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5), driver_info: 42 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7), driver_info: 43 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F), driver_info: 44 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6), driver_info: 45 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0), driver_info: 46 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4), driver_info: 47 }, /* some Intuos2 6x8's erroneously report as 0x47; * multiple confirmed examples exist. */ @@ -1061,6 +1081,8 @@ static void *wacom_probe(struct usb_device *dev, unsigned int ifnum, const struc wacom->dev.absmax[ABS_RZ] = 899; wacom->dev.absmin[ABS_THROTTLE] = -1023; wacom->dev.absmax[ABS_THROTTLE] = 1023; + wacom->dev.absmin[ABS_Z] = -900; + wacom->dev.absmax[ABS_Z] = 899; wacom->dev.absfuzz[ABS_X] = 4; wacom->dev.absfuzz[ABS_Y] = 4; diff --git a/src/2.4.30x86-64/wacom.c b/src/2.4.30x86-64/wacom.c index f09b9fe..f56c294 100644 --- a/src/2.4.30x86-64/wacom.c +++ b/src/2.4.30x86-64/wacom.c @@ -58,6 +58,7 @@ * v2.4.30-pc0.7.5 - Support tablet buttons/keys * v2.4.30-pc0.7.7 - Support Intuos outbound tracking * v2.4.30-pc0.7.8 - Added Bamboo + * v2.4.30-pc0.7.9 - Added Bamboo1, Bamboo Fun, and Hummingbird */ /* @@ -88,7 +89,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v2.4.30-pc0.7.8" +#define DRIVER_VERSION "v2.4.30-pc0.7.9" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@suse.cz>" #ifndef __JEJ_DEBUG #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver (LINUXWACOM)" @@ -604,10 +605,12 @@ static void wacom_intuos_irq(struct urb *urb) input_report_key(dev, BTN_5, (data[6] & 0x02)); input_report_key(dev, BTN_6, (data[6] & 0x04)); input_report_key(dev, BTN_7, (data[6] & 0x08)); + input_report_key(dev, BTN_8, (data[5] & 0x10)); + input_report_key(dev, BTN_9, (data[6] & 0x10)); input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) input_report_key(dev, wacom->tool[1], 1); else @@ -654,13 +657,11 @@ static void wacom_intuos_irq(struct urb *urb) if(strstr(wacom->features->name, "Intuos3") || strstr(wacom->features->name, "Cintiq")) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = ((__u32)data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - input_report_abs(dev, ABS_WHEEL, t); + input_report_abs(dev, ABS_Z, t); } else { @@ -728,142 +729,156 @@ static void wacom_intuos_irq(struct urb *urb) #define WACOM_INTUOS_BUTTONS (BIT(BTN_SIDE) | BIT(BTN_EXTRA)) #define WACOM_INTUOS3S_BUTTONS (WACOM_INTUOS_BUTTONS | BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3)) #define WACOM_INTUOS3_BUTTONS (WACOM_INTUOS3S_BUTTONS | BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7)) +#define WACOM_BEE_BUTTONS (WACOM_INTUOS3_BUTTONS | BIT(BTN_8) | BIT(BTN_9)) #define WACOM_INTUOS_BITS (BIT(EV_REL)) #define WACOM_INTUOS_REL (BIT(REL_WHEEL)) #define WACOM_INTUOS_ABS (BIT(ABS_TILT_X) | BIT(ABS_TILT_Y) | BIT(ABS_RZ) | BIT(ABS_THROTTLE)) -#define WACOM_INTUOS3S_ABS (WACOM_INTUOS_ABS | BIT(ABS_RX)) +#define WACOM_INTUOS3S_ABS (WACOM_INTUOS_ABS | BIT(ABS_RX) | BIT(ABS_Z)) #define WACOM_INTUOS3_ABS (WACOM_INTUOS3S_ABS | BIT(ABS_RY)) struct wacom_features wacom_features[] = { /* PenPartner */ - /* 0 */ { "Wacom Penpartner", 7, 5040, 3780, 255, 32, + /* 0 */ { "Wacom Penpartner", 7, 5040, 3780, 255, 0, wacom_penpartner_irq, 0, 0, 0, 0 }, /* Graphire */ - /* 1 */ { "Wacom Graphire", 8, 10206, 7422, 511, 32, + /* 1 */ { "Wacom Graphire", 8, 10206, 7422, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 2 */ { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 32, + /* 2 */ { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 3 */ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 32, + /* 3 */ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, /* Intuos */ - /* 4 */ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 15, + /* 4 */ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from test tablet */ - /* 5 */ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 15, + /* 5 */ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 6 */ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 15, + /* 6 */ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 7 */ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 15, + /* 7 */ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 8 */ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 15, + /* 8 */ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* PL - Cintiq */ - /* 9 */ { "Wacom PL400", 8, 5408, 4056, 255, 32, + /* 9 */ { "Wacom PL400", 8, 5408, 4056, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 10 */ { "Wacom PL500", 8, 6144, 4608, 255, 32, + /* 10 */ { "Wacom PL500", 8, 6144, 4608, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 11 */ { "Wacom PL600", 8, 6126, 4604, 255, 32, + /* 11 */ { "Wacom PL600", 8, 6126, 4604, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 12 */ { "Wacom PL600SX", 8, 6260, 5016, 255, 32, + /* 12 */ { "Wacom PL600SX", 8, 6260, 5016, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 13 */ { "Wacom PL550", 8, 6144, 4608, 511, 32, + /* 13 */ { "Wacom PL550", 8, 6144, 4608, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 14 */ { "Wacom PL800", 8, 7220, 5780, 511, 32, + /* 14 */ { "Wacom PL800", 8, 7220, 5780, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 15 */ { "Wacom PL700", 8, 6758, 5406, 511, 32, + /* 15 */ { "Wacom PL700", 8, 6758, 5406, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 16 */ { "Wacom PL510", 8, 6282, 4762, 511, 32, + /* 16 */ { "Wacom PL510", 8, 6282, 4762, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 17 */ { "Wacom DTU710", 8, 34080, 27660, 511, 32, + /* 17 */ { "Wacom DTU710", 8, 34080, 27660, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, /* Intuos2 */ /* JEJ - confirmed X and Y range from J.N. tablet */ - /* 18 */ { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 15, + /* 18 */ { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from R.T. and J.S. tablets */ - /* 19 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 15, + /* 19 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - values from serial 9x12 */ - /* 20 */ { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 15, + /* 20 */ { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from J.J. tablet */ - /* 21 */ { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 15, + /* 21 */ { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 22 */ { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 15, + /* 22 */ { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* Volito1 */ - /* 23 */ { "Wacom Volito1", 8, 5104, 3712, 511, 32, + /* 23 */ { "Wacom Volito1", 8, 5104, 3712, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, /* Volito2 - PenPartner - PenStation */ - /* 24 */ { "Wacom PenStation2", 8, 3250, 2320, 255, 32, + /* 24 */ { "Wacom PenStation2", 8, 3250, 2320, 255, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 25 */ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 32, + /* 25 */ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 26 */ { "Wacom Volito2 2x3", 8, 3250, 2320, 511, 32, + /* 26 */ { "Wacom Volito2 2x3", 8, 3250, 2320, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 27 */ { "Wacom PenPartner2", 8, 3250, 2320, 511, 32, + /* 27 */ { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 28 */ { "Wacom Bamboo", 9, 14760, 9225, 511, 32, + /* 28 */ { "Wacom Bamboo", 9, 14760, 9225, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, - /* 29 */ { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 32, + /* 29 */ { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, + /* 30 */ { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 30 */ { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 32, + /* 31 */ { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 31 */ { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 32, - wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, + /* 32 */ { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, WACOM_G4_BUTTONS, WACOM_G4_TOOLS }, - /* 32 */ { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 32, - wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, + /* 33 */ { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, WACOM_G4_BUTTONS, WACOM_G4_TOOLS }, - /* 33 */ { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 32, + /* 34 */ { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, + WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, + /* 35 */ { "Wacom BambooFun 6x8", 9, 21648,13530, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, + WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, + /* 36 */ { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 31, wacom_ptu_irq, 0, 0, 0, 0 }, /* Intuos3 */ - /* 34 */ { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 15, + /* 37 */ { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3S_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3S_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 35 */ { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 15, + /* 38 */ { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 36 */ { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 15, + /* 39 */ { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 37 */ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 15, + /* 40 */ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 38 */ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 15, + /* 41 */ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 39 */ { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 15, + /* 42 */ { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 40 */ { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 15, + /* 43 */ { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3S_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3S_BUTTONS, WACOM_INTUOS3_TOOLS }, /* Protocol 5 Cintiq */ - /* 41 */ { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 15, + /* 44 */ { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, - WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 42 */ { "Wacom DTF720", 8, 6858, 5506, 511, 32, + 0, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 45 */ { "Wacom Cintiq 12UX", 10, 53020, 33440, 1023, 63, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, + 0, WACOM_BEE_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 46 */ { "Wacom DTF720", 8, 6858, 5506, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 43 */ { "Wacom DTF521", 8, 6282, 4762, 511, 32, + /* 47 */ { "Wacom DTF521", 8, 6282, 4762, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - + /* 48 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, + WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, { NULL , 0 } }; @@ -897,21 +912,25 @@ struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63), driver_info: 26 }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64), driver_info: 27 }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65), driver_info: 28 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13), driver_info: 29 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14), driver_info: 30 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15), driver_info: 31 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16), driver_info: 32 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03), driver_info: 33 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0), driver_info: 34 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1), driver_info: 35 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2), driver_info: 36 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3), driver_info: 37 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4), driver_info: 38 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5), driver_info: 39 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7), driver_info: 40 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F), driver_info: 41 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0), driver_info: 42 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4), driver_info: 43 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69), driver_info: 29 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13), driver_info: 30 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14), driver_info: 31 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15), driver_info: 32 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16), driver_info: 33 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17), driver_info: 34 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18), driver_info: 35 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03), driver_info: 36 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0), driver_info: 37 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1), driver_info: 38 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2), driver_info: 39 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3), driver_info: 40 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4), driver_info: 41 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5), driver_info: 42 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7), driver_info: 43 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F), driver_info: 44 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6), driver_info: 45 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0), driver_info: 46 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4), driver_info: 47 }, /* some Intuos2 6x8's erroneously report as 0x47; * multiple confirmed examples exist. */ @@ -1004,6 +1023,8 @@ static void *wacom_probe(struct usb_device *dev, unsigned int ifnum, const struc wacom->dev.absmax[ABS_RZ] = 899; wacom->dev.absmin[ABS_THROTTLE] = -1023; wacom->dev.absmax[ABS_THROTTLE] = 1023; + wacom->dev.absmin[ABS_Z] = -900; + wacom->dev.absmax[ABS_Z] = 899; wacom->dev.absfuzz[ABS_X] = 4; wacom->dev.absfuzz[ABS_Y] = 4; diff --git a/src/2.4/wacom.c b/src/2.4/wacom.c index 01e8214..a5a30a3 100644 --- a/src/2.4/wacom.c +++ b/src/2.4/wacom.c @@ -89,6 +89,7 @@ * v1.30-j0.7.5 - Support tablet buttons/keys * v1.30-j0.7.7 - Support Intuos outbound tracking * v1.30-j0.7.8 - Added Bamboo + * v1.30-j0.7.9 - added Bamboo1, Bamboo Fun, and Hummingbird */ /* @@ -119,7 +120,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.30-j0.7.8" +#define DRIVER_VERSION "v1.30-j0.7.9" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@suse.cz>" #ifndef __JEJ_DEBUG #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver (LINUXWACOM)" @@ -660,10 +661,12 @@ static void wacom_intuos_irq(struct urb *urb) input_report_key(dev, BTN_5, (data[6] & 0x02)); input_report_key(dev, BTN_6, (data[6] & 0x04)); input_report_key(dev, BTN_7, (data[6] & 0x08)); + input_report_key(dev, BTN_8, (data[5] & 0x10)); + input_report_key(dev, BTN_9, (data[6] & 0x10)); input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) input_report_key(dev, wacom->tool[1], 1); else @@ -710,13 +713,11 @@ static void wacom_intuos_irq(struct urb *urb) if(strstr(wacom->features->name, "Intuos3") || strstr(wacom->features->name, "Cintiq")) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = ((__u32)data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - input_report_abs(dev, ABS_WHEEL, t); + input_report_abs(dev, ABS_Z, t); } else { @@ -785,141 +786,156 @@ static void wacom_intuos_irq(struct urb *urb) #define WACOM_INTUOS_BUTTONS (BIT(BTN_SIDE) | BIT(BTN_EXTRA)) #define WACOM_INTUOS3S_BUTTONS (WACOM_INTUOS_BUTTONS | BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3)) #define WACOM_INTUOS3_BUTTONS (WACOM_INTUOS3S_BUTTONS | BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7)) +#define WACOM_BEE_BUTTONS (WACOM_INTUOS3_BUTTONS | BIT(BTN_8) | BIT(BTN_9)) #define WACOM_INTUOS_BITS (BIT(EV_REL)) #define WACOM_INTUOS_REL (BIT(REL_WHEEL)) #define WACOM_INTUOS_ABS (BIT(ABS_TILT_X) | BIT(ABS_TILT_Y) | BIT(ABS_RZ) | BIT(ABS_THROTTLE)) -#define WACOM_INTUOS3S_ABS (WACOM_INTUOS_ABS | BIT(ABS_RX)) +#define WACOM_INTUOS3S_ABS (WACOM_INTUOS_ABS | BIT(ABS_RX) | BIT(ABS_Z)) #define WACOM_INTUOS3_ABS (WACOM_INTUOS3S_ABS | BIT(ABS_RY)) struct wacom_features wacom_features[] = { /* PenPartner */ - /* 0 */ { "Wacom Penpartner", 7, 5040, 3780, 255, 32, + /* 0 */ { "Wacom Penpartner", 7, 5040, 3780, 255, 0, wacom_penpartner_irq, 0, 0, 0, 0 }, /* Graphire */ - /* 1 */ { "Wacom Graphire", 8, 10206, 7422, 511, 32, + /* 1 */ { "Wacom Graphire", 8, 10206, 7422, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 2 */ { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 32, + /* 2 */ { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 3 */ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 32, + /* 3 */ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, /* Intuos */ - /* 4 */ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 15, + /* 4 */ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from test tablet */ - /* 5 */ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 15, + /* 5 */ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 6 */ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 15, + /* 6 */ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 7 */ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 15, + /* 7 */ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 8 */ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 15, + /* 8 */ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* PL - Cintiq */ - /* 9 */ { "Wacom PL400", 8, 5408, 4056, 255, 32, + /* 9 */ { "Wacom PL400", 8, 5408, 4056, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 10 */ { "Wacom PL500", 8, 6144, 4608, 255, 32, + /* 10 */ { "Wacom PL500", 8, 6144, 4608, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 11 */ { "Wacom PL600", 8, 6126, 4604, 255, 32, + /* 11 */ { "Wacom PL600", 8, 6126, 4604, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 12 */ { "Wacom PL600SX", 8, 6260, 5016, 255, 32, + /* 12 */ { "Wacom PL600SX", 8, 6260, 5016, 255, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 13 */ { "Wacom PL550", 8, 6144, 4608, 511, 32, + /* 13 */ { "Wacom PL550", 8, 6144, 4608, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 14 */ { "Wacom PL800", 8, 7220, 5780, 511, 32, + /* 14 */ { "Wacom PL800", 8, 7220, 5780, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 15 */ { "Wacom PL700", 8, 6758, 5406, 511, 32, + /* 15 */ { "Wacom PL700", 8, 6758, 5406, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 16 */ { "Wacom PL510", 8, 6282, 4762, 511, 32, + /* 16 */ { "Wacom PL510", 8, 6282, 4762, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 17 */ { "Wacom DTU710", 8, 34080, 27660, 511, 32, + /* 17 */ { "Wacom DTU710", 8, 34080, 27660, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, /* Intuos2 */ /* JEJ - confirmed X and Y range from J.N. tablet */ - /* 18 */ { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 15, + /* 18 */ { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from R.T. and J.S. tablets */ - /* 19 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 15, + /* 19 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - values from serial 9x12 */ - /* 20 */ { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 15, + /* 20 */ { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* JEJ - confirmed X and Y range from J.J. tablet */ - /* 21 */ { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 15, + /* 21 */ { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, - /* 22 */ { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 15, + /* 22 */ { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 31, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, /* Volito1 */ - /* 23 */ { "Wacom Volito1", 8, 5104, 3712, 511, 32, + /* 23 */ { "Wacom Volito1", 8, 5104, 3712, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, /* Volito2 - PenPartner - PenStation */ - /* 24 */ { "Wacom PenStation2", 8, 3250, 2320, 255, 32, + /* 24 */ { "Wacom PenStation2", 8, 3250, 2320, 255, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 25 */ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 32, + /* 25 */ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 26 */ { "Wacom Volito2 2x3", 8, 3250, 2320, 511, 32, + /* 26 */ { "Wacom Volito2 2x3", 8, 3250, 2320, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 27 */ { "Wacom PenPartner2", 8, 3250, 2320, 511, 32, + /* 27 */ { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, - /* 28 */ { "Wacom Bamboo", 9, 14760, 9225, 511, 32, + /* 28 */ { "Wacom Bamboo", 9, 14760, 9225, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, - /* 29 */ { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 32, + /* 29 */ { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, 0, 0 }, + /* 30 */ { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 30 */ { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 32, + /* 31 */ { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, 0 }, - /* 31 */ { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 32, + /* 32 */ { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, WACOM_G4_BUTTONS, WACOM_G4_TOOLS }, - /* 32 */ { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 32, + /* 33 */ { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, wacom_graphire_irq, WACOM_GRAPHIRE_BITS, 0, WACOM_GRAPHIRE_REL, WACOM_G4_BUTTONS, WACOM_G4_TOOLS }, - /* 33 */ { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 32, + /* 34 */ { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, + WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, + /* 35 */ { "Wacom BambooFun 6x8", 9, 21648,13530, 511, 63, + wacom_graphire_irq, WACOM_GRAPHIRE_BITS, WACOM_MO_ABS, + WACOM_GRAPHIRE_REL, WACOM_MO_BUTTONS, WACOM_G4_TOOLS }, + /* 36 */ { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 31, wacom_ptu_irq, 0, 0, 0, 0 }, /* Intuos3 */ - /* 34 */ { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 15, + /* 37 */ { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3S_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3S_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 35 */ { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 15, + /* 38 */ { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 36 */ { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 15, + /* 39 */ { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 37 */ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 15, + /* 40 */ { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 38 */ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 15, + /* 41 */ { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 39 */ { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 15, + /* 42 */ { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 40 */ { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 15, + /* 43 */ { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3S_ABS, WACOM_INTUOS_REL, WACOM_INTUOS3S_BUTTONS, WACOM_INTUOS3_TOOLS }, /* Protocol 5 Cintiq */ - /* 41 */ { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 15, + /* 44 */ { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, - WACOM_INTUOS_REL, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, - /* 42 */ { "Wacom DTF720", 8, 6858, 5506, 511, 32, + 0, WACOM_INTUOS3_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 45 */ { "Wacom Cintiq 12UX", 10, 53020, 33440, 1023, 63, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS3_ABS, + 0, WACOM_BEE_BUTTONS, WACOM_INTUOS3_TOOLS }, + /* 46 */ { "Wacom DTF720", 8, 6858, 5506, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, - /* 43 */ { "Wacom DTF521", 8, 6282, 4762, 511, 32, + /* 47 */ { "Wacom DTF521", 8, 6282, 4762, 511, 0, wacom_pl_irq, 0, 0, 0, 0 }, + /* 48 */ { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, + wacom_intuos_irq, WACOM_INTUOS_BITS, WACOM_INTUOS_ABS, + WACOM_INTUOS_REL, WACOM_INTUOS_BUTTONS, WACOM_INTUOS_TOOLS }, { NULL , 0 } }; @@ -953,21 +969,25 @@ struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63), driver_info: 26 }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64), driver_info: 27 }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65), driver_info: 28 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13), driver_info: 29 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14), driver_info: 30 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15), driver_info: 31 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16), driver_info: 32 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03), driver_info: 33 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0), driver_info: 34 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1), driver_info: 35 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2), driver_info: 36 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3), driver_info: 37 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4), driver_info: 38 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5), driver_info: 39 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7), driver_info: 40 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F), driver_info: 41 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0), driver_info: 42 }, - { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4), driver_info: 43 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69), driver_info: 29 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13), driver_info: 30 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14), driver_info: 31 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15), driver_info: 32 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16), driver_info: 33 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17), driver_info: 34 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18), driver_info: 35 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03), driver_info: 36 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0), driver_info: 37 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1), driver_info: 38 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB2), driver_info: 39 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB3), driver_info: 40 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB4), driver_info: 41 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5), driver_info: 42 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7), driver_info: 43 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F), driver_info: 44 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6), driver_info: 45 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0), driver_info: 46 }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4), driver_info: 47 }, /* some Intuos2 6x8's erroneously report as 0x47; * multiple confirmed examples exist. */ @@ -1060,6 +1080,8 @@ static void *wacom_probe(struct usb_device *dev, unsigned int ifnum, const struc wacom->dev.absmax[ABS_RZ] = 899; wacom->dev.absmin[ABS_THROTTLE] = -1023; wacom->dev.absmax[ABS_THROTTLE] = 1023; + wacom->dev.absmin[ABS_Z] = -900; + wacom->dev.absmax[ABS_Z] = 899; wacom->dev.absfuzz[ABS_X] = 4; wacom->dev.absfuzz[ABS_Y] = 4; diff --git a/src/2.6.10/wacom.c b/src/2.6.10/wacom.c index 1e58561..5724bb2 100644 --- a/src/2.6.10/wacom.c +++ b/src/2.6.10/wacom.c @@ -65,6 +65,7 @@ * v1.40-2.6.10-pc-0.8 - Support tablet buttons/keys * v1.40-2.6.10-pc-0.9 - Support Intuos outbound tracking * v1.40-2.6.10-pc-0.10 - Added Bamboo + * v1.40-2.6.10-pc-0.11 - added Bamboo1, Bamboo Fun, and Hummingbird */ /* @@ -86,7 +87,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.40 - 2.6.10-pc-0.10" +#define DRIVER_VERSION "v1.40 - 2.6.10-pc-0.11" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -113,6 +114,7 @@ enum { INTUOS3L, CINTIQ, MO, + BEE, MAX_TYPE }; @@ -724,10 +726,12 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_5, (data[6] & 0x02)); input_report_key(dev, BTN_6, (data[6] & 0x04)); input_report_key(dev, BTN_7, (data[6] & 0x08)); + input_report_key(dev, BTN_8, (data[5] & 0x10)); + input_report_key(dev, BTN_9, (data[6] & 0x10)); input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) input_report_key(dev, wacom->tool[1], 1); else @@ -773,13 +777,11 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) { if(wacom->features->type >= INTUOS3S) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = (data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - input_report_abs(dev, ABS_WHEEL, t); + input_report_abs(dev, ABS_Z, t); } else { @@ -847,6 +849,8 @@ static struct wacom_features wacom_features[] = { { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Graphire3 4x5", 8, 10208, 7424, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE, wacom_graphire_irq }, + { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, MO, wacom_graphire_irq }, + { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, MO, wacom_graphire_irq }, { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS, wacom_intuos_irq }, { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS, wacom_intuos_irq }, { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS, wacom_intuos_irq }, @@ -873,6 +877,7 @@ static struct wacom_features wacom_features[] = { { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Bamboo", 9, 14760, 9225, 511, 63, MO, wacom_graphire_irq }, + { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, G4, wacom_graphire_irq }, { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, G4, wacom_graphire_irq }, { "Wacom Cintiq Partner",8, 20480, 15360, 511, 0, PL, wacom_ptu_irq }, @@ -885,6 +890,7 @@ static struct wacom_features wacom_features[] = { { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S, wacom_intuos_irq }, { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ, wacom_intuos_irq }, { "Wacom DTF720", 8, 6858, 5506, 511, 0, PL, wacom_pl_irq }, + { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, BEE, wacom_intuos_irq }, { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS, wacom_intuos_irq }, { } }; @@ -896,6 +902,8 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x12) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x13) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, @@ -921,6 +929,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03) }, @@ -934,6 +943,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC0) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC4) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, { } }; diff --git a/src/2.6.11/wacom.h b/src/2.6.11/wacom.h index 0027e22..452ca8f 100755 --- a/src/2.6.11/wacom.h +++ b/src/2.6.11/wacom.h @@ -85,7 +85,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.46-pc0.1" +#define DRIVER_VERSION "v1.46-pc0.2" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -125,6 +125,7 @@ extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wa extern void input_dev_g(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac); +extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); diff --git a/src/2.6.11/wacom_sys.c b/src/2.6.11/wacom_sys.c index 5bcf90e..236f199 100755 --- a/src/2.6.11/wacom_sys.c +++ b/src/2.6.11/wacom_sys.c @@ -179,6 +179,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); + input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); } void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) @@ -187,6 +188,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); } +void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) +{ + input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); +} + void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { input_dev->evbit[0] |= BIT(EV_MSC) | BIT(EV_REL); diff --git a/src/2.6.13/wacom.h b/src/2.6.13/wacom.h index e4a0dbc..4d31b14 100755 --- a/src/2.6.13/wacom.h +++ b/src/2.6.13/wacom.h @@ -66,6 +66,7 @@ * v1.43-2.6.13.1-pc-0.3 - Support tablet buttons/keys * v1.43-2.6.13.1-pc-0.4 - Split wacom.c into 4 files * v1.43-2.6.13.1-pc-0.5 - added Bamboo + * v1.43-2.6.13.1-pc-0.6 - Added BambooFun and Hummingbird */ /* @@ -89,7 +90,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.43-2.6.13.1-pc-0.5" +#define DRIVER_VERSION "v1.43-2.6.13.1-pc-0.6" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -129,6 +130,7 @@ extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wa extern void input_dev_g(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac); +extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); diff --git a/src/2.6.13/wacom_sys.c b/src/2.6.13/wacom_sys.c index f6a8210..8b0e39c 100755 --- a/src/2.6.13/wacom_sys.c +++ b/src/2.6.13/wacom_sys.c @@ -179,6 +179,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); + input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); } void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) @@ -187,6 +188,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); } +void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) +{ + input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); +} + void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { input_dev->evbit[0] |= BIT(EV_MSC) | BIT(EV_REL); diff --git a/src/2.6.15/wacom_sys.c b/src/2.6.15/wacom_sys.c index 8fc1147..f7cd6f7 100755 --- a/src/2.6.15/wacom_sys.c +++ b/src/2.6.15/wacom_sys.c @@ -173,6 +173,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); + input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); } void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) @@ -181,6 +182,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); } +void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) +{ + input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); +} + void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { input_dev->evbit[0] |= BIT(EV_MSC) | BIT(EV_REL); diff --git a/src/2.6.16/wacom.h b/src/2.6.16/wacom.h index d1fd388..ea69208 100644 --- a/src/2.6.16/wacom.h +++ b/src/2.6.16/wacom.h @@ -86,7 +86,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.46-pc0.1" +#define DRIVER_VERSION "v1.46-pc0.2" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -125,6 +125,7 @@ extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wa extern void input_dev_g(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac); +extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); diff --git a/src/2.6.16/wacom_sys.c b/src/2.6.16/wacom_sys.c index 83d5339..9b577df 100644 --- a/src/2.6.16/wacom_sys.c +++ b/src/2.6.16/wacom_sys.c @@ -173,6 +173,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); + input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); } void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) @@ -181,6 +182,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); } +void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) +{ + input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); +} + void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { input_dev->evbit[0] |= BIT(EV_MSC) | BIT(EV_REL); diff --git a/src/2.6.16/wacom_wac.c b/src/2.6.16/wacom_wac.c index afca5a5..a440ca7 100644 --- a/src/2.6.16/wacom_wac.c +++ b/src/2.6.16/wacom_wac.c @@ -443,10 +443,12 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) wacom_report_key(wcombo, BTN_5, (data[6] & 0x02)); wacom_report_key(wcombo, BTN_6, (data[6] & 0x04)); wacom_report_key(wcombo, BTN_7, (data[6] & 0x08)); + wacom_report_key(wcombo, BTN_8, (data[5] & 0x10)); + wacom_report_key(wcombo, BTN_9, (data[6] & 0x10)); wacom_report_abs(wcombo, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); wacom_report_abs(wcombo, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) wacom_report_key(wcombo, wacom->tool[1], 1); else @@ -490,13 +492,11 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) if (data[1] & 0x02) { /* Rotation packet */ if (wacom->features->type >= INTUOS3S) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = (data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - wacom_report_abs(wcombo, ABS_WHEEL, t); + wacom_report_abs(wcombo, ABS_Z, t); } else { /* 4D mouse rotation packet */ t = (data[6] << 3) | ((data[7] >> 5) & 7); @@ -566,6 +566,7 @@ int wacom_wac_irq(struct wacom_wac *wacom_wac, void *wcombo) case INTUOS3: case INTUOS3L: case CINTIQ: + case WACOM_BEE: return (wacom_intuos_irq(wacom_wac, wcombo)); break; default: @@ -585,6 +586,8 @@ void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_w case GRAPHIRE: input_dev_g(input_dev, wacom_wac); break; + case WACOM_BEE: + input_dev_bee(input_dev, wacom_wac); case INTUOS3: case INTUOS3L: case CINTIQ: @@ -615,12 +618,15 @@ static struct wacom_features wacom_features[] = { { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, + { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, WACOM_MO }, + { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, WACOM_MO }, { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE }, { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE }, { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE }, { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE }, - { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE }, + { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, GRAPHIRE }, { "Wacom Bamboo", 9, 14760, 9225, 511, 63, WACOM_MO }, + { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE }, { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, @@ -651,6 +657,7 @@ static struct wacom_features wacom_features[] = { { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, + { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, WACOM_BEE }, { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, { } }; @@ -664,12 +671,15 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, @@ -700,6 +710,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, { } }; diff --git a/src/2.6.16/wacom_wac.h b/src/2.6.16/wacom_wac.h index 25b283f..974005d 100644 --- a/src/2.6.16/wacom_wac.h +++ b/src/2.6.16/wacom_wac.h @@ -25,6 +25,7 @@ enum { INTUOS3, INTUOS3L, CINTIQ, + WACOM_BEE, WACOM_MO, MAX_TYPE }; diff --git a/src/2.6.18/wacom.h b/src/2.6.18/wacom.h index 186438f..bd55e3f 100644 --- a/src/2.6.18/wacom.h +++ b/src/2.6.18/wacom.h @@ -84,7 +84,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.46-pc0.1" +#define DRIVER_VERSION "v1.46-pc0.2" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -123,6 +123,7 @@ extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wa extern void input_dev_g(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac); +extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); diff --git a/src/2.6.19/wacom.h b/src/2.6.19/wacom.h index be89750..1376b4a 100755 --- a/src/2.6.19/wacom.h +++ b/src/2.6.19/wacom.h @@ -84,7 +84,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.46-pc0.1" +#define DRIVER_VERSION "v1.46-pc0.2" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -121,6 +121,7 @@ extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wa extern void input_dev_g(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac); +extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); diff --git a/src/2.6.19/wacom_sys.c b/src/2.6.19/wacom_sys.c index 1104ac1..71f7826 100755 --- a/src/2.6.19/wacom_sys.c +++ b/src/2.6.19/wacom_sys.c @@ -166,6 +166,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); + input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); } void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) @@ -174,6 +175,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); } +void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) +{ + input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); +} + void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { input_dev->evbit[0] |= BIT(EV_MSC) | BIT(EV_REL); diff --git a/src/2.6.19/wacom_wac.c b/src/2.6.19/wacom_wac.c index 31179cd..c477843 100755 --- a/src/2.6.19/wacom_wac.c +++ b/src/2.6.19/wacom_wac.c @@ -434,10 +434,12 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) wacom_report_key(wcombo, BTN_5, (data[6] & 0x02)); wacom_report_key(wcombo, BTN_6, (data[6] & 0x04)); wacom_report_key(wcombo, BTN_7, (data[6] & 0x08)); + wacom_report_key(wcombo, BTN_8, (data[5] & 0x10)); + wacom_report_key(wcombo, BTN_9, (data[6] & 0x10)); wacom_report_abs(wcombo, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); wacom_report_abs(wcombo, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) wacom_report_key(wcombo, wacom->tool[1], 1); else @@ -481,13 +483,11 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) if (data[1] & 0x02) { /* Rotation packet */ if (wacom->features->type >= INTUOS3S) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = (data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - wacom_report_abs(wcombo, ABS_WHEEL, t); + wacom_report_abs(wcombo, ABS_Z, t); } else { /* 4D mouse rotation packet */ t = (data[6] << 3) | ((data[7] >> 5) & 7); @@ -558,6 +558,7 @@ int wacom_wac_irq(struct wacom_wac *wacom_wac, void *wcombo) case INTUOS3: case INTUOS3L: case CINTIQ: + case WACOM_BEE: return (wacom_intuos_irq(wacom_wac, wcombo)); break; default: @@ -577,6 +578,8 @@ void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_w case GRAPHIRE: input_dev_g(input_dev, wacom_wac); break; + case WACOM_BEE: + input_dev_bee(input_dev, wacom_wac); case INTUOS3: case INTUOS3L: case CINTIQ: @@ -607,12 +610,15 @@ static struct wacom_features wacom_features[] = { { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, + { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, WACOM_MO }, + { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, WACOM_MO }, { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE }, { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE }, { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE }, { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE }, - { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE }, + { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, GRAPHIRE }, { "Wacom Bamboo", 9, 14760, 9225, 511, 63, WACOM_MO }, + { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE }, { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, @@ -643,6 +649,7 @@ static struct wacom_features wacom_features[] = { { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, + { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, WACOM_BEE }, { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, { } }; @@ -656,12 +663,15 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, @@ -692,6 +702,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, { } }; diff --git a/src/2.6.22/wacom_sys.c b/src/2.6.22/wacom_sys.c index f1a5681..803af47 100755 --- a/src/2.6.22/wacom_sys.c +++ b/src/2.6.22/wacom_sys.c @@ -166,6 +166,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); + input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); } void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) @@ -174,6 +175,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); } +void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) +{ + input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); +} + void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { input_dev->evbit[0] |= BIT(EV_MSC) | BIT(EV_REL); diff --git a/src/2.6.22/wacom_wac.h b/src/2.6.22/wacom_wac.h index a302e22..3342bc0 100755 --- a/src/2.6.22/wacom_wac.h +++ b/src/2.6.22/wacom_wac.h @@ -25,6 +25,7 @@ enum { INTUOS3, INTUOS3L, CINTIQ, + WACOM_BEE, WACOM_MO, MAX_TYPE }; diff --git a/src/2.6.8/wacom.c b/src/2.6.8/wacom.c index 619e3d5..949bf45 100644 --- a/src/2.6.8/wacom.c +++ b/src/2.6.8/wacom.c @@ -67,6 +67,7 @@ * v1.40-2.6.8-pc-0.10 - Support tablet buttons/keys * v1.40-2.6.8-pc-0.11 - Support Intuos outbound tracking * v1.40-2.6.8-pc-0.12 - Added Bamboo + * v1.40-2.6.8-pc-0.13 - added Bamboo1, Bamboo Fun, and Hummingbird */ /* @@ -88,7 +89,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.40 - 2.6.8-pc-0.12" +#define DRIVER_VERSION "v1.40 - 2.6.8-pc-0.13" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -113,6 +114,7 @@ enum { INTUOS3, INTUOS3L, CINTIQ, + BEE, MO, MAX_TYPE }; @@ -723,10 +725,12 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_5, (data[6] & 0x02)); input_report_key(dev, BTN_6, (data[6] & 0x04)); input_report_key(dev, BTN_7, (data[6] & 0x08)); + input_report_key(dev, BTN_8, (data[5] & 0x10)); + input_report_key(dev, BTN_9, (data[6] & 0x10)); input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) input_report_key(dev, wacom->tool[1], 1); else @@ -772,13 +776,11 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) { if(wacom->features->type >= INTUOS3S) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = (data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - input_report_abs(dev, ABS_WHEEL, t); + input_report_abs(dev, ABS_Z, t); } else { @@ -848,12 +850,15 @@ static struct wacom_features wacom_features[] = { { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, G4, wacom_graphire_irq }, { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, G4, wacom_graphire_irq }, + { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, MO, wacom_graphire_irq }, + { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, MO, wacom_graphire_irq }, { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Bamboo", 9, 14760, 9225, 511, 63, MO, wacom_graphire_irq }, + { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS, wacom_intuos_irq }, { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS, wacom_intuos_irq }, { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS, wacom_intuos_irq }, @@ -884,6 +889,7 @@ static struct wacom_features wacom_features[] = { { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3, wacom_intuos_irq }, { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S, wacom_intuos_irq }, { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ, wacom_intuos_irq }, + { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, BEE, wacom_intuos_irq }, { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS, wacom_intuos_irq }, { } }; @@ -897,12 +903,15 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, @@ -933,6 +942,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, { } }; @@ -996,10 +1006,13 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_PEN) | BIT(BTN_TOUCH) | BIT(BTN_STYLUS); switch (wacom->features->type) { + case MO: wacom->dev.keybit[LONG(BTN_LEFT)] |= BIT(BTN_1) | BIT(BTN_5); wacom->dev.absbit[0] |= BIT(ABS_WHEEL); wacom->dev.absmax[ABS_WHEEL] = 71; + /* fall through */ + case G4: wacom->dev.evbit[0] |= BIT(EV_MSC); wacom->dev.mscbit[0] |= BIT(MSC_SERIAL); @@ -1015,6 +1028,10 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER) | BIT(BTN_TOOL_MOUSE) | BIT(BTN_STYLUS2); break; + case BEE: + wacom->dev.keybit[LONG(BTN_LEFT)] |= BIT(BTN_8) | BIT(BTN_9); + /* fall through */ + case INTUOS3: case INTUOS3L: case CINTIQ: @@ -1028,6 +1045,9 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i wacom->dev.keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); wacom->dev.absbit[0] |= BIT(ABS_RX); wacom->dev.absmax[ABS_RX] = 4096; + wacom->dev.absbit[0] |= BIT(ABS_Z); + wacom->dev.absmin[ABS_Z] = -900; + wacom->dev.absmax[ABS_Z] = 899; /* fall through */ case INTUOS: diff --git a/src/2.6.9/wacom.c b/src/2.6.9/wacom.c index 9a55307..78f6e4c 100644 --- a/src/2.6.9/wacom.c +++ b/src/2.6.9/wacom.c @@ -66,6 +66,7 @@ * v1.40-2.6.9-pc-0.9 - Support tablet buttons/keys * v1.40-2.6.9-pc-0.10 - Support Intuos outbound tracking * v1.40-2.6.9-pc-0.11 - Added Bamboo + * v1.40-2.6.9-pc-0.12 - added Bamboo1, Bamboo Fun, and Hummingbird */ /* @@ -87,7 +88,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v1.40 - 2.6.9-pc-0.11" +#define DRIVER_VERSION "v1.40 - 2.6.9-pc-0.12" #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" #define DRIVER_LICENSE "GPL" @@ -113,6 +114,7 @@ enum { INTUOS3L, CINTIQ, MO, + BEE, MAX_TYPE }; @@ -723,10 +725,12 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) input_report_key(dev, BTN_5, (data[6] & 0x02)); input_report_key(dev, BTN_6, (data[6] & 0x04)); input_report_key(dev, BTN_7, (data[6] & 0x08)); + input_report_key(dev, BTN_8, (data[5] & 0x10)); + input_report_key(dev, BTN_9, (data[6] & 0x10)); input_report_abs(dev, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); input_report_abs(dev, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); - if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | + if((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | data[2] | (data[3] & 0x1f) | data[4]) input_report_key(dev, wacom->tool[1], 1); else @@ -772,13 +776,11 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) { if(wacom->features->type >= INTUOS3S) { - /* I3 marker pen rotation reported as wheel - * due to valuator limitation - */ + /* I3 marker pen rotation */ t = (data[6] << 3) | ((data[7] >> 5) & 7); t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : ((t-1) / 2 + 450)) : (450 - t / 2) ; - input_report_abs(dev, ABS_WHEEL, t); + input_report_abs(dev, ABS_Z, t); } else { @@ -848,12 +850,15 @@ static struct wacom_features wacom_features[] = { { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, G4, wacom_graphire_irq }, { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, G4, wacom_graphire_irq }, + { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, MO, wacom_graphire_irq }, + { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, MO, wacom_graphire_irq }, { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Bamboo", 9, 14760, 9225, 511, 63, MO, wacom_graphire_irq }, + { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE, wacom_graphire_irq }, { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS, wacom_intuos_irq }, { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS, wacom_intuos_irq }, { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS, wacom_intuos_irq }, @@ -884,6 +889,7 @@ static struct wacom_features wacom_features[] = { { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3, wacom_intuos_irq }, { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S, wacom_intuos_irq }, { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ, wacom_intuos_irq }, + { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, BEE, wacom_intuos_irq }, { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS, wacom_intuos_irq }, { } }; @@ -897,12 +903,15 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, @@ -933,6 +942,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, { } }; diff --git a/src/util/xsetwacom.c b/src/util/xsetwacom.c index a026b00..ef7b600 100755 --- a/src/util/xsetwacom.c +++ b/src/util/xsetwacom.c @@ -1001,14 +1001,6 @@ static void DisplayValue (WACOMDEVICE *hDev, const char *devname, PARAMINFO *p, return; } - if (value == -1) - { - if (disperr) - fprintf (stderr, "DisplayValue: %s does not have a valid value for parameter '%s' \n", - devname, p->pszParam); - return; - } - switch (p->nType) { case SINGLE_VALUE: diff --git a/src/wacomxi/wacomcpl-exec b/src/wacomxi/wacomcpl-exec index 95ad71a..c0a4e81 100755 --- a/src/wacomxi/wacomcpl-exec +++ b/src/wacomxi/wacomcpl-exec @@ -32,6 +32,9 @@ set desktopWidth [ winfo screenwidth . ] set desktopHeight [ winfo screenheight . ] set screenWidth [ winfo screenwidth . ] set screenHeight [ winfo screenheight . ] +set screenXBottom [ winfo screenwidth . ] +set screenYBottom [ winfo screenheight . ] + set screenX_org 0 set screenY_org 0 set swapThresh 100 @@ -49,13 +52,13 @@ set showHelp 0 proc updateCurrentScreenInfo {} { global device numScreens currentScreen - global screenWidth screenHeight screenX_org screenY_org + global screenXBottom screenYBottom screenX_org screenY_org global getScreenInfo if { $numScreens($device) != 1 } { set screenInfo $getScreenInfo($device,Screen$currentScreen) - set screenWidth [ lindex $screenInfo 0 ] - set screenHeight [ lindex $screenInfo 1 ] + set screenXBottom [ lindex $screenInfo 0 ] + set screenYBottom [ lindex $screenInfo 1 ] set screenX_org [ lindex $screenInfo 2 ] set screenY_org [ lindex $screenInfo 3 ] } @@ -116,7 +119,7 @@ proc calibrationSequence {which xDev yDev} { global device calibResults screenY_org screenX_org global workingTags screenTags size numScreens global swapThresh screenWidth screenHeight - global getDeviceModel + global getDeviceModel screenXBottom screenYBottom set calibResults(xDev,$which) $xDev set calibResults(yDev,$which) $yDev @@ -132,8 +135,8 @@ proc calibrationSequence {which xDev yDev} { set borderOffset [expr ($size / 2 )] set widthDev [expr $calibResults(xDev,1) - $calibResults(xDev,0)] set heightDev [expr $calibResults(yDev,1) - $calibResults(yDev,0)] - set widthX [expr $screenWidth - (2 * $borderOffset)] - set heightX [expr $screenHeight - (2 * $borderOffset)] + set widthX [expr $screenXBottom-$size*(abs($screenXBottom)/$screenXBottom)] + set heightX [expr $screenYBottom-$size*(abs($screenYBottom)/$screenYBottom)] # # A rough verification of the click @@ -218,14 +221,14 @@ proc Calibration {} { proc startCalibration {} { global device calibResults global screenX_org screenY_org size numScreens - global screenWidth screenHeight + global screenWidth screenHeight screenXBottom screenYBottom if { $numScreens($device) > 1 } { bindtags .screen.list.list . } - set y_coor [ expr $screenY_org+$screenHeight-$size ] - set x_coor [ expr $screenX_org+$screenWidth-$size ] + set y_coor [ expr $screenYBottom-$size*(abs($screenYBottom)/$screenYBottom) ] + set x_coor [ expr $screenXBottom-$size*(abs($screenXBottom)/$screenXBottom) ] pad .topleft +$screenX_org+$screenY_org pad .bottomright +$x_coor+$y_coor update @@ -406,7 +409,6 @@ proc updateDevice {} { # wacomxi::bindevent . $device <ButtonPress> "" wacomxi::bindevent . $device <ButtonRelease> "" - disableButtons } if { $device != ""} { @@ -1116,22 +1118,24 @@ proc initialSet {} { if { $snd == -1 } { set snd "Desktop" } else { - set snd "Screen[ expr $snd+1 ]" + set snd "Screen$snd" } if { $numS == 1 } { if { $tvd } { set sn0 "Desktop" - set sn1 "Screen1" - set sn2 "Screen2" + set sn1 "Screen0" + set sn2 "Screen1" tk_optionMenu $currentW.f.snsmenu snd $sn0 $sn1 $sn2 } } else { if { $numS > 1 } { set smenu [ tk_optionMenu $currentW.f.snsmenu snd "Desktop" ] pack $currentW.f.snsmenu -side left - for { set i 1 } { $i <= $numS } { incr i } { - $smenu insert $i radiobutton -label "Screen$i" + for { set i 0 } { $i < $numS } { incr i } { + $smenu insert $i radiobutton -label "Screen$i" \ + -variable smenvar -command \ + { global smenvar; set snd $smenvar } } } } diff --git a/src/xdrv/Makefile.am b/src/xdrv/Makefile.am index 14f4047..8c66e83 100755 --- a/src/xdrv/Makefile.am +++ b/src/xdrv/Makefile.am @@ -79,9 +79,7 @@ $(XF86OBJS): xf86Wacom.h ../include/Xwacom.h Makefile -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ -DX_BYTE_ORDER=X_LITTLE_ENDIAN $(XSERVER64) \ -DNDEBUG -DFUNCPROTO=15 \ -if WCM_DLLOADER $(XSERVER_CFLAGS) \ -endif -DNARROWPROTO -DIN_MODULE -DXFree86Module $(LINUX_INPUT) \ -o $@ -c $(srcdir)/$(subst .o,.c,$@) diff --git a/src/xdrv/wcmUSB.c b/src/xdrv/wcmUSB.c index b3d8802..8ae4c6a 100755 --- a/src/xdrv/wcmUSB.c +++ b/src/xdrv/wcmUSB.c @@ -178,6 +178,38 @@ static void usbParseChannel(LocalDevicePtr local, int channel, int serial); usbDetectConfig, /* detect hardware buttons etc */ }; + static WacomModel usbBamboo1 = + { + "USB Bamboo1", + usbInitProtocol4, + NULL, /* resolution not queried */ + usbWcmGetRanges, + NULL, /* reset not supported */ + NULL, /* tilt automatically enabled */ + NULL, /* suppress implemented in software */ + NULL, /* link speed unsupported */ + NULL, /* start not supported */ + usbParse, + xf86WcmFilterCoord, /* input filtering */ + usbDetectConfig, /* detect hardware buttons etc */ + }; + + static WacomModel usbBambooFun = + { + "USB BambooFun", + usbInitProtocol4, + NULL, /* resolution not queried */ + usbWcmGetRanges, + NULL, /* reset not supported */ + NULL, /* tilt automatically enabled */ + NULL, /* suppress implemented in software */ + NULL, /* link speed unsupported */ + NULL, /* start not supported */ + usbParse, + xf86WcmFilterCoord, /* input filtering */ + usbDetectConfig, /* detect hardware buttons etc */ + }; + static WacomModel usbCintiq = { "USB Cintiq", @@ -292,7 +324,7 @@ static void usbParseChannel(LocalDevicePtr local, int channel, int serial); static WacomModel usbCintiqV5 = { - "USB Cintiq21UX", + "USB CintiqV5", usbInitProtocol5, NULL, /* resolution not queried */ usbWcmGetRanges, @@ -377,6 +409,8 @@ static struct { 0x14, 2032, 2032, &usbGraphire3 }, /* Graphire3 6x8 */ { 0x15, 2032, 2032, &usbGraphire4 }, /* Graphire4 4x5 */ { 0x16, 2032, 2032, &usbGraphire4 }, /* Graphire4 6x8 */ + { 0x17, 2540, 2540, &usbBambooFun }, /* BambooFun 4x5 */ + { 0x18, 2540, 2540, &usbBambooFun }, /* BambooFun 6x8 */ { 0x81, 2032, 2032, &usbGraphire4 }, /* Graphire4 6x8 BlueTooth */ { 0x20, 2540, 2540, &usbIntuos }, /* Intuos 4x5 */ @@ -414,6 +448,7 @@ static struct { 0x64, 1016, 1016, &usbVolito2 }, /* PenPartner2 */ { 0x65, 2540, 2540, &usbBamboo }, /* Bamboo */ + { 0x69, 1012, 1012, &usbBamboo1 }, /* Bamboo1 */ { 0xB0, 5080, 5080, &usbIntuos3 }, /* Intuos3 4x5 */ { 0xB1, 5080, 5080, &usbIntuos3 }, /* Intuos3 6x8 */ @@ -423,7 +458,8 @@ static struct { 0xB5, 5080, 5080, &usbIntuos3 }, /* Intuos3 6x11 */ { 0xB7, 5080, 5080, &usbIntuos3 }, /* Intuos3 4x6 */ - { 0x3F, 5080, 5080, &usbCintiqV5 } /* Cintiq 21UX */ + { 0x3F, 5080, 5080, &usbCintiqV5 }, /* Cintiq 21UX */ + { 0xC6, 5080, 5080, &usbCintiqV5 } /* Cintiq 12WX */ }; Bool usbWcmInit(LocalDevicePtr local) @@ -807,7 +843,7 @@ static void usbParseChannel(LocalDevicePtr local, int channel, int serial) ds->stripx = event->value; else if (event->code == ABS_RY) ds->stripy = event->value; - else if (event->code == ABS_RZ) + else if (event->code == ABS_RZ) ds->rotation = event->value; else if (event->code == ABS_TILT_X) ds->tiltx = event->value - 64; @@ -817,7 +853,8 @@ static void usbParseChannel(LocalDevicePtr local, int channel, int serial) ds->pressure = event->value; else if (event->code == ABS_DISTANCE) ds->distance = event->value; - else if (event->code == ABS_WHEEL) + else if (event->code == ABS_WHEEL || + event->code == ABS_Z) ds->abswheel = event->value; else if (event->code == ABS_THROTTLE) ds->throttle = event->value; diff --git a/src/xdrv/xf86Wacom.c b/src/xdrv/xf86Wacom.c index 7756b20..967421b 100755 --- a/src/xdrv/xf86Wacom.c +++ b/src/xdrv/xf86Wacom.c @@ -56,9 +56,10 @@ * 2007-06-05 47-pc0.7.7-11 - Test Ron's patches * 2007-06-15 47-pc0.7.7-12 - enable changing number of raw data * 2007-06-25 47-pc0.7.8 - new release + * 2007-06-25 47-pc0.7.9-1 - Support multimonitors in both horizonal and vertical settings */ -static const char identification[] = "$Identification: 47-0.7.8 $"; +static const char identification[] = "$Identification: 47-0.7.9-1 $"; /****************************************************************************/ @@ -356,20 +357,23 @@ void xf86WcmInitialTVScreens(LocalDevicePtr local) priv->screenTopX[1] = 0; priv->screenTopY[1] = priv->tvResolution[1]; priv->screenBottomX[1] = priv->tvResolution[2]; - priv->screenBottomY[1] = priv->tvResolution[3]; + priv->screenBottomY[1] = priv->tvResolution[1] + priv->tvResolution[3]; } if (priv->twinview == TV_LEFT_RIGHT) { priv->screenTopX[1] = priv->tvResolution[0]; priv->screenTopY[1] = 0; - priv->screenBottomX[1] = priv->tvResolution[2]; + priv->screenBottomX[1] = priv->tvResolution[0] + priv->tvResolution[2]; priv->screenBottomY[1] = priv->tvResolution[3]; } DBG(10, priv->debugLevel, ErrorF("xf86WcmInitialTVScreens for \"%s\" " - "resX0=%d resY0=%d resX1=%d resY1=%d\n", - local->name, priv->tvResolution[0], priv->tvResolution[1], - priv->tvResolution[2], priv->tvResolution[3])); + "topX0=%d topY0=%d bottomX0=%d bottomY0=%d " + "topX1=%d topY1=%d bottomX1=%d bottomY1=%d \n", + local->name, priv->screenTopX[0], priv->screenTopY[0], + priv->screenBottomX[0], priv->screenBottomY[0], + priv->screenTopX[1], priv->screenTopY[1], + priv->screenBottomX[1], priv->screenBottomY[1])); } /***************************************************************************** @@ -379,31 +383,25 @@ void xf86WcmInitialTVScreens(LocalDevicePtr local) void xf86WcmInitialScreens(LocalDevicePtr local) { WacomDevicePtr priv = (WacomDevicePtr)local->private; + int i; if (priv->twinview != TV_NONE) return; /* initial screen info */ - priv->screenTopX[0] = 0; - priv->screenTopY[0] = 0; - priv->screenBottomX[0] = screenInfo.screens[0]->width; - priv->screenBottomY[0] = screenInfo.screens[0]->height; - if (screenInfo.numScreens) - { - int i; - for (i=1; i<screenInfo.numScreens; i++) - { - int x = 0, y = 0, j; - for (j=0; j<i; j++) - x += screenInfo.screens[j]->width; - for (j=0; j<i; j++) - y += screenInfo.screens[j]->height; - - priv->screenTopX[i] = x; - priv->screenTopY[i] = y; - priv->screenBottomX[i] = screenInfo.screens[i]->width; - priv->screenBottomY[i] = screenInfo.screens[i]->height; - } + for (i=0; i<screenInfo.numScreens; i++) + { + priv->screenTopX[i] = dixScreenOrigins[i].x; + priv->screenTopY[i] = dixScreenOrigins[i].y; + priv->screenBottomX[i] = dixScreenOrigins[i].x; + priv->screenBottomY[i] = dixScreenOrigins[i].y; + priv->screenBottomX[i] += screenInfo.screens[i]->width; + priv->screenBottomY[i] += screenInfo.screens[i]->height; + + DBG(10, priv->debugLevel, ErrorF("xf86WcmInitialScreens for \"%s\" " + "topX[%d]=%d topY[%d]=%d bottomX[%d]=%d bottomY[%d]=%d \n", + local->name, i, priv->screenTopX[i], i, priv->screenTopY[i], + i, priv->screenBottomX[i], i, priv->screenBottomY[i])); } } |