summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpingc <pingc>2007-11-12 19:32:43 +0000
committerpingc <pingc>2007-11-12 19:32:43 +0000
commit6f65a53cde6be39012e69546fdc44a7eb9ac9191 (patch)
treee6b550495f2aa538d867f5e6119af3769c5061bf
parent16dc273e8b4317d5e40f8dcdcde57f3551284122 (diff)
downloadxf86-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--ChangeLog8
-rw-r--r--acinclude.m426
-rw-r--r--src/2.4.22/wacom.c160
-rw-r--r--src/2.4.30x86-64/wacom.c161
-rw-r--r--src/2.4/wacom.c156
-rw-r--r--src/2.6.10/wacom.c22
-rwxr-xr-xsrc/2.6.11/wacom.h3
-rwxr-xr-xsrc/2.6.11/wacom_sys.c6
-rwxr-xr-xsrc/2.6.13/wacom.h4
-rwxr-xr-xsrc/2.6.13/wacom_sys.c6
-rwxr-xr-xsrc/2.6.15/wacom_sys.c6
-rw-r--r--src/2.6.16/wacom.h3
-rw-r--r--src/2.6.16/wacom_sys.c6
-rw-r--r--src/2.6.16/wacom_wac.c23
-rw-r--r--src/2.6.16/wacom_wac.h1
-rw-r--r--src/2.6.18/wacom.h3
-rwxr-xr-xsrc/2.6.19/wacom.h3
-rwxr-xr-xsrc/2.6.19/wacom_sys.c6
-rwxr-xr-xsrc/2.6.19/wacom_wac.c23
-rwxr-xr-xsrc/2.6.22/wacom_sys.c6
-rwxr-xr-xsrc/2.6.22/wacom_wac.h1
-rw-r--r--src/2.6.8/wacom.c32
-rw-r--r--src/2.6.9/wacom.c22
-rwxr-xr-xsrc/util/xsetwacom.c8
-rwxr-xr-xsrc/wacomxi/wacomcpl-exec34
-rwxr-xr-xsrc/xdrv/Makefile.am2
-rwxr-xr-xsrc/xdrv/wcmUSB.c45
-rwxr-xr-xsrc/xdrv/xf86Wacom.c50
28 files changed, 515 insertions, 311 deletions
diff --git a/ChangeLog b/ChangeLog
index e348c28..29297d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]));
}
}