summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpingc <pingc>2006-10-24 20:12:05 +0000
committerpingc <pingc>2006-10-24 20:12:05 +0000
commit0ca6cfbcb252c91b89bbf54972b0b821c0d6de0f (patch)
treedea094a08ac3f2d6098d7fce084daf28012b2dc6
parent84e374f0c5d00a710c57ded3cf05aa997277a907 (diff)
downloadxf86-input-wacom-0ca6cfbcb252c91b89bbf54972b0b821c0d6de0f.tar.gz
Removed $Id lines in unchanged 2.4 kernel filesdev-0_7_6p1dev-0.7.6p1
-rw-r--r--AUTHORS2
-rw-r--r--ChangeLog9
-rw-r--r--NEWS4
-rw-r--r--README31
-rw-r--r--acinclude.m410
-rw-r--r--configure.in1
-rw-r--r--src/2.4.22/wacom.c13
-rw-r--r--src/2.4.30x86-64/wacom.c13
-rw-r--r--src/2.4/wacom.c13
-rw-r--r--src/2.6.10/wacom.c13
-rw-r--r--src/2.6.11/wacom.c13
-rw-r--r--src/2.6.13/wacom.c14
-rw-r--r--src/2.6.14/wacom.c14
-rw-r--r--src/2.6.15/wacom.c14
-rw-r--r--src/2.6.16/wacom_sys.c4
-rw-r--r--src/2.6.16/wacom_wac.c10
-rw-r--r--src/2.6.8/wacom.c13
-rw-r--r--src/2.6.9/wacom.c13
18 files changed, 126 insertions, 78 deletions
diff --git a/AUTHORS b/AUTHORS
index d2f6b42..bbf6177 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -7,6 +7,8 @@ John E. Joganic <jej@j-arkadia.com> for establishing this project;
Jens Georg <listen@jensgeorg.de> for being active and supportive
in discussion and development groups.
+Andrew Zabolotny <zap@homelink.ru> for adding new features.
+
This project is being maintained by:
Ping Cheng <pingc@wacom.com>.
diff --git a/ChangeLog b/ChangeLog
index ea98132..5bb249e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-10-24 Ping Cheng <pingc@wacom.com>
+ * Fixed a relative mode acceleration problem
+ * Updated webpages, acinclude.m4, and configure.in
+ * Updated wacdump for TabletPC
+ * Supports Graphire outbound tracking
+
+2006-10-16 Ping Cheng <pingc@wacom.com>
+ * Updated README and NEWS
+
2006-10-13 Ping Cheng <pingc@wacom.com>
* Removed 2.4 kernel unchanged $Id lines
* label 0.7.6-1
diff --git a/NEWS b/NEWS
index b7685e3..1894d82 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+Oct 16, 2006 - Ping Cheng
+
+Added a list of new xsetwacom options (refer to ChangeLog and website). Kernel driver is split into 4 separate files for ease of updating and maintaining. No need to built (usb)hid driver with 2.6.18 and newer kernels. "make install" will install wacom man page by default. Improved USB tablet hot plug/unplug functions. On-the-fly tablet rotation is supported.
+
May 03, 2006 - Ping Cheng
2.6 kernels older than 2.6.8 are removed from the project to avoid updating
diff --git a/README b/README
index e9aa78d..80d0965 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
README
-Dec. 05, 2005
+Oct. 16, 2006
==============================================================================
@@ -30,14 +30,14 @@ breakdown:
wacom.o: not built by default (--enable-wacom, --disable-wacom)
wacdump: built by default (--enable-wacdump, --disable-wacdump)
hid.o: not built by default (--enable-hid, --disable-hid)
- evdev.o: not built by default (--enable-evdev, --disable-evdev)
+ evdev.o: not built by default (--enable-evdev, --disable-evdev for kernel 2.4.x only)
mousedev.o: not built by default (--enable-mousedev, --disable-mousedev for kernel 2.4.x only)
usbmouse.o: not built by default (--enable-usbmouse, --disable-usbmouse for kernel 2.4.x only)
input.o: not built by default (--enable-input, --disable-input for kernel 2.4.x only)
wacom_drv.o: built by default (--enable-wacomdrv, --disable-wacomdrv)
There are many options, and configure will attempt to guess the correct
-values for most of them. By default, only wacomcpl, xsetwacom, wacom_drv.o,
+values for most of them. By default, only wacomcpl, xsetwacom, wacom_drv.o,
xidump, and wacdump program are built.
REQUIREMENTS:
@@ -51,18 +51,14 @@ well as /usr/src/linux. You can override the directory using the
For kernel 2.6.x, a kernel source with which your tablet is going to run should
be precompiled before configuring linuxwacom package. For the steps to build a
-kernel from source, please refer to your source's README or www.kernel.org. For
-kernels newer than 2.6.4 (and you are not using Intuos3), wacom.c and hid-core.c
-are up to date, that is, you probably don't need to build the kernel. But, if you
-want to use the "hotplug" feature of the tablet, you need to build evdev from this
-package.
+kernel from source, please refer to your source's README or www.kernel.org.
wacom_drv.o requires XFree86 sources as well as a functional XF86 build
-environment or xorg-sdk if your X server is from x.org. Since this is a more
-complicated setup and few people are going to want to rebuild this driver from
-source, the wacom_drv.o files are supplied with the linuxwacom package in the
-prebuilt directory. If the prebuilt wacom_drv.o module doesn't work for you,
-see the section "Building wacom_drv.o From Scratch."
+environment or xorg-sdk if your X server is from x.org. A set of
+wacom_drv.o files are supplied with the linuxwacom package in the
+prebuilt directory. If the prebuilt wacom_drv.o module doesn't work
+for you, you'll need to build it on your system. See the section "Building
+wacom_drv.o From Scratch." for details.
BUILDING wacom_drv.o FROM SCRATCH
@@ -71,8 +67,8 @@ source code, and you will need to actually build it. The file
xf86Version.h is generated during the build process and is a required
dependency for building wacom_drv.o. If your system runs an X server
from x.org, you need to install xorg-sdk. The configure script will
-attempt to build wacom-drv.o by default, but you need to provide the
---with-xf86=<xf86_directory> option. If you don't want to build wacom-drv.o,
+attempt to build wacom_drv.o by default, but you need to provide the
+--with-xf86=<xf86_directory> option. If you don't want to build wacom_drv.o,
the option --disable-wacomdrv needs to be provided.
If the xf86Version.h file is located at:
@@ -84,7 +80,7 @@ Then the correct configure option to build wacom_drv.o would be:
INSTALL default
Generally, you run the configure script followed by make install. This package
-will install wacom_drv.o, xidump, wacdump, xsetwacom, and wacomcpl. The kernel
+will install wacom_drv.o, xidump, wacdump, xsetwacom, wacom.4x, and wacomcpl. The kernel
drivers will not be installed. Please see the documentation on the website for
more information on where specific drivers belong.
@@ -153,9 +149,8 @@ for kernels older than 2.4.22:
[root@haku linuxwacom-dev] # cp src/2.4/input.o /lib/modules/your_kernel_version/kernel/drivers/input
for kernel 2.6.x
- [root@haku linuxwacom-dev] # cp src/2.6.x/hid.ko /lib/modules/your_kernel_version/kernel/drivers/usb/input
+ [root@haku linuxwacom-dev] # cp src/2.6.x/(usb)hid.ko /lib/modules/your_kernel_version/kernel/drivers/usb/input
[root@haku linuxwacom-dev] # cp src/2.6.x/wacom.ko /lib/modules/your_kernel_version/kernel/drivers/usb/input
- [root@haku linuxwacom-dev] # cp src/2.6.x/evdev.ko /lib/modules/your_kernel_version/kernel/drivers/input
==============================================================================
diff --git a/acinclude.m4 b/acinclude.m4
index 6fbadee..9ac7588 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -248,7 +248,15 @@ if test x$WCM_ENV_KERNEL = xyes; then
elif test $MINOR -eq 8; then
WCM_KERNEL_VER="2.6.8"
else
- WCM_KERNEL_VER="2.6"
+ echo "***"
+ echo "*** WARNING:"
+ echo "*** $MODUTS is not supported by this package any more."
+ echo "*** Please upgrade your kernel to a version newer than 2.6.7."
+ echo "*** Or use linuxwacom-0.7.4 if you are not setting up for a newly released tablet model."
+ echo "***"
+ WCM_OPTION_MODVER=no
+ AC_MSG_RESULT(no)
+ WCM_ENV_KERNEL=no
fi
else
echo "***"
diff --git a/configure.in b/configure.in
index fb97b2a..5c45f07 100644
--- a/configure.in
+++ b/configure.in
@@ -489,6 +489,7 @@ fi
dnl Check for x86_64 kernel and ARCH for kernel 2.4
kver=`echo $WCM_KERNEL_VER | grep -c "2.4"`
if test $kver != 0; then
+ WCM_ARCH=`echo $WCM_ARCH | cut -f 1 -d-`
if test "$WCM_ARCH" = "x86_64"; then
WCM_OPTION_HID=no
WCM_OPTION_WACOM=no
diff --git a/src/2.4.22/wacom.c b/src/2.4.22/wacom.c
index 3478201..a45a8b0 100644
--- a/src/2.4.22/wacom.c
+++ b/src/2.4.22/wacom.c
@@ -419,12 +419,15 @@ static void wacom_graphire_irq(struct urb *urb)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_event(dev, EV_MSC, MSC_SERIAL, data[1] & 0x01);
/* send pad data */
@@ -997,8 +1000,8 @@ static void *wacom_probe(struct usb_device *dev, unsigned int ifnum, const struc
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.4.30x86-64/wacom.c b/src/2.4.30x86-64/wacom.c
index 72c72a9..4c47e7e 100644
--- a/src/2.4.30x86-64/wacom.c
+++ b/src/2.4.30x86-64/wacom.c
@@ -362,12 +362,15 @@ static void wacom_graphire_irq(struct urb *urb)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_event(dev, EV_MSC, MSC_SERIAL, data[1] & 0x01);
/* send pad data */
@@ -940,8 +943,8 @@ static void *wacom_probe(struct usb_device *dev, unsigned int ifnum, const struc
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.4/wacom.c b/src/2.4/wacom.c
index cc20e73f..7b62e99 100644
--- a/src/2.4/wacom.c
+++ b/src/2.4/wacom.c
@@ -416,12 +416,15 @@ static void wacom_graphire_irq(struct urb *urb)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_event(dev, EV_MSC, MSC_SERIAL, data[1] & 0x01);
/* send pad data */
@@ -996,8 +999,8 @@ static void *wacom_probe(struct usb_device *dev, unsigned int ifnum, const struc
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.6.10/wacom.c b/src/2.6.10/wacom.c
index fdda22f..eb24590 100644
--- a/src/2.6.10/wacom.c
+++ b/src/2.6.10/wacom.c
@@ -464,12 +464,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -992,8 +995,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.6.11/wacom.c b/src/2.6.11/wacom.c
index 87563ae..6aad505 100644
--- a/src/2.6.11/wacom.c
+++ b/src/2.6.11/wacom.c
@@ -464,12 +464,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -992,8 +995,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.6.13/wacom.c b/src/2.6.13/wacom.c
index 0f87755..1fc672f 100644
--- a/src/2.6.13/wacom.c
+++ b/src/2.6.13/wacom.c
@@ -455,13 +455,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
-
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -966,8 +968,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.6.14/wacom.c b/src/2.6.14/wacom.c
index 1e8c310..8b98a48 100644
--- a/src/2.6.14/wacom.c
+++ b/src/2.6.14/wacom.c
@@ -453,13 +453,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
-
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -962,8 +964,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.6.15/wacom.c b/src/2.6.15/wacom.c
index 11ba5e6..d0fb1da 100644
--- a/src/2.6.15/wacom.c
+++ b/src/2.6.15/wacom.c
@@ -455,13 +455,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
-
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -941,13 +943,13 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
case INTUOS3L:
case CINTIQ:
input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7);
- input_set_abs_params(input_dev, ABS_RY, 0, 4097, 0, 0);
+ input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0);
/* fall through */
case INTUOS3S:
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, 4097, 0, 0);
+ input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0);
/* fall through */
case INTUOS:
diff --git a/src/2.6.16/wacom_sys.c b/src/2.6.16/wacom_sys.c
index 7a55e25..7ad744d 100644
--- a/src/2.6.16/wacom_sys.c
+++ b/src/2.6.16/wacom_sys.c
@@ -166,13 +166,13 @@ 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, 4097, 0, 0);
+ input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0);
}
void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
{
input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7);
- input_set_abs_params(input_dev, ABS_RY, 0, 4097, 0, 0);
+ input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0);
}
void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac)
diff --git a/src/2.6.16/wacom_wac.c b/src/2.6.16/wacom_wac.c
index ebcb06d..38cd9f0 100644
--- a/src/2.6.16/wacom_wac.c
+++ b/src/2.6.16/wacom_wac.c
@@ -216,13 +216,15 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo)
wacom_report_key(wcombo, BTN_STYLUS, data[1] & 0x02);
wacom_report_key(wcombo, BTN_STYLUS2, data[1] & 0x04);
}
- }
-
- if (data[1] & 0x10)
wacom_report_abs(wcombo, ABS_MISC, id); /* report tool id */
+ }
else
wacom_report_abs(wcombo, ABS_MISC, 0); /* reset tool id */
- wacom_report_key(wcombo, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* only report prox-in when in area */
+ wacom_report_key(wcombo, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report prox-out when physically out */
+ wacom_report_key(wcombo, wacom->tool[0], 0);
wacom_input_sync(wcombo);
/* send pad data */
diff --git a/src/2.6.8/wacom.c b/src/2.6.8/wacom.c
index d3de0d4..b9cd5dc 100644
--- a/src/2.6.8/wacom.c
+++ b/src/2.6.8/wacom.c
@@ -463,12 +463,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -991,8 +994,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;
diff --git a/src/2.6.9/wacom.c b/src/2.6.9/wacom.c
index 733f60d..438a0a8 100644
--- a/src/2.6.9/wacom.c
+++ b/src/2.6.9/wacom.c
@@ -463,12 +463,15 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
}
- }
- if (data[1] & 0x10)
input_report_abs(dev, ABS_MISC, id); /* report tool id */
+ }
else
input_report_abs(dev, ABS_MISC, 0); /* reset tool id */
- input_report_key(dev, wacom->tool[0], data[1] & 0x10);
+
+ if (data[1] & 0x10) /* report in-prox only when in area */
+ input_report_key(dev, wacom->tool[0], 1);
+ if (!(data[1] & 0x90)) /* report out-prox when physically out */
+ input_report_key(dev, wacom->tool[0], 0);
input_sync(dev);
/* send pad data */
@@ -991,8 +994,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom->dev.absmax[ABS_TILT_Y] = 127;
wacom->dev.absmax[ABS_WHEEL] = 1023;
- wacom->dev.absmax[ABS_RX] = 4097;
- wacom->dev.absmax[ABS_RY] = 4097;
+ wacom->dev.absmax[ABS_RX] = 4096;
+ wacom->dev.absmax[ABS_RY] = 4096;
wacom->dev.absmin[ABS_RZ] = -900;
wacom->dev.absmax[ABS_RZ] = 899;
wacom->dev.absmin[ABS_THROTTLE] = -1023;