diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | GPL | 62 | ||||
-rw-r--r-- | README | 21 | ||||
-rw-r--r-- | configure.in | 5 | ||||
-rw-r--r-- | src/2.6.10/wacom.c | 4 | ||||
-rw-r--r-- | src/2.6.16/wacom_wac.c | 8 | ||||
-rwxr-xr-x | src/2.6.19/wacom_wac.c | 125 | ||||
-rwxr-xr-x | src/2.6.28/Makefile.in | 2 | ||||
-rw-r--r-- | src/2.6.28/wacom_sys.c | 2 | ||||
-rw-r--r-- | src/2.6.9/wacom.c | 4 | ||||
-rwxr-xr-x | src/include/Xwacom.h | 2 | ||||
-rwxr-xr-x | src/wacomxi/wacomcpl-exec | 5 | ||||
-rwxr-xr-x | src/xdrv/Makefile.am | 3 | ||||
-rwxr-xr-x | src/xdrv/wcmCommon.c | 21 | ||||
-rwxr-xr-x | src/xdrv/wcmConfig.c | 4 | ||||
-rwxr-xr-x | src/xdrv/wcmUSB.c | 15 | ||||
-rw-r--r-- | src/xdrv/wcmXCommand.c | 10 | ||||
-rwxr-xr-x | src/xdrv/xf86Wacom.h | 1 |
18 files changed, 145 insertions, 157 deletions
@@ -1,3 +1,11 @@ +2009-04-23 Ping Cheng <pingc@wacom.com> + * Updated README + * Updated GPL to version 2 + * Updated wacom_wac.c + * Brought configure.in and inlcude files in-sync with Fedora 10/11 + * Fixed a few button and in-prox/out-prox issues + * Label 0.8.3-3 + 2009-04-03 Ping Cheng <pingc@wacom.com> * Support kernels 2.6.28 and 2.6.29 * Added 10-linuxwacom.fdi from Peter Hutterer @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -278,63 +278,3 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. @@ -1,12 +1,21 @@ README -April 03, 2009 +April 23, 2009 ============================================================================== -Most end users would probably only need to update the Wacom X driver and the -/etc/X11/xorg.conf file to use the rich features that Wacom tablets offer. -The steps could be as simple as: +Most end users would probably only need to update the /etc/X11/xorg.conf file +and sometime probably the Wacom X driver as well to use the rich features that +Wacom tablets offer. The steps could be as simple as: + + $ su + # cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak + # gedit /etc/X11/xorg.conf + +then follow the step listed at http://linuxwacom.sourceforge.net/index.php/howto/x11 +or "man wacom" if you don't have network access to add sections for Wacom device. + +If by some reason your distribution doesn't have include Wacom driver or you want to +to use the newer release, you can download the package then -download the package then $ bunzip2 linuxwacom.tar.bz2 $ tar xvf linuxwacom.tar $ cd linuxwacom/prebuilt @@ -14,8 +23,6 @@ download the package then # yum remove linuxwacom # ./uninstall # ./install - # cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak - # gedit /etc/X11/xorg.conf # reboot ============================================================================== diff --git a/configure.in b/configure.in index 578520a..e8799a0 100644 --- a/configure.in +++ b/configure.in @@ -577,6 +577,11 @@ if test -f $WCM_XLIB_DIR/libxf86config.a -o -f $WCM_XLIB_DIR/libxf86config.so; t fi fi +if test "$WCM_ENV_XFREE86" != yes; then + PKG_CHECK_MODULES(XORG, [xorg-server]) + AC_SUBST([XORG_CFLAGS]) +fi + # Define X_CFLAGS, X_LIBS, X_EXTRA_LIBS and X_PRELIBS as required if X # is found, else defines X_DISPLAY_MISSING. We need at least X_CFLAGS. AC_PATH_XTRA diff --git a/src/2.6.10/wacom.c b/src/2.6.10/wacom.c index 3a35c5e..e105ecf 100644 --- a/src/2.6.10/wacom.c +++ b/src/2.6.10/wacom.c @@ -635,6 +635,8 @@ static int wacom_intuos_inout(struct urb *urb) input_report_abs(dev, ABS_X, 0); input_report_abs(dev, ABS_Y, 0); input_report_abs(dev, ABS_DISTANCE, 0); + input_report_abs(dev, ABS_TILT_X, 0); + input_report_abs(dev, ABS_TILT_Y, 0); if (wacom->tool[idx] >= BTN_TOOL_MOUSE) { input_report_key(dev, BTN_LEFT, 0); input_report_key(dev, BTN_MIDDLE, 0); @@ -645,8 +647,6 @@ static int wacom_intuos_inout(struct urb *urb) input_report_abs(dev, ABS_RZ, 0); } else { input_report_abs(dev, ABS_PRESSURE, 0); - input_report_abs(dev, ABS_TILT_X, 0); - input_report_abs(dev, ABS_TILT_Y, 0); input_report_key(dev, BTN_STYLUS, 0); input_report_key(dev, BTN_STYLUS2, 0); input_report_key(dev, BTN_TOUCH, 0); diff --git a/src/2.6.16/wacom_wac.c b/src/2.6.16/wacom_wac.c index 4ca672b..20e0ee8 100644 --- a/src/2.6.16/wacom_wac.c +++ b/src/2.6.16/wacom_wac.c @@ -363,6 +363,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom, void *wcombo) /* Exit report */ if ((data[1] & 0xfe) == 0x80) { + /* reset all states otherwise we lose the initial states + * when in-prox next time + */ wacom_report_abs(wcombo, ABS_X, 0); wacom_report_abs(wcombo, ABS_Y, 0); wacom_report_abs(wcombo, ABS_DISTANCE, 0); @@ -377,13 +380,13 @@ static int wacom_intuos_inout(struct wacom_wac *wacom, void *wcombo) } else { wacom_report_abs(wcombo, ABS_PRESSURE, 0); wacom_report_key(wcombo, BTN_TOUCH, 0); - wacom_report_abs(wcombo, ABS_TILT_X, 0); - wacom_report_abs(wcombo, ABS_TILT_Y, 0); wacom_report_key(wcombo, BTN_STYLUS, 0); wacom_report_key(wcombo, BTN_STYLUS2, 0); wacom_report_abs(wcombo, ABS_WHEEL, 0); wacom_report_abs(wcombo, ABS_Z, 0); } + wacom_report_abs(wcombo, ABS_TILT_X, 0); + wacom_report_abs(wcombo, ABS_TILT_Y, 0); wacom_report_key(wcombo, wacom->tool[idx], 0); wacom_report_abs(wcombo, ABS_MISC, 0); /* reset tool id */ wacom_input_event(wcombo, EV_MSC, MSC_SERIAL, wacom->serial[idx]); @@ -646,6 +649,7 @@ int wacom_tpc_irq (struct wacom_wac *wacom, void *wcombo) } } else if (touchOut || !prox) { /* force touch out-prox */ wacom_report_abs(wcombo, ABS_MISC, TOUCH_DEVICE_ID); + wacom_report_key(wcombo, wacom->tool[1], 0); wacom_report_key(wcombo, BTN_TOUCH, 0); touchOut = 0; touchInProx = 1; diff --git a/src/2.6.19/wacom_wac.c b/src/2.6.19/wacom_wac.c index a1cf9e1..8cfd62c 100755 --- a/src/2.6.19/wacom_wac.c +++ b/src/2.6.19/wacom_wac.c @@ -370,13 +370,13 @@ static int wacom_intuos_inout(struct wacom_wac *wacom, void *wcombo) } else { wacom_report_abs(wcombo, ABS_PRESSURE, 0); wacom_report_key(wcombo, BTN_TOUCH, 0); - wacom_report_abs(wcombo, ABS_TILT_X, 0); - wacom_report_abs(wcombo, ABS_TILT_Y, 0); wacom_report_key(wcombo, BTN_STYLUS, 0); wacom_report_key(wcombo, BTN_STYLUS2, 0); wacom_report_abs(wcombo, ABS_WHEEL, 0); wacom_report_abs(wcombo, ABS_Z, 0); } + wacom_report_abs(wcombo, ABS_TILT_X, 0); + wacom_report_abs(wcombo, ABS_TILT_Y, 0); wacom_report_key(wcombo, wacom->tool[idx], 0); wacom_report_abs(wcombo, ABS_MISC, 0); /* reset tool id */ wacom_input_event(wcombo, EV_MSC, MSC_SERIAL, wacom->serial[idx]); @@ -638,6 +638,7 @@ int wacom_tpc_irq(struct wacom_wac *wacom, void *wcombo) } } else if (touchOut || !prox) { /* force touch out-prox */ wacom_report_abs(wcombo, ABS_MISC, TOUCH_DEVICE_ID); + wacom_report_key(wcombo, wacom->tool[1], 0); wacom_report_key(wcombo, BTN_TOUCH, 0); touchOut = 0; touchInProx = 1; @@ -787,65 +788,66 @@ void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_w } static struct wacom_features wacom_features[] = { - { "Wacom Penpartner", 7, 5040, 3780, 255, 0, PENPARTNER }, - { "Wacom Graphire", 8, 10206, 7422, 511, 63, GRAPHIRE }, - { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 63, GRAPHIRE }, - { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 63, GRAPHIRE }, - { "Wacom Graphire3", 8, 10208, 7424, 511, 63, GRAPHIRE }, - { "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 Bamboo1 Medium",8, 16704, 12064, 511, 63, GRAPHIRE }, - { "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, 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 }, - { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 31, INTUOS }, - { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 31, INTUOS }, - { "Wacom PL400", 8, 5408, 4056, 255, 0, PL }, - { "Wacom PL500", 8, 6144, 4608, 255, 0, PL }, - { "Wacom PL600", 8, 6126, 4604, 255, 0, PL }, - { "Wacom PL600SX", 8, 6260, 5016, 255, 0, PL }, - { "Wacom PL550", 8, 6144, 4608, 511, 0, PL }, - { "Wacom PL800", 8, 7220, 5780, 511, 0, PL }, - { "Wacom PL700", 8, 6758, 5406, 511, 0, PL }, - { "Wacom PL510", 8, 6282, 4762, 511, 0, PL }, - { "Wacom DTU710", 8, 34080, 27660, 511, 0, PL }, - { "Wacom DTF521", 8, 6282, 4762, 511, 0, PL }, - { "Wacom DTF720", 8, 6858, 5506, 511, 0, PL }, - { "Wacom DTU1931", 8, 37832, 30305, 511, 0, PL }, - { "Wacom Cintiq Partner",8, 20480, 15360, 511, 0, PTU }, - { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, - { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, - { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, - { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 31, INTUOS }, - { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 31, INTUOS }, - { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 63, INTUOS3S }, - { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 63, INTUOS3 }, - { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 63, INTUOS3 }, - { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, INTUOS3L }, - { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, INTUOS3L }, - { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, - { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, - { "Wacom Intuos4 4x6", 10, 31496, 19685, 2047, 63, INTUOS4S }, - { "Wacom Intuos4 6x9", 10, 44704, 27940, 2047, 63, INTUOS4 }, - { "Wacom Intuos4 8x13", 10, 65024, 40640, 2047, 63, INTUOS4L }, - { "Wacom Intuos4 12x19", 10, 97536, 60960, 2047, 63, INTUOS4L }, - { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, - { "Wacom Cintiq 20WSX", 10, 86680, 54180, 1023, 63, WACOM_BEE }, - { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, WACOM_BEE }, - { "Wacom ISDv4 90", 8, 26202, 16325, 255, 0, TABLETPC }, - { "Wacom ISDv4 93", 8, 26202, 16325, 255, 0, TABLETPC }, - { "Wacom ISDv4 9A", 8, 26202, 16325, 255, 0, TABLETPC }, - { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, + { "Wacom Penpartner", 7, 5040, 3780, 255, 0, PENPARTNER }, + { "Wacom Graphire", 8, 10206, 7422, 511, 63, GRAPHIRE }, + { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 63, GRAPHIRE }, + { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 63, GRAPHIRE }, + { "Wacom Graphire3", 8, 10208, 7424, 511, 63, GRAPHIRE }, + { "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 Bamboo1 Medium", 8, 16704, 12064, 511, 63, GRAPHIRE }, + { "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, 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 }, + { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 31, INTUOS }, + { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 31, INTUOS }, + { "Wacom PL400", 8, 5408, 4056, 255, 0, PL }, + { "Wacom PL500", 8, 6144, 4608, 255, 0, PL }, + { "Wacom PL600", 8, 6126, 4604, 255, 0, PL }, + { "Wacom PL600SX", 8, 6260, 5016, 255, 0, PL }, + { "Wacom PL550", 8, 6144, 4608, 511, 0, PL }, + { "Wacom PL800", 8, 7220, 5780, 511, 0, PL }, + { "Wacom PL700", 8, 6758, 5406, 511, 0, PL }, + { "Wacom PL510", 8, 6282, 4762, 511, 0, PL }, + { "Wacom DTU710", 8, 34080, 27660, 511, 0, PL }, + { "Wacom DTF521", 8, 6282, 4762, 511, 0, PL }, + { "Wacom DTF720", 8, 6858, 5506, 511, 0, PL }, + { "Wacom DTU1931", 8, 37832, 30305, 511, 0, PL }, + { "Wacom Cintiq Partner", 8, 20480, 15360, 511, 0, PTU }, + { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, + { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, + { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, + { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 31, INTUOS }, + { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 31, INTUOS }, + { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 63, INTUOS3S }, + { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 63, INTUOS3 }, + { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 63, INTUOS3 }, + { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, INTUOS3L }, + { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, INTUOS3L }, + { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, + { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, + { "Wacom Intuos4 4x6", 10, 31496, 19685, 2047, 63, INTUOS4S }, + { "Wacom Intuos4 6x9", 10, 44704, 27940, 2047, 63, INTUOS4 }, + { "Wacom Intuos4 8x13", 10, 65024, 40640, 2047, 63, INTUOS4L }, + { "Wacom Intuos4 12x19", 10, 97536, 60960, 2047, 63, INTUOS4L }, + { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, + { "Wacom Cintiq 20WSX", 10, 86680, 54180, 1023, 63, WACOM_BEE }, + { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, WACOM_BEE }, + { "Wacom Graphire Bluetooth", 8, 10208, 7424, 511, 63, WACOM_G4 }, + { "Wacom ISDv4 90", 8, 26202, 16325, 255, 0, TABLETPC }, + { "Wacom ISDv4 93", 8, 26202, 16325, 255, 0, TABLETPC }, + { "Wacom ISDv4 9A", 8, 26202, 16325, 255, 0, TABLETPC }, + { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, { } }; @@ -905,6 +907,7 @@ static struct usb_device_id wacom_ids[] = { { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC5) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, + { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x81) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x90) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x93) }, { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x9A) }, diff --git a/src/2.6.28/Makefile.in b/src/2.6.28/Makefile.in index fb830e0..b00a819 100755 --- a/src/2.6.28/Makefile.in +++ b/src/2.6.28/Makefile.in @@ -24,8 +24,6 @@ export WCM_OPTION_WACOM all: # Copy Wacom specific code which is common to all kernel releases ifeq ($(WCM_OPTION_WACOM),yes) - cp -f ../2.6.19/wacom_wac.c . - cp -f ../2.6.22/wacom_wac.h . cp -f ../2.6.27/wacom.h . endif @echo ' Building linuxwacom drivers for 2.6 kernel.' diff --git a/src/2.6.28/wacom_sys.c b/src/2.6.28/wacom_sys.c index a9d5031..c60c576 100644 --- a/src/2.6.28/wacom_sys.c +++ b/src/2.6.28/wacom_sys.c @@ -491,7 +491,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i * Ask the tablet to report tablet data if it is not a Tablet PC. * Repeat until it succeeds */ - if (wacom_wac->features->type != TABLETPC) { + if ((wacom_wac->features->type != TABLETPC) && (wacom_wac->features->type != WACOM_GB)) { do { rep_data[0] = 2; rep_data[1] = 2; diff --git a/src/2.6.9/wacom.c b/src/2.6.9/wacom.c index c0ba32c..7d3b00d 100644 --- a/src/2.6.9/wacom.c +++ b/src/2.6.9/wacom.c @@ -644,14 +644,14 @@ static int wacom_intuos_inout(struct urb *urb) input_report_abs(dev, ABS_RZ, 0); } else { input_report_abs(dev, ABS_PRESSURE, 0); - input_report_abs(dev, ABS_TILT_X, 0); - input_report_abs(dev, ABS_TILT_Y, 0); input_report_key(dev, BTN_STYLUS, 0); input_report_key(dev, BTN_STYLUS2, 0); input_report_key(dev, BTN_TOUCH, 0); input_report_abs(dev, ABS_WHEEL, 0); input_report_abs(dev, ABS_Z, 0); } + input_report_abs(dev, ABS_TILT_X, 0); + input_report_abs(dev, ABS_TILT_Y, 0); input_report_key(dev, wacom->tool[idx], 0); input_report_abs(dev, ABS_MISC, 0); /* reset tool id */ input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); diff --git a/src/include/Xwacom.h b/src/include/Xwacom.h index 6618a49..33ff2cf 100755 --- a/src/include/Xwacom.h +++ b/src/include/Xwacom.h @@ -96,11 +96,11 @@ #define XWACOM_PARAM_TVRESOLUTION1 208 #define XWACOM_PARAM_COREEVENT 209 #define XWACOM_PARAM_THRESHOLD 210 +#define XWACOM_PARAM_TOOLSERIAL 211 #define XWACOM_PARAM_GETONLYPARAM 320 #define XWACOM_PARAM_TID 321 #define XWACOM_PARAM_TOOLID 322 -#define XWACOM_PARAM_TOOLSERIAL 323 #define XWACOM_PARAM_NUMSCREEN 350 #define XWACOM_PARAM_STOPX0 351 #define XWACOM_PARAM_STOPY0 352 diff --git a/src/wacomxi/wacomcpl-exec b/src/wacomxi/wacomcpl-exec index c8cba71..439320b 100755 --- a/src/wacomxi/wacomcpl-exec +++ b/src/wacomxi/wacomcpl-exec @@ -1008,8 +1008,9 @@ proc addMenu { curb } { set i 9 } else { set bmenu [ tk_optionMenu $currentW.f.$curb db$curb $db(1) $db(2) \ - $db(3) $db(4) $db(5) $db($displayToggleB) $db($ignoreButton) ] - set i 7 + $db(3) $db(4) $db(5) $db($doubleClickB) $db($displayToggleB) \ + $db($ignoreButton) ] + set i 8 } set i [expr ($i+1)] diff --git a/src/xdrv/Makefile.am b/src/xdrv/Makefile.am index be4f2d4..0d451b1 100755 --- a/src/xdrv/Makefile.am +++ b/src/xdrv/Makefile.am @@ -15,7 +15,8 @@ EXTRA_DIST = xf86Wacom.c wcmXCommand.c xf86Wacom.h \ ../include/Xwacom.h wcmTilt2Rotation.c if WCM_ENV_XORGSDK -DRIVER_INCLUDES = -I../include -I$(WCM_XORGSDK_DIR) $(X_CFLAGS) +DRIVER_INCLUDES = -I../include -I$(WCM_XORGSDK_DIR) $(X_CFLAGS) @XORG_CFLAGS@ + endif if WCM_ENV_XFREE86 diff --git a/src/xdrv/wcmCommon.c b/src/xdrv/wcmCommon.c index b031338..d8b4d79 100755 --- a/src/xdrv/wcmCommon.c +++ b/src/xdrv/wcmCommon.c @@ -521,7 +521,7 @@ static void sendAButton(LocalDevicePtr local, int button, int mask, button, mask, priv->button[button], local->name, (priv->button[button] & AC_CORE) ? "yes" : "no")); - switch (button & AC_TYPE) + switch (priv->button[button] & AC_TYPE) { case AC_BUTTON: xf86PostButtonEvent(local->dev, is_absolute, priv->button[button] & AC_CODE, @@ -575,7 +575,6 @@ static void sendAButton(LocalDevicePtr local, int button, int mask, /* Left button down */ xf86PostButtonEvent(local->dev, is_absolute, 1,1,0,naxes, rx,ry,rz,v3,v4,v5); - /* Left button up */ xf86PostButtonEvent(local->dev, is_absolute, 1,0,0,naxes,rx,ry,rz,v3,v4,v5); @@ -746,6 +745,7 @@ static void sendCommonEvents(LocalDevicePtr local, const WacomDeviceState* ds, i WacomDevicePtr priv = (WacomDevicePtr) local->private; int buttons = ds->buttons; + /* send button events when state changed or first time in prox and button unpresses */ if (priv->oldButtons != buttons || (!priv->oldProximity && !buttons)) xf86WcmSendButtons(local,buttons,x,y,z,v3,v4,v5); @@ -1528,7 +1528,7 @@ static void commonDispatchDevice(WacomCommonPtr common, unsigned int channel, int tol = common->wcmMaxZ / 250; if (strstr(common->wcmModel->name, "Intuos4")) tol = common->wcmMaxZ / 125; - if (filtered.pressure < common->wcmThreshold + tol) + if (filtered.pressure < common->wcmThreshold - tol) filtered.buttons &= ~button; } /* transform pressure */ @@ -1543,7 +1543,7 @@ static void commonDispatchDevice(WacomCommonPtr common, unsigned int channel, (5 - common->wcmCapacity)) filtered.buttons |= button; } - else if (!(priv->flags & ABSOLUTE_FLAG) && !priv->hardProx) + else if (IsCursor(priv) && !priv->hardProx) { /* initial current max distance */ if (strstr(common->wcmModel->name, "Intuos")) @@ -1613,7 +1613,7 @@ static void commonDispatchDevice(WacomCommonPtr common, unsigned int channel, double delty = filtered.y - priv->oldY; deltx *= priv->factorY*priv->speed; delty *= priv->factorY*priv->speed; - + if (ABS(deltx)<1 && ABS(delty)<1) { /* don't move the cursor */ @@ -1624,7 +1624,11 @@ static void commonDispatchDevice(WacomCommonPtr common, unsigned int channel, filtered.y = priv->oldY; } else /* no other events to send */ + { + DBG(10, common->debugLevel, ErrorF( + "Ignore non-movement relative data \n")); return; + } } else { @@ -1637,10 +1641,11 @@ static void commonDispatchDevice(WacomCommonPtr common, unsigned int channel, } } - /* force out-prox when distance is outside wcmCursorProxoutDist. */ - if (!(priv->flags & ABSOLUTE_FLAG)) + /* force out-prox when distance is outside wcmCursorProxoutDist for pucks */ + if (IsCursor(priv)) { - if (strstr(common->wcmModel->name, "Intuos")) + /* force out-prox when distance is outside wcmCursorProxoutDist. */ + if (common->wcmProtocolLevel == 5) { if (common->wcmMaxCursorDist > filtered.distance) common->wcmMaxCursorDist = filtered.distance; diff --git a/src/xdrv/wcmConfig.c b/src/xdrv/wcmConfig.c index 213d9b6..2db7332 100755 --- a/src/xdrv/wcmConfig.c +++ b/src/xdrv/wcmConfig.c @@ -217,8 +217,8 @@ LocalDevicePtr xf86WcmAllocate(char* name, int flag) common->wcmMaxCursorDist = 0; /* Max distance received so far */ common->wcmCursorProxoutDist = 0; /* Max mouse distance for proxy-out max/256 units */ - common->wcmCursorProxoutDistDefault = PROXOUT_GRAPHIRE_DISTANCE; - /* default to Graphire */ + common->wcmCursorProxoutDistDefault = PROXOUT_INTUOS_DISTANCE; + /* default to Intuos */ common->wcmSuppress = DEFAULT_SUPPRESS; /* transmit position if increment is superior */ common->wcmRawSample = DEFAULT_SAMPLES; diff --git a/src/xdrv/wcmUSB.c b/src/xdrv/wcmUSB.c index 16acd12..725cd46 100755 --- a/src/xdrv/wcmUSB.c +++ b/src/xdrv/wcmUSB.c @@ -248,7 +248,7 @@ static void usbParseChannel(LocalDevicePtr local, int channel, int serial); static WacomModel usbIntuos = { - "USB Intuos", + "USB Intuos1", usbInitProtocol5, NULL, /* resolution not queried */ usbWcmGetRanges, @@ -931,13 +931,20 @@ static void usbParseEvent(LocalDevicePtr local, } } } + else /* ignore non-serial number tools for V5 models */ + { + common->wcmLastToolSerial = 0; + common->wcmEventCnt = 0; + return; + } /* fresh out of channels */ if (channel < 0) { /* This should never happen in normal use. - * So something was wrong. Let's start over again. - * Force prox-out for all channels. + * User is probably using more than one tools on the tablet. + * Or moving the tablet around while using a tool. + * Let's start over again. Force prox-out for all channels. */ for (i=0; i<MAX_CHANNELS; ++i) { @@ -951,8 +958,6 @@ static void usbParseEvent(LocalDevicePtr local, ErrorF("usbParse (%s with serial number: %u) at %d: Exceeded channel count; " "ignoring the events.\n", local->name, common->wcmLastToolSerial, (int)GetTimeInMillis()); - return; - } else usbParseChannel(local,channel,common->wcmLastToolSerial); diff --git a/src/xdrv/wcmXCommand.c b/src/xdrv/wcmXCommand.c index ebfa72d..e9d64a6 100644 --- a/src/xdrv/wcmXCommand.c +++ b/src/xdrv/wcmXCommand.c @@ -23,6 +23,7 @@ * 2008-05-14 0.2 - Rotate through routine xf86WcmRotateTablet * 2008-06-26 0.3 - Added Capacity * 2009-03-16 0.4 - Added leftOF for TwinView + * 2009-04-21 0.5 - Added set serial option */ @@ -331,6 +332,15 @@ static int xf86WcmSetParam(LocalDevicePtr local, int param, int value) xf86ReplaceIntOption(local->options, "Threshold", common->wcmThreshold); break; + case XWACOM_PARAM_TOOLSERIAL: + if (common->wcmProtocolLevel != 5) + return BadValue; + if (priv->serial != value) + { + priv->serial = value; + xf86ReplaceIntOption(local->options, "Serial", priv->serial); + } + break; case XWACOM_PARAM_XYDEFAULT: xf86WcmSetParam (local, XWACOM_PARAM_TOPX, 0); xf86WcmSetParam (local, XWACOM_PARAM_TOPY, 0); diff --git a/src/xdrv/xf86Wacom.h b/src/xdrv/xf86Wacom.h index 1e6bffd..742f638 100755 --- a/src/xdrv/xf86Wacom.h +++ b/src/xdrv/xf86Wacom.h @@ -64,6 +64,7 @@ #endif #include <misc.h> +#define inline __inline__ #include <xf86.h> #define NEED_XF86_TYPES #if !defined(DGUX) |