diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2009-08-03 12:52:26 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2009-08-03 13:06:17 +1000 |
commit | 0e7c5819592680b8f75e29ad3d97f85bf4fd8da0 (patch) | |
tree | c4d6be57eee7bdb6e4c0967e8c67ca4bde78aa90 /docs/docs.html | |
parent | 3b90a8c834ebd15b8d3bdabe46497080d820ce23 (diff) | |
download | xf86-input-wacom-0e7c5819592680b8f75e29ad3d97f85bf4fd8da0.tar.gz |
Purge all but the X driver from this repository.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'docs/docs.html')
-rw-r--r-- | docs/docs.html | 4729 |
1 files changed, 0 insertions, 4729 deletions
diff --git a/docs/docs.html b/docs/docs.html deleted file mode 100644 index 4214b00..0000000 --- a/docs/docs.html +++ /dev/null @@ -1,4729 +0,0 @@ -<html><head> -<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> - -<title>The Linux Wacom Project</title> -<style><!-- - BODY { background: #FFFFFF; font: 10pt helvetica; color: black } - .motd { font:12pt helvetica; color: navy } - .allhead { font: bold 24pt helvetica; } - .allsub { font: bold 16pt helvetica; } - .tit { font: bold 24pt helvetica; color: navy } - .diff { background: #EEEEFF } - .nav { background: #EEEEEE } - DIV.copy { font: 8pt helvetica; color: gray } - TD.blkhead { font: bold 10pt helvetica; color: gray } - TD.blkbody { font: 10pt helvetica; color: black } - TD.head { background: #000000 } - .title { font: bold 16pt helvetica; color: white } - .menu { font: bold 8pt helvetica; color: white; background: #000066 } - A.menu { text-decoration: none } - A.menu:link { color: #FFFFFF } - A.menu:hover { color: #FFFF00 } - A.copy:link { color: gray } - A.copy:visited { color: gray } - /* Support /PRE scalability. For details, refer to */ - /* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags */ - pre { - white-space: pre; /* CSS2 */ - white-space: pre-wrap; /* css 2.1 */ - white-space: pre-line; /* CSS3 (and 2.1 as well, actually) */ - white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* IE 5.5+ */ - /* IE only to re-specify in addition to word-wrap */ - _white-space: pre; - width: 99%; - } ---></style> -</head><body topmargin="0" leftmargin="0" rightmargin="0" marginheight="0" marginwidth="0"> -<table border="0" cellpadding="0" cellspacing="0" width="100%"> -<tbody><tr><td class="head" align="center" valign="middle"> -<div class="title">The Linux Wacom Project </div> - -</td><td class="head" align="right" valign="middle" width="125"><a href="http://sourceforge.net/"><img src="docs_files/sflogo.png" alt="SourceForge.net Logo" border="0" height="37" width="125"></a></td></tr> -</tbody></table> -<table border="0" cellpadding="0" cellspacing="0" width="100%"> -<tbody><tr><td colspan="2" bgcolor="white"><img src="docs_files/null.gif" height="1" width="1"></td></tr> -<tr><td colspan="2" bgcolor="#000066"><img src="docs_files/null.gif" height="4" width="1"></td></tr> -<tr><td class="menu" align="center"> - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/main">Main</a> | - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/news">News</a> | - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/faq">FAQ</a> | - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/dl">Downloads</a> | - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/help">Help</a> | - <a class="menu" href="http://sourceforge.net/projects/linuxwacom">Development</a> | - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/toc">TOC</a> | - <a class="menu" href="http://linuxwacom.sourceforge.net/index.php/all">All</a> -</td><td class="menu" align="right">Apr 29, 2009</td></tr> -<tr><td colspan="2" bgcolor="#000066"><img src="docs_files/null.gif" height="4" width="1"></td></tr> -<tr><td colspan="2" bgcolor="#aaaaaa"><img src="docs_files/null.gif" height="2" width="1"></td></tr> -</tbody></table> - -<br> - -<center><table border="0" width="80%"><tbody><tr><td> -<center><h1>Linux Wacom Project HOWTO</h1></center><br><center class="nav">Navigation: -<a href="http://linuxwacom.sourceforge.net/index.php/howto/main">MAIN</a> <a href="http://linuxwacom.sourceforge.net/index.php/howto/copy">NEXT</a> <a href="http://linuxwacom.sourceforge.net/index.php/howto/toc">INDEX</a> <a href="http://linuxwacom.sourceforge.net/index.php/howto/all"><b>ALL</b></a> </center><br><br> -<a name="copy"> -</a><center> -<a name="copy">Copyright (C) 2002-2009 - LinuxWacom<br> -<br> -Permission is granted to copy, distribute and/or modify this document<br> -under the terms of the GNU GENERAL PUBLIC LICENSE as published by the<br> -Free Software Foundation; either version 2 of the License, or <br> -(at your option) any later version. A copy of the license is <br> -included in the section entitled -</a><a href="#lic">GNU Free Documentation License</a>.<br> -</center> -<br> -<br> -<a name="intro"> -</a><h1><a name="intro">1.0 - Introduction</a></h1> -<p><a name="intro">This document began in November 2002 as a HOWTO for setting up a USB -Wacom Intuos2 on Redhat 8.0. It has since grown to cover all Wacom -tablets, USB and serial, running on various different Linux -distributions. As of December 2002, this project has transformed into -the Linux Wacom Project. Work on this -document is on-going so if you find an error, have a question, or have -something to add, please send an email to: -</a><a href="mailto:linuxwacom-discuss@lists.sf.net?subject=LinuxWacom">linuxwacom-discuss@lists.sf.net</a>.<a name="howto"> -</a></p><h2><a name="howto">1.1 - How To Use This Document</a></h2> -<p><a name="howto">In terms of document organization, if you have not figured it out already, -you can browse the document one page at a time, or you can click on the -</a><a href="http://linuxwacom.sourceforge.net/index.php/howto/all">ALL</a> link and view the entire -thing in one long page. - -</p><blockquote><div class="diff"> -Where the guide differs between distributions or packages, I have added a -comment which appears indented with a light blue background. -</div></blockquote> - -<p>Also, it bears mentioning since it's a detail often missed: there are -two drivers in the Linux Wacom Project- wacom.o and wacom_drv.o. The first -driver is the USB kernel driver. The second driver is the XFree86 Wacom -driver. Serial users need only be concerned with the wacom_drv.o driver. -USB users need both. If you try to use the wacom_drv.o driver in place of -the wacom.o kernel driver or visa-versa, things generally won't work. - -</p><p>Next, this document was written with the assumption that you are starting -from scratch with a relatively recent distribution of the Linux kernel. Also, -if you have already added lines to your XFree86/Xorg configuration file -(XF86Config/XF86Config-4 or xorg.conf), you should comment them out and -restart X. Since we'll be stepping through the entire process, we need X to -ignore the tablet until we're ready. Otherwise, X will just get in the way. - -</p><p>Finally, if you know what you're doing, you can leave your X settings -intact, print this out, switch to runlevel 3, and follow along from the -console. An HTML version of this document can be found in the docs directory at <a href="http://linuxwacom.cvs.sourceforge.net/linuxwacom/linuxwacom-dev/docs/">docs.html</a>. -<a name="theory"> -</a></p><h2><a name="theory">1.2 - Wacom Driver Theory of Operation</a></h2> -<p><a name="theory">Wacom tablets are available in serial and USB configurations. They are -also sold as embedded products in certain tablet PC's. I will cover all -three types, but the serial case is the most straightforward, -so we'll start there. - -<br><br> - -</a></p><p><a name="theory"><b>Serial Tablet Operation - The Short Story</b> - -</a></p><p><a name="theory">When a Wacom serial tablet is connected to a COM port, software can -interact with it directly by opening the appropriate device, usually -/dev/ttyS0. The XFree86 Wacom driver (wacom_drv.o) does precisely this, -and all stylus movements are converted into XInput events for programs -like the Gimp to turn into fluid brush strokes. - -</a></p><p><a name="theory">Wacom tablets are capable of handling a number of different data -protocols, and the Linux Wacom Project code currently utilitizes two, -Wacom Protocol IV and Protocol V. Each operates with a fixed-sized -packet, the length of which depends on the model and ROM version. - -</a></p><p><a name="theory">When the serial tablet is reset, it defaults to a standard baud rate, -often 9600 baud. From there, the device type can be queried, and if the -tablet supports it, the baud rate increased to a higher value. Additionally, -model parameters like tablet size can be queried directly to determine -which features are available. - -</a></p><p><a name="theory">Once configured, the tablet streams data back to the application as -tools are brought into and out of proximity, are pressed against the -tablet surface, or are tilted or inverted. - -<br><br> - -</a></p><p><a name="theory"><b>USB Tablet Operation - The Long Story</b> - -</a></p><p><a name="theory">Initially at least, the USB Wacom tablet is an HID compliant device, and when -first connected to the computer, will identify itself as such. -Unfortunately, this is not what you want because in this mode, you will not -get any of the fancy features. The hid-core.c, mousedev.c, and usbmouse.c kernel -drivers contain exceptions for the wacom; when the device is detected, they ignore -the tablet. In this way, the more sophisticated wacom driver has the -opportunity to assume control. - -</a></p><p><a name="theory">The first thing that the driver does is register itself with the USB -subsystem and wait for work to do. When the user plugs the device in, or -the device is first detected, the USB subsystem shops the vendor and -device identifier around, checking it against different drivers. The -wacom driver takes responsibility for the tablet and then notifies the -event system that it will be providing data. It then asks the tablet to -switch from HID-compliant mode to "mode 2", a wacom-specific protocol which -allows for values like pressure, Z rotation, -and tilt. As information arrives, the wacom driver dutifully converts -the data into real-world values and hands it on to the event system. - -</a></p><p><a name="theory">From here, any usermode application can get access to the event data -by opening /dev/input/event0. A stream of events including mouse movements, -clicks, and proximity updates can be read from the device. Similar to the -serial case, XFree86's Wacom driver (wacom_drv.o) has the ability to read -this device, and performs filtering on the data before convert the Linux -input events into XInput events. - -</a></p><p><a name="theory">By breaking the responsibility for the data into three distinct levels, -the kernel code remains simple and robust, the applications generalized, -and the fancy features commonly accessible to all GUI applications in the -X window system itself. This document walks down the entire data path from -the USB kernel driver to the gimp application. - -<br><br> -</a></p><p><a name="theory"><b>Embedded Device Operation - Tablet PC with Wacom Digitizer</b> - -</a></p><p><a name="theory">Refer to </a><a href="#tabletpc">Tablet PC</a> page for detail. - -<a name="starthere"> -</a></p><h1><a name="starthere">2.0 - Getting It Together</a></h1> -<p><a name="starthere">This section is devoted to preparing your system for the installation. -Every distribution handles kernel modules and file locations a bit differently, -so the goal here is to return everything to a known state. - -</a></p><p><a name="starthere">USB users will need to pay specific attention to discussions related to -kernel drivers and modules. Serial tablet users have it much easier, and -can bypass this. Both users will need to make changes to the XFree86/Xorg -configuration file. - -</a><a name="beforestart"> -</a></p><h2><a name="beforestart">2.1 - Before We Start</a></h2> -<p><a name="beforestart">From the beginning, let's make certain that we are on the -same page. First, if you have Wacom related lines in your -XF86Config/XF86Config-4 or xorg.conf files already, you should -comment them out or remove them. In particular, this includes InputDevice -sections with a driver set to "wacom" and their corresponding InputDevice -lines in ServerLayout. When that's done, restart X.<br> - -</a></p><p><a name="beforestart">It would be a wise idea at this time to check your XFree86 or Xorg log -file for references to wacom, wcm, or tablet. If X persists in trying to -interact with the tablet, things will only be problematic later. The log -file is often found at /var/log/XFree86.0.log or /var/log/Xorg.0.log. - -</a></p><p><a name="beforestart">To be prepared for the coming steps, it would be nice if you know what -X server and Linux kernel versions are running on your system. The <i>X -version</i> -command reveals those information for you. - -</a></p><p><a name="beforestart">If you have a USB tablet, you need to check Wacom kernel drvier first -</a><a href="#kernel">The USB Kernel Driver</a>. -Serial tablet or Tablet PC users can go directly to the next section -<a href="#download">Downloading the Code</a> page. -<a name="download"> -</a></p><h2><a name="download">2.2 - Downloading the Code</a></h2> - -<p><a name="download">The file </a><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.2-2.tar.bz2">linuxwacom-0.8.2-2.tar.bz2</a> is the stable package and contains -files that you will need to get your serial or USB tablet working. The -current beta package <a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.3-3.tar.bz2">linuxwacom-0.8.3-3.tar.bz2</a> is also available and may be -used by people who are willing to help test new features. I will never put a -beta package on this site that I am not running myself on my primary -development machine. So you can be certain that if there are any obvious -show stoppers, they will be fixed before you get to see them. - -</p><p>Unpacking the tarball is usually a one-step process, but I show both -steps in case the typical -jxf option doesn't work with tar. - -</p><blockquote><pre>[jej@ayukawa jej]$ bunzip2 linuxwacom-0.8.2-2.tar.bz2 -[jej@ayukawa jej]$ tar -xf linuxwacom-0.8.2-2.tar -[jej@ayukawa jej]$ cd linuxwacom-0.8.2-2</pre></blockquote> - -Once in the package directory, you need only to configure and build the code. -This is described in more detail as you continue. The executables and -wacom_drv.o are installed automatically; the kernel drivers have different -installation procedures depend on the kernel source you use. - -<p>If you are interested, the following tables contain the package contents -and release dates. Otherwise, let's continue. - - -</p><h3>Stable files included for linuxwacom-0.8.2-2:</h3> -<table border="0" cellspacing="5"> -<tbody><tr><th align="left">File</th><th align="left">Comment</th></tr> -<tr><td valign="top">configure</td><td valign="top">- configure script for distribution independent builds</td></tr> -<tr><td valign="top">prebuilt/install</td><td valign="top">- installer for the executables and Wacom X driver to a system identical to the development system.</td></tr> -<tr><td valign="top">prebuilt/uninstall</td><td valign="top">- unistaller for the executables</td></tr> -<tr><td valign="top">prebuilt/wacom.4x.gz</td><td valign="top">- man page for Wacom driver</td></tr> -<tr><td valign="top">prebuilt/32</td><td valign="top">- Wacom X driver and its utility programs for XFree86 and X11R6/Xorg on x86 systems</td></tr> -<tr><td valign="top">prebuilt/64</td><td valign="top">- Wacom X driver and its utility programs for XFree86 and X11R6/Xorg on x86-64 systems</td></tr> -<tr><td valign="top">src/util/wacdump.c</td><td valign="top">- a simple program for displaying tablet event data directly using ncurses</td></tr> -<tr><td valign="top">src/util/xidump.c</td><td valign="top">- a diagnostic program for displaying XInput event data</td></tr> -<tr><td valign="top">src/util/wacscrn.c</td><td valign="top">- curses library for wacdump</td></tr> -<tr><td valign="top">src/util/wactablet.c</td><td valign="top">- wacom tablet library for wacdump</td></tr> -<tr><td valign="top">src/util/wacusb.c</td><td valign="top">- wacom USB protocol library for wacdump</td></tr> -<tr><td valign="top">src/util/wacserial.c</td><td valign="top">- wacom serial protocol library for wacdump</td></tr> -<tr><td valign="top">src/util/wactablet.h</td><td valign="top">- wacom tablet library for wacdump</td></tr> -<tr><td valign="top">src/util/wacusb.h</td><td valign="top">- wacom USB protocol library for wacdump</td></tr> -<tr><td valign="top">src/util/wacserial.h</td><td valign="top">- wacom serial protocol library for wacdump</td></tr> -<tr><td valign="top">src/util/xsetwacom.c</td><td valign="top">- a command line configuration tool for Wacom X driver</td></tr> -<tr><td valign="top">src/util/wacomcfg.c</td><td valign="top">- configuration option library for xsetwacom</td></tr> -<tr><td valign="top">src/util/wcmAction.c</td><td valign="top">- keystroke and modifier encoding/decoding</td></tr> -<tr><td valign="top">src/util/wcmAction.h</td><td valign="top">- keystroke routine definitions</td></tr> -<tr><td valign="top">src/util/hal-setup-wacom.c</td><td valign="top">- a HAL service program for Wacom devices</td></tr> -<tr><td valign="top">src/util/10-linuxwacom.fdi</td><td valign="top">- a HAL script for Wacom devices</td></tr> -<tr><td valign="top">src/include/Xwacom.h</td><td valign="top">- configuration options for xsetwacom</td></tr> -<tr><td valign="top">src/2.6.x/wacom.c</td><td valign="top">- replacement kernel driver for kernel 2.6.x where x can be 9 and 10</td></tr> -<tr><td valign="top">src/2.6.x/wacom_sys.c</td><td valign="top">- wacom kernel driver specific to each major kernel release, where x can be 11 to 28</td></tr> -<tr><td valign="top">src/2.6.x/wacom_wac.c</td><td valign="top">- wacom kernel driver processes tablet specific information, where x can be 16 or 28</td></tr> -<tr><td valign="top">src/2.6.x/wacom.h</td><td valign="top">- wacom kernel driver header specific to each major kernel release, where x can be 11 to 28</td></tr> -<tr><td valign="top">src/2.6.16/wacom_wac.h</td><td valign="top">- part of wacom kernel driver header for tablet specific declaration and definitions </td></tr> -<tr><td valign="top">src/2.6.x/hid-core.c</td><td valign="top">- replacement kernel driver for kernel 2.6.x where x can be 8 to 16, use only if needed</td></tr> -<tr><td valign="top">src/xdrv/xf86Wacom.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Binary available in prebuilt directory.</td></tr> -<tr><td valign="top">src/xdrv/xf86Wacom.h</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile.</td></tr> -<tr><td valign="top">src/xdrv/wcmCommon.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Common to USB and serial tablets</td></tr> -<tr><td valign="top">src/xdrv/wcmXCommand.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. APIs to xsetwacom.</td></tr> -<tr><td valign="top">src/xdrv/wcmCompat.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. XFree86 4.x support</td></tr> -<tr><td valign="top">src/xdrv/wcmConfig.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Configuration setup</td></tr> -<tr><td valign="top">src/xdrv/wcmFilter.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Raw data filters</td></tr> -<tr><td valign="top">src/xdrv/wcmFilter.h</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Raw data filters</td></tr> -<tr><td valign="top">src/xdrv/wcmISDV4.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. General Tablet PC</td></tr> -<tr><td valign="top">src/xdrv/wcmSerial.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Serial tablet support</td></tr> -<tr><td valign="top">src/xdrv/wcmSerial.h</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Serial tablet support</td></tr> -<tr><td valign="top">src/xdrv/wcmUSB.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. USB tablet support</td></tr> -<tr><td valign="top">src/xdrv/wcmTilt2Rotation.c</td><td valign="top">- source for wacom_drv.o; requires XFree86/Xorg build environment to compile. Converting mouse tilt to rotation</td></tr> -<tr><td valign="top">src/wacomxi/wacomcpl-exec</td><td valign="top">- a graphic configuration tool for wacom XFree86 driver</td></tr> -<tr><td valign="top">src/wacomxi/wacomxi.c</td><td valign="top">- calibration library for xsetwacom</td></tr> -<tr><td valign="top">src/wacomxi/wacomxi.h</td><td valign="top">- calibration library for xsetwacom</td></tr> -<tr><td valign="top">GPL</td><td valign="top">- the GNU General Public License, in case you did not already have one lying around</td></tr> -</tbody></table> - -<h3>Stable Packages by Version and Date:</h3> -<table border="0" cellspacing="5"> -<tbody><tr><th align="left">File</th><th></th><th align="left">Date</th><th align="left">Comment</th></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.2-2.tar.bz2">linuxwacom-0.8.2-2.tar.bz2</a></td><td valign="top">-</td><td valign="top">2009-01-19</td><td valign="top">Support: USB Tablet PC with and without touch; kernels up to 2.6.28; Bamboo1 and Monarch; new wacomcpl features.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.0-3.tar.bz2">linuxwacom-0.8.0-3.tar.bz2</a></td><td valign="top">-</td><td valign="top">2008-05-23</td><td valign="top">Support: -kernels up to 2.6.25; Keystrokes for both buttons and expresskeys; New -tablets: Bamboo series and Cintiq 12WX & 20WSX, and so much more -that you can not afford to miss.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.8-3.tar.bz2">linuxwacom-0.7.8-3.tar.bz2</a></td><td valign="top">-</td><td valign="top">2007-08-15</td><td valign="top">Supports -new tablet, Bamboo. Provides prebuilt Wacom X driver and its utility -programs for x86_32 and x86_64 systems. Adds many new xsetwacom options.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.6-4.tar.bz2">linuxwacom-0.7.6-4.tar.bz2</a></td><td valign="top">-</td><td valign="top">2006-12-01</td><td valign="top">Updated xsetwacom and support kernel 2.6.17/18, Intuos3 4x6 and on-the-fly tablet rotation.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.4-3.tar.bz2">linuxwacom-0.7.4-3.tar.bz2</a></td><td valign="top">-</td><td valign="top">2006-06-19</td><td valign="top">Supports kernels 2.6.15/16, 2 new Intuos3 (12x12 and 12x19), and DTF 521.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.2.tar.bz2">linuxwacom-0.7.2.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-12-21</td><td valign="top">Updated configuration script and support kernel 2.6.13/14, Graphire4, PL710, DTF720, Intuos3 6x11 and Volito2 .</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.0-1.tar.bz2">linuxwacom-0.7.0-1.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-09-23</td><td valign="top">Updated wacomcpl and support 16 buttons for all tools.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.0-x86-64-1.tar.bz2">linuxwacom-0.7.0-x86-64-1.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-09-23</td><td valign="top">Updated wacomcpl and support 16 buttons for all tools.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.8.tar.bz2">linuxwacom-0.6.8.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-05-05</td><td valign="top">Support Cintiq 21UX and kernel 2.6.11.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.6.tar.bz2">linuxwacom-0.6.6.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-12-01</td><td valign="top">Build .ko locally and support kernel 2.6.10.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.4.tar.bz2">linuxwacom-0.6.4.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-08-06</td><td valign="top">Updated wacusb.c and fixed USB tablet protocol V dual input bug.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.3.tar.bz2">linuxwacom-0.6.3.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-05-25</td><td valign="top">Fixed tool on tablet and relative speed bugs.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.2.tar.bz2">linuxwacom-0.6.2.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-04-02</td><td valign="top">Fixed DoubleSpeed, DoubleRadius, and TwinView issues.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.1.tar.bz2">linuxwacom-0.6.1.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-03-02</td><td valign="top">added wacomcpl, support kernel 2.4.24 and 2.6.2/3</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.0.tar.bz2">linuxwacom-0.6.0.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-02-04</td><td valign="top">added wacomcpl, support kernel 2.4.22 and 2.6.0</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.4.1.tar.gz">linuxwacom-0.4.1.tar.gz</a></td><td valign="top">-</td><td valign="top">2003-03-22</td><td valign="top">added xidump, checks for ncurses</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.4.0.tar.gz">linuxwacom-0.4.0.tar.gz</a></td><td valign="top">-</td><td valign="top">2003-01-31</td><td valign="top">production release from 0.3.7-beta</td></tr> -</tbody></table> -<h3>Beta Packages by Version and Date:</h3> -<table border="0" cellspacing="5"> -<tbody><tr><th align="left">File</th><th></th><th align="left">Date</th><th align="left">Comment</th></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.3-3.tar.bz2">linuxwacom-0.8.3-3.tar.bz2</a></td><td valign="top">-</td><td valign="top">2009-04-27</td><td valign="top">Support Inutos4 tablets. Support kernel upto 2.6.29. Support Xorg 1.6. Updated multi-monitor suppport</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.1-6.tar.bz2">linuxwacom-0.8.1-6.tar.bz2</a></td><td valign="top">-</td><td valign="top">2008-10-24</td><td valign="top">Support USB Tablet PC with and without touch. Support kernel 2.6.27</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.9-11.tar.bz2">linuxwacom-0.7.9-11.tar.bz2</a></td><td valign="top">-</td><td valign="top">2008-04-11</td><td valign="top">Support -kernel 2.6.22 & 2.6.24. Temporary workaround for Xorg 7.3. Support -Bamboo series and Cintiq 12WX & 20WSX. Updated wacomcpl for -keystrokes. Support serial Tablet PC with touch.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.7-12.tar.bz2">linuxwacom-0.7.7-12.tar.bz2</a></td><td valign="top">-</td><td valign="top">2007-06-15</td><td valign="top">Support -Bamboo. Updated installer under prebuilt directory to install X driver -as well as its associated utilities. Support non-overlapped multi-areas -for same InputDevice. Support pad with button and keystroke events -through xsetwacom</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.5-4.tar.bz2">linuxwacom-0.7.5-4.tar.bz2</a></td><td valign="top">-</td><td valign="top">2006-09-29</td><td valign="top">Support kernel 2.6.17/18, Intuos3 4x6, and tablet detach/attach as well as rotation while X running. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.3-1.tar.bz2">linuxwacom-0.7.3-1.tar.bz2</a></td><td valign="top">-</td><td valign="top">2006-04-07</td><td valign="top">Support kernel 2.6.15/16, Intuos3 12x12 and 12x19. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.7.1-2.tar.bz2">linuxwacom-0.7.1-2.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-12-06</td><td valign="top">Support kernel 2.6.13/14, Graphire4, PL710, DTF720, Intuos3 6x11 and Volito2. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.9.tar.bz2">linuxwacom-0.6.9.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-08-08</td><td valign="top">Support tablet orentation rotation. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.9-x86-64.tar.bz2">linuxwacom-0.6.9-x86-64.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-08-08</td><td valign="top">Support x86-64 system. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.7.tar.bz2">linuxwacom-0.6.7.tar.bz2</a></td><td valign="top">-</td><td valign="top">2005-03-28</td><td valign="top">Added Cintiq 21UX and kernel 2.6.11 support. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.6.5.tar.bz2">linuxwacom-0.6.5.tar.bz2</a></td><td valign="top">-</td><td valign="top">2004-11-05</td><td valign="top">Added Intuos3 support. </td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.5.4-beta.tar.bz2">linuxwacom-0.5.4-beta.tar.bz2</a></td><td valign="top">-</td><td valign="top">2003-12-22</td><td valign="top">General Tablet PC support. 2.6.0 kernel support.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.5.3-beta.tar.gz">linuxwacom-0.5.3-beta.tar.gz</a></td><td valign="top">-</td><td valign="top">2003-11-12</td><td valign="top">Added wacomcpl utility. 2.4.22 kernel support. TwinView support.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.5.2-beta.tar.gz">linuxwacom-0.5.2-beta.tar.gz</a></td><td valign="top">-</td><td valign="top">2003-07-10</td><td valign="top">Fixed Intuos filter code. 2.5 kernel support. Minor bug fixes.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.5.1-beta.tar.gz">linuxwacom-0.5.1-beta.tar.gz</a></td><td valign="top">-</td><td valign="top">2003-06-15</td><td valign="top">Completely refactored data path, configurability.</td></tr> -<tr><td valign="top"><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.5.0-beta.tar.gz">linuxwacom-0.5.0-beta.tar.gz</a></td><td valign="top">-</td><td valign="top">2003-02-12</td><td valign="top">Updated PL code. Numerous tweaks.</td></tr> -</tbody></table> -<a name="root"> -</a><h2><a name="root">2.3 - The Root Account</a></h2> -<p><a name="root">If you are comfortable with the root account, paths, the /sbin directory, -and programs like <i>modprobe</i>, you can skip this section. This is largely -to clarify some things for people who are new to Linux and get tripped up -with the root account and paths. This is not meant to be a tutorial, so if -this is over your head, I would recommend reading a book on Linux command line -usage. All examples in this document assume the bash shell. - -</a></p><p><a name="root"> Many of the procedures in this document need root access, and the -commands that are executed are located in places on the system that are -not normally accessed by typical users. In order to run the <i>modprobe</i> -command, for instance, you must have root access. Additionally, if the -/sbin directory which contains <i>modprobe</i> does not appear in your -path, you must specify the full pathname, /sbin/modprobe, to run the command. -Here is an example of the problem, followed by solutions. - -</a></p><blockquote><pre><a name="root">[jej@ayukawa jej]$ modprobe foo -bash: modprobe: command not found -[jej@ayukawa jej]$ locate modprobe -/sbin/modprobe -[jej@ayukawa jej]$ echo $PATH -/bin:/usr/bin: ... :/home/jej/bin -</a></pre></blockquote> - -<a name="root">Normal users do not have /sbin in their path, so running <i>modprobe</i> -directly fails. Running the program using the full pathname (/sbin/modprobe) -will solve this, as will adding /sbin to the path. But there is another -problem, as we will see: - -</a><blockquote><pre><a name="root">[jej@ayukawa jej]$ /sbin/modprobe foo -foo.o: create_module: Operation not permitted -</a></pre></blockquote> - -<a name="root">Normal users are not allowed to run this command. For that, we need -to be root. The <i>su</i> command stands for "substitute user" since -it can be used to become <i>any</i> user on the system, but it is generally -known by the incorrect but very memorable mnemonic "superuser." - -</a><blockquote><pre><a name="root">[jej@ayukawa jej]$ su -Password: -[<b>root</b>@ayukawa jej]# whoami -root -</a></pre></blockquote> - -<p><a name="root">Note the change to the root account, and the additional change from -$ to # on the prompt. I maintain this convention in all the examples in -this document, so if you get an "access denied" error, check the prompt. -You probably need to be root. - -</a></p><p><a name="root">Now that we have root access, is /sbin in our path? No. We have only -been granted the privileges of root; we are not really in the root -account's environment. Most notably, the home directory ($HOME) changes, -but the path ($PATH) stays the same. Thus, becoming root is not sufficient to -run <i>modprobe</i> without the full pathname, but does solve the access -problem. - -</a></p><blockquote><pre><a name="root">[root@ayukawa jej]# modprobe foo -bash: modprobe: command not found -[root@ayukawa jej]# export PATH=$PATH:/sbin -[root@ayukawa jej]# modprobe foo -[root@ayukawa jej]# -</a></pre></blockquote> - -<p><a name="root">In this example, the user adds the /sbin directory to the path and can run -<i>modprobe</i> normally. <i>export</i> is a bash shell command that changes -aspects of your environment; in this case, /sbin is appended to the path. In -the highly unlikely event that you are using a different shell, which for -novice users seems unwise to me, you would need to use a different command. -Redhat, Mandrake, and similar distributions all use bash by default, so it is -unlikely that you would be using anything else. - -</a></p><p><a name="root">At any rate, changing the path is a reasonably good solution, if you can -remember the syntax of the <i>export</i> command. - -</a></p><p><a name="root">Another approach to this problem is to do more than just "be root," but to -run in the root account's environment. This is accomplished with the -"su -" command and provides you with root's normal path, including the /sbin -directory. The unfortunate side-effect is that you wind up in root's home -directory, requiring you to <i>cd</i> back to the original directory in -which you were working. - -</a></p><blockquote><pre><a name="root">[jej@ayukawa src]$ pwd -/home/jej/src/linuxwacom/src -[jej@ayukawa src]$ su - -[root@ayukawa root]# cd /home/jej/src/linuxwacom/src -[root@ayukawa src]# echo $PATH -/bin:<b>/sbin</b>:/usr/bin: ... :/root/bin -</a></pre></blockquote> - -<p><a name="root">Here, the user starts in the package's src directory, but upon invoking -"su -" is magically shuttled off to root's home directory. A quick -<i>cd</i> back to the package directory and all is better. And, as -demonstrated above, the path conveniently contains /sbin. - -</a></p><p><a name="root">So that leaves you with two immediate options, and one potential -long-term option: - -</a></p><p><a name="root">Option One: Become root and add /sbin to the path. - -</a></p><blockquote><pre><a name="root">[jej@ayukawa src]$ su -[jej@ayukawa src]# export PATH=$PATH:/sbin -</a></pre></blockquote> - -<a name="root">Option Two: Become root using root's environment and <i>cd</i> back. - -</a><blockquote><pre><a name="root">[jej@ayukawa src]$ su - -[root@ayukawa root]# cd /home/jej/src/linuxwacom/src -</a></pre></blockquote> - -<a name="root">Option Three (recommended): Add /sbin to your personal account's path - -</a><blockquote><pre><a name="root">[jej@ayukawa src]$ export PATH=$PATH:/sbin -[jej@ayukawa src]$ su -[root@ayukawa src]# echo $PATH -/bin:/usr/bin: ... :/home/jej/bin:<b>/sbin</b> -</a></pre></blockquote> - -<p><a name="root">By adding the path early in the session, it becomes available every time -you <i>su</i> to root later on. You could also add the <i>export</i> -command to the .bash_profile file in your home directory and have the -path set automatically when you log in. - -</a></p><p><a name="root">To exit from the root account and return to your normal account, you can -use the <i>exit</i> command or type Ctrl-D on an empty line. - -</a></p><blockquote><pre><a name="root">[root@ayukawa src]# exit -[jej@ayukawa src]$ -</a></pre></blockquote> - -<p><a name="root">If any of this is not explained clearly, drop me a line and let me know -where you got stuck. I'd be happy to clarify directly and update this page -for future readers. -</a><a name="install"> -</a></p><h2><a name="install">2.4 - Install from Prebuilt </a></h2> - -<p><a name="install">We have created 2 sets of prebuilt Wacom X driver and its utility programs under -linuxwacom-0.8.2-2/prebuilt; one for x86-32 systems, the other for x86-64 systems. - -</a></p><p><a name="install">If you don't plan to change anything in the driver, following steps will install the prebuilt files for you: - -</a></p><p><a name="install"><b>Note:</b> Please remove the existing linuxwacom package first if your system has one. - -</a></p><blockquote><pre><a name="install">[jej@ayukawa jej]$ cd linuxwacom-0.8.2-2/prebuilt -[jej@ayukawa prebuilt]$ su -[jej@ayukawa prebuilt]# ./uninstall -[jej@ayukawa prebuilt]# ./install -</a></pre></blockquote> - -<p><a name="install">Serial tablet (most Tablet PCs are serial) users can skip the rest -sections and go to </a><a href="#wacdump">Viewing Wacom Data (wacdump)</a> page for details on viewing the tablet output now. - -</p><p>If you use an older USB tablet and your running kernel was released 6 months later than -your tablet was first seen in market, you most probably can skip next section of this chapter -and the whole chapter 4 too. If you would like to make certain, continue to next section. -<a name="config"> -</a></p><h2><a name="config">2.5 - Configuring the Package</a></h2> - -<p><a name="config">This section describes how to configure the package. You can run -the configure script now as the samples below demonstrate, or later -when you reach the section of the document that explains what -specifically needs to be configured and why. This page is provided -largely as a reference. - -</a></p><p><a name="config">By default, xidump, wacdump, xsetwacom, wacom_drv.o, and wacomcpl -are built. Additional options include replacement of kernel drivers -for hid, mousedev, evdev, and usbmouse as well as building the -XFree86/Xorg driver from scratch. Lastly, remember that for every ---enable option, there is also an equivalent --disable option. - -</a></p><p><a name="config">The configuration options are listed on this page. You can also -see the online list by issuing <i>./configure -help</i> under -linuxwacom's base directory. - -</a></p><p><a name="config"><b>Note: </b> You should remove the existing linuxwacom package on -your system before installing the drivers and utilities from this project. - -</a></p><h3><a name="config">Building Kernel Modules - USB Only</a></h3> - -<p><a name="config">In order to build kernel modules, you will need the kernel source -installed on your system. If you are running on Redhat or Mandrake, -you can get it by installing the kernel-source RPM. - -</a></p><p><a name="config">The kernel source directory is assumed to be in /usr/src/linux-2.4, -/usr/src/linux, /usr/src/linux-2.6, /usr/src/linux-`uname -r`, or -/lib/modules/`uname -r`/source. If your kernel sources are elsewhere, -you will need to specify the directory with the --with-kernel option -described below. - -</a></p><p><a name="config">For older 2.6 kernels, you need to configure the kernel modules (wacom -and hid) under your kernel source directory before configuring linuxwacom. - -</a></p><p class="diff"><a name="config">Note, for kernel 2.6.18 and later, no need to build hid -any more. Refer to </a><a href="#testtablet">Testing Tablet Detection</a> to see if you need to build hid or not.</p> - -<h3>Module Versioning - USB Only</h3> - -<p>The script attempts to discover if the kernel is using module -versioning by detecting the presence of version numbers in the hid.o -module of the currently active kernel. Recent package versions also -check for hid.o.gz which exist on Mandrake systems. The configure -script may not be able to determine if kernel module versioning -should be enabled or not, in which case it will say "unknown, -assuming no." - -</p><p>If module versioning is disabled when it should be enabled, depmod -will complain about missing symbols but otherwise, things will probably -work fine. If it is enabled when it should be disabled, the code may -not compile, and it almost certainly will not load properly. If the -configure script fails to determine the correct value, the default -action of disabling module versioning is the better choice, and you can -allows enable it manually and rebuild if depmod complains. - -</p><h3>The XFree86/Xorg XInput Driver - USB and Serial</h3> - -<p>Generally, you will not need to build wacom_drv.o since it ships in -binary form in the prebuilt directory. There are prebuilt binaries for -XFree86 and Xorg corresponding to x86 and x86-64 systems, respectively. -If no one works for you, building from source may be your only option. -See the <a href="#builddrv">Building wacom_drv.o from Scratch</a> -page for more information. - -</p><h3>Library Dependencies - ncurses and XLib</h3> - -<p>Various utilities in the linuxwacom package require not only specific -libraries, but their development header files as well. The ncurses -package is one such example. Most distributions install the ncurses -libraries by default, but the header files are often located in a -separate package. You will need both. On Redhat 8.0, they can be -found in the ncurses-devel RPM. - -</p><p>Similarly, if you wish to test your tablet using xidump to view -XFree86/Xorg input events, you will need the XFree86/Xorg development -headers. On Redhat/Fedore Core, they are contained in the XFree86-devel/xorg-sdk package. - -</p><p>If any packages are missing, the configuration will warn you and -disable building any programs that depend on them. - -</p><h3>Processor Type</h3> - -<p>The processor type is determined by the script and used to build the -kernel modules. If it guesses incorrectly, or you would prefer a -different setting, use the --with-arch option described below. - -</p><h3>Linux Specific Features</h3> - -<p>The Linux wacom driver uses the Linux input subsystem, as does the -USB portions of the XFree86/Xorg driver. Consequently, if you are -building on a non-Linux system, the USB code will not work for you. -This is detected, and a comment to that effect is added to the -configuration summary. I recognize that FreeBSD and similar systems -have USB support; however, until someone can bridge the gap between -the FreeBSD kernel and the XFree86/X.org driver, the problem is largely -unsolved. Contributions are of course welcome. The Linux-specific -features can be enabled/disabled using the --with-linux argument. - -</p><h3>Configuration Options</h3> - -The following options are provided as reference. Normally, you will -only need a few of these options. Some obscure systems or you want to -build a driver for another platform may need all of them. Each section -of the document identifies which options are needed and when.<br><br> - -<table border="0" cellspacing="5"> -<tbody><tr><th align="left">Option</th><th align="left">Default</th> - <th align="left">Builds</th></tr> -<tr><td>--enable-wacom</td><td><b>no</b></td> - <td>wacom.o kernel driver</td></tr> -<tr><td>--enable-wacdump</td><td><b>yes</b></td> - <td>wacdump LinuxInput event monitor</td></tr> -<tr><td>--enable-xidump</td><td><b>yes</b></td> - <td>xidump XInput event monitor</td></tr> -<tr><td>--enable-libwacomcfg</td><td><b>yes</b></td> - <td>libwacomcfg Dynamic library for xsetwacom</td></tr> -<tr><td>--enable-libwacomxi</td><td><b>yes</b></td> - <td>libwacomxi Dynamic library for wacomcpl</td></tr> -<tr><td>--enable-xsetwacom</td><td><b>yes</b></td> - <td>xsetwacom XFree86 wacom driver configuration - comannd</td></tr> -<tr><td>--enable-quirk-tablet-rescale</td><td>best guess</td> - <td>Enable tablet to screen rescale code. <b> Note: </b> - If you have TwinView setup running on a X server 1.4 and later, - and your mappping doesn't properly, enable this option may - resolve the issue.</td></tr> -<tr><td>--enable-quirk-Uninit-called</td><td>best guess</td> - <td>Enable Uninit called</td></tr> -<tr><td>--enable-hid</td><td>no</td> - <td>hid.o replacement kernel driver (not normally - needed)</td></tr> -<tr><td>--enable-usbmouse</td><td>no</td> - <td>usbmouse.o replacement kernel driver (not - normally needed)</td></tr> -<tr><td>--enable-evdev</td><td>no</td> - <td>evdev.o replacement kernel driver (not - normally needed)</td></tr> -<tr><td>--enable-mousedev</td><td>no</td> - <td>mousedev.o replacement kernel driver (not - normally needed)</td></tr> -<tr><td>--enable-wacomdrv</td><td><b>yes</b></td> - <td>wacom_drv.o XFree86/Xorg driver (binary is - available in prebuilt directory)</td></tr> -<tr><td>--enable-modver=yes|no</td><td>best guess</td> - <td>enables kernel module versioning; usually - guesses correctly, but can be enabled or - disabled if not</td></tr> -<tr><td>--with-kernel=dir</td><td>best guess</td> - <td>Specifies the kernel source directory if - configure cannot guess correctly.</td></tr> -<tr><td>--with-x-src=dir</td><td>best guess</td> - <td>Specifies the X driver build source - directory</td></tr> -<tr><td>--with-xorg-sdk=dir</td><td>best guess</td> - <td>Specifies the Xorg SDK directory</td></tr> -<tr><td>--with-tcl=dir</td><td>/usr</td> - <td>Specifies the tcl directory. The tcl's include - and lib directories should be under this directory. - If tcl.h is not in dir/include, it will be searched - under dir directly</td></tr> -<tr><td>--with-tk=dir</td><td>/usr</td> - <td>Specifies the tk directory. If tk is under the - same directory as tcl, this option can be - eliminated. Otherwise, the tk's include and lib - directories should be under this directory. If tk.h - is not in dir/include, it will be searched under - dir directly</td></tr> -<tr><td>--with-arch=arch</td><td>best guess</td> - <td>Specifies the architecture if configure guesses - incorrectly</td></tr> -<tr><td>--enable-xserver64=yes|no</td><td>best guess</td> - <td>enables 64-bit X server. You probably need to - define xlib directory by adding option - --with-xlib=xlib-dir so compiler can link with - the right Xlib.</td></tr> -<tr><td>--with-linux=yes|no</td><td>best guess</td> - <td>Specifies if compiled on a Linux system; USB - code is Linux specific</td></tr> -<tr><td>--with-xlib=yes|no</td><td>best guess</td> - <td>Specifies if building xlib-based programs; - xidump uses XInput headers</td></tr> -<tr><td>--enable-dlloader=yes|no</td><td>best guess</td> - <td>Enable dlloader build option and built - wacom_drv.so instead of wacom_drv.o</td></tr> -<tr><td>--with-xmoduledir=dir</td><td>best guess</td> - <td>Specify wacom_drv path explicitly. - Implies --enable-dlloader</td></tr> -</tbody></table> - -<h3>Configuration Samples</h3> - -<p>Here is a sample output of the script on a Fedora Core 5 system: - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$ ./configure -checking for a BSD-compatible install... /usr/bin/install -c -checking whether build environment is sane... yes -... -checking for arch type... <b>i386-redhat-linux</b> -checking for kernel type... <b>Linux</b> -checking for linux-based kernel... <b>yes</b> -checking for kernel sources... <b>/lib/modules/2.6.20-1.2320.fc5/source</b> -checking for kernel module support... <b>yes</b> -checking for kernel module versioning... <b>yes</b> -checking for valid Xorg SDK... <b>ok</b> -checking for X... <b>libraries , headers</b> -... -checking for X lib directory... <b>found</b> -checking for tclsh... <b>/usr/bin/tclsh</b> -checking for tcl version... <b>8.4</b> -checking for tcl header files... <b>/usr/include/</b> -checking for tk header files... <b>found</b> -checking ncurses.h usability... <b>yes</b> -checking ncurses.h presence... <b>yes</b> -checking for ncurses.h... <b>yes</b> -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i386-redhat-linux - linux kernel - yes 2.6.19 - module versioning - yes -DCONFIG_MODVERSIONS -DMODVERSIONS -include /lib/modules/2.6.20-1.2320.fc5/source/include/linux/modversions.h - kernel source - yes /lib/modules/2.6.20-1.2320.fc5/source - Xorg SDK - yes /usr/include/xorg - XSERVER64 - no - dlloader - yes - XLib - yes /usr/lib - TCL - yes /usr/include - TK - yes /usr/include - ncurses - yes - - BUILD OPTIONS: - wacom.o - no - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - no - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.so - yes /usr/lib/xorg/modules/input - wacom_drv.o - no - wacom*_drv quirks - libc-wrapper key-events dixScreenOrigins ----------------------------------------- -</pre></blockquote> - -<p>If the configure script fails to find something that it is looking -for, it may disable some options that you previously enabled on the -command-line. If this happens, check the output for a warning like the -following: - -</p><blockquote><pre>checking for valid XFree86/X.org build environment... xf86Version.h missing -Tried /usr/programs/Xserver/hw/xfree86 and /usr/xc/programs/Xserver/hw/xfree86 -... -*** -*** WARNING: -*** Unable to compile wacom_drv.{o,so} -*** without Xorg SDK or XFree86 build environment -*** wacom_drv.o will not be built -*** -</pre></blockquote> - -<p>In this particular case, the X driver was enabled. The ---with-x-src option was not specified. And the configure can not find -the header file, xf86Version.h, under any of the predefined paths. -Without the build environment, the module cannot be compiled and was consequently disabled. - - -</p><p>The following sample command-line will build everything but wacdump -while disabling module versioning. It also has a user-specified kernel -source directory: - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$ ./configure --enable-wacom \ - --enable-hid --enable-usbmouse --enable-evdev \ - --enable-moudedev --enable-input --disable-modver \ - --with-x-src=/usr/src/redhat/BUILD/XFree86-4.2.0 \ - --with-kernel=/home/jej/src/linux \ - --disable-wacdump --with-tcl=/usr/local/ActiveTcl -checking for a BSD-compatible install... /usr/bin/install -c -checking whether build environment is sane... yes -... -checking for processor type... i686 -checking for kernel module versioning... <b>yes</b> -checking for kernel sources... /usr/src/linux-2.4 -checking for valid XFree86 build environment... <b>ok</b> -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i686 - linux kernel - yes 2.4 - module versioning - <b>no</b> - kernel source - <b>yes /home/jej/src/linux</b> - XFree86 - <b>yes /usr/src/redhat/BUILD/XFree86-4.2.0</b> - XLib - yes /usr/X11R6/lib - TCL - <b>yes /usr/local/ActiveTcl</b> - TK - <b>yes /usr/local/ActiveTcl</b> - ncurses - yes - - BUILD OPTIONS: - wacom.o - <b>yes</b> - wacdump - <b>no</b> - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - <b>yes</b> - usbmouse.o - <b>yes</b> - evdev.o - <b>yes</b> - mousedev.o - <b>yes</b> - input.o - <b>yes</b> - tabletdev.o - no - wacom_drv.so - no - wacom_drv.o - <b>yes</b> - wacom*_drv quirks - libc-wrapper key-events ----------------------------------------- -</pre></blockquote> - -<p>Notice that the configure script guessed module versioning was -enabled by default, but was disabled by the command-line option ---disable-modver. Similarly, the wacdump program which is enabled -by default was also disabled. All the kernel modules and the -XFree86 wacom driver are enabled. - - -</p><p>Here is another sample from Red Hat Enterprise Linux ES v.4: - -</p><blockquote><pre>[jej@ayukawa linuxwacom-x86-64]$ ./configure \ - --enable-wacom --enable-hid \ - --with-xf86=/home/jej/Desktop/X11R6.8 \ - --with-tcl=/usr/local/ActiveTcl \ - <b>--enable-xserver64 \ - --with-xlib=/usr/X11R6/lib64 </b> -checking for a BSD-compatible install... /usr/bin/install -c -checking whether build environment is sane... yes -... -checking build system type... x86_64-redhat-linux-gnu -checking host system type... x86_64-redhat-linux-gnu -checking for ld used by g++... /usr/bin/ld -m elf_x86_64 -... - ----------------------------------------- - BUILD ENVIRONMENT: - architecture - <b>x86-64</b> - linux kernel - yes 2.6.9 - module versioning - yes -DCONFIG_MODVERSIONS -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h - kernel source - yes /usr/src/linux - XFree86 - yes /home/jej/Desktop/X11R6.8 - XSERVER64 - <b>yes</b> - XLib - <b>yes /usr/X11R6/lib64</b> - TCL - yes /usr/local/ActiveTcl - TK - yes /usr/local/ActiveTcl - ncurses - yes - - BUILD OPTIONS: - wacom.o - yes - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - yes - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.so - no - wacom_drv.o - yes - wacom*_drv quirks - libc-wrapper key-events ----------------------------------------- -</pre></blockquote> - -<a name="kernel"> -</a><h1><a name="kernel">3.0 - The USB Kernel Driver</a></h1> -<p><a name="kernel">Serial tablet users rejoice: you can skip this entire section. Please -go to the </a><a href="#wacdump">Viewing Wacom Data (wacdump)</a> page for details on viewing the tablet output. -USB users stay put; we need to tweak your kernel. - -</p><p>Kernel modules must be recompiled for each new kernel so I can't -just provide binaries. By the time you read this, my present kernel -will be entirely out of date with yours. </p> - -<p>In any event, many new features are available in the latest drivers -from the Linux Wacom Project, so I wholly recommend using them over the -drivers provided by your standard distribution. Rest assured, continuous -efforts are being made to get these changes merged back into the Linux -kernel. However, the changes can normally only merged into the next -kernel release, instead of the current one. </p> - -<p>For those who don't like upgrading kernels, here is a safe statement: -if you are not using a newly released tablet model and you are running a -recently released kernel version, chances are that you don't need to -update your kernel driver from linuxwacom.</p> - -<p><b>Note:</b> If your system is running a 2.4 kernel and you don't have -any application required to run on kernel 2.4, upgrading to version 2.6 -(preferablely 2.6.18 or later) may save you the steps to update wacom -kernel related modules. </p> -<a name="testtablet"> -</a><h2><a name="testtablet">3.1 - Testing Tablet Detection</a></h2> - -<p><a name="testtablet">In this section we will determine which driver, if any, claims control -over the tablet. There are at least three drivers that are interested: <br> -1) (usb)hid.o which may think it is an HID device, <br> -2) usbmouse.o which may think it is an HID mouse (for kernel 2.4), and <br> -3) the wacom driver which should identify the tablet as its own. <br> - -</a></p><p><a name="testtablet">To see which driver is driving the tablet, issuing <i>more /proc/bus/usb/devices</i> -should list something similiar to the following: - -</a></p><blockquote><pre><a name="testtablet">[jej@ayukawa wacom]$more /proc/bus/usb/devices -T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0 -D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 -P: <b>Vendor=056a ProdID=0042</b> Rev= 1.15 -S: Manufacturer=Tablet -S: Product=XD-0608-U -C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=140mA -I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 <b>Driver=wacom</b> -E: Ad=81(I) Atr=03(Int.) MxPS= 10 Ivl=5ms -</a></pre></blockquote> - -<p><a name="testtablet">where <b>Vendor=056a</b> indicates a Wacom device. <b>Driver=wacom</b> -means Wacom driver is in control of the tablet. If you see anything other -than <b>wacom</b> after <b>Driver=</b>, at least hid-core.c needs to be -updated. - -</a></p><p><a name="testtablet">On newer 2.6 systems, <i>more /proc/bus/input/devices</i> gives you - -</a></p><blockquote><pre><a name="testtablet">[jej@ayukawa wacom]$more /proc/bus/input/devices -I: Bus=0003 <b>Vendor=056a Product=0042</b> Version=1.15 -N: <b>Name="Wacom Intuos2 6x8"</b> -P: Phys=usb-0000:00:1d.1-2/input0 -H: Handlers=event3 -B: EV=1f -B: KEY=1cff 0 1f00ff 0 0 0 0 0 0 0 0 -B: REL=100 -B: ABS=f00017b -B: MSC=1 -</a></pre></blockquote> - -<p><a name="testtablet">where, again, <b>Vendor=056a</b> indicates a Wacom device. <b>Name="Wacom - Intuos2 6x8"</b> means an Intuos2 6x8 tablet reported to /dev/input/event3. -If there is no <b>Wacom</b> after <b>Name=</b>, you need to update wacom.c. - - -</a></p><p><a name="testtablet">On kernel 2.4 or older 2.6 systems, unplug then replug your tablet after -issuing <i>tail -f /var/log/messages</i>, you should see a flurry of activity. -The exact output depends a lot on your particular kernel and distribution. - -</a></p><blockquote><pre><a name="testtablet">This is Redhat 8.0 (2.4.18-17.8.0):<br> -[jej@ayukawa usb]# tail /var/log/messages -Apr 29 21:26:11 ayukawa kernel: hub.c: USB new device connect on bus2/2, assigned device number 2 -Apr 29 21:26:11 ayukawa kernel: <b>input0: Wacom Intuos2 12x12</b> on usb2:2.0 -Apr 29 21:26:11 ayukawakernel: <b>wacom.c: Setting tablet report for tablet data</b> -Apr 29 21:26:11 ayukawa kernel: <b>wacom.c: input1: Wacom Intuos2 12x12</b> on usb1:6.0 -Apr 29 21:26:14 ayukawa /etc/hotplug/usb.agent: Setup wacom hid for USB product <b>56a/44</b>/115 -Apr 29 21:26:14 ayukawa /etc/hotplug/usb.agent: Setup mousedev for USB product <b>56a/44</b>/115 -</a></pre> -<pre class="diff"><a name="testtablet">And here it is again on Redhat 7.2 (2.4.18-17.7.x):<br> -[jej@sasami root]# tail /var/log/messages -Apr 29 21:28:38 sasami kernel: hub.c: USB new device connect on bus1/1, assigned device number 2 -Apr 29 21:28:38 sasami kernel: <b>input0: Wacom Intuos2 12x12</b> on usb1:2.0 -Apr 29 21:28:39 sasami kernel: usb.c: registered new driver hiddev -Apr 29 21:28:39 sasami kernel: usb.c: registered new driver hid -Apr 29 21:28:39 sasami kernel: hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik <vojtech@suse.cz> -Apr 29 21:28:39 sasami kernel: hid-core.c: USB HID support drivers -Apr 29 21:28:39 sasami kernel: mice: <b>PS/2 mouse</b> device common for all mice -</a></pre> -</blockquote> - -<p><a name="testtablet">If all went well like above, the USB device was successfully detected and -handled by the wacom driver. This presumably means that information like -pressure and tilt will be received on /dev/input/event0. You are ready to -configure the X driver </a><a href="#download">Downloading the Code</a>. - -</p><p>If instead you got any of the following lines in your log, the wacom -driver <i>did not get control</i>. Either hid or usbmouse did. - -</p><blockquote><pre> <b>input0,hiddev0: USB HID v1.00 Mouse [Tablet XD-1212-U]</b> on usb1:5.0 - <b>input0: Tablet XD-1212-U</b> on usb1:5.0 -<pre></pre></pre></blockquote> -<a name="newwacom"> -</a><h2><a name="newwacom">3.2 - Updated wacom.c</a></h2> -<p><a name="newwacom">The wacom kernel driver (wacom_wac.c and wacom_sys.c) that is available -in </a><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.2-2.tar.bz2">linuxwacom-0.8.2-2.tar.bz2</a> supports USB Tablet PC, Bamboo1 Medium, and -Monarch, which will be available in kernel version 2.6.28. - -</p><p>You can link Wacom USB tablet to "/dev/input/wacom". It can be done -by adding the following rules in /etc/udev/rules.d/60-wacom.rules. Some -distributions use a different number for the file name. Please look for -proper one with wacom under /etc/udev/rules.d. - -</p><p>Below are examples from Debian GNU/Linux distribution: - -</p><p><b>60-wacom.rules on systems using ATTRS</b> - -</p><p><b>1. </b>Systems with only one Wacom device - -</p><div class="diff"> -<blockquote><pre># udev rules for wacom tablets. - -KERNEL!="event[0-9]*", GOTO="wacom_end" - -# Multiple interface support for stylus and touch devices. -DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus" -DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch" - -# Convenience links for the common case of a single tablet. We could do just this: -#ATTRS{idVendor}=="056a", SYMLINK+="input/wacom-$env{WACOM_TYPE}" -# but for legacy reasons, we keep the input/wacom link as the generic stylus device. -ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom" -ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch" - -# Check and repossess the device if a module other than the wacom one -# is already bound to it. -ATTRS{idVendor}=="056a", ACTION=="add", RUN+="check_driver wacom $devpath $env{ID_BUS}" - -LABEL="wacom_end" - -</pre></blockquote> -</div> - -<p><b>2. </b>Systems with more than one Wacom devices - -</p><div class="diff"> -<blockquote><pre># udev rules for wacom tablets. -# These rules were compiled for the Debian GNU/Linux distribution, -# but others may, and indeed are encouraged to, use them also. -# -# Should you do so, PLEASE CO-ORDINATE ANY CHANGES OR ADDITIONS -# of new devices with Ron <ron@debian.org> so that we can try -# to present users with a standard set of device nodes -# which they can rely on across the board. - -KERNEL!="event[0-9]*", GOTO="wacom_end" - -# Port specific link for users of multiple tablets of the same type. -# The ID_PATH variable is set by the "path_id" script in an earlier rule file. -ATTRS{idVendor}=="056a", ENV{ID_PATH}=="?*", SYMLINK="input/by-path/$env{ID_PATH}-wacom" - -# Multiple interface support for stylus and touch devices. -DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus" -DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch" - -# Type-named links for multiple tablets. If you want to use multiple -# tablets of the _same_ type, you will probably need to use the links -# from /dev/input/by-path to identify which is plugged into what usb -# port. For different tablet types though, just pick your links from -# the list below. -# -# We override SYMLINK for tabletpc devices because the by-path link -# is not required with such devices, there will only ever be one. -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0000", SYMLINK+="input/tablet-penpartner" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0003", SYMLINK+="input/tablet-cintiq_partner" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0010", SYMLINK+="input/tablet-graphire" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0011", SYMLINK+="input/tablet-graphire2-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0012", SYMLINK+="input/tablet-graphire2-5x7" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0013", SYMLINK+="input/tablet-graphire3" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0014", SYMLINK+="input/tablet-graphire3-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0015", SYMLINK+="input/tablet-graphire4-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0016", SYMLINK+="input/tablet-graphire4-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0017", SYMLINK+="input/tablet-bamboofun-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0018", SYMLINK+="input/tablet-bamboofun-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0019", SYMLINK+="input/tablet-bamboo1-medium" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0020", SYMLINK+="input/tablet-intuos-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0021", SYMLINK+="input/tablet-intuos-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0022", SYMLINK+="input/tablet-intuos-9x12" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0023", SYMLINK+="input/tablet-intuos-12x12" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0024", SYMLINK+="input/tablet-intuos-12x18" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0030", SYMLINK+="input/tablet-pl400" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0031", SYMLINK+="input/tablet-pl500" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0032", SYMLINK+="input/tablet-pl600" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0033", SYMLINK+="input/tablet-pl600sx" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0034", SYMLINK+="input/tablet-pl550" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0035", SYMLINK+="input/tablet-pl800" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0037", SYMLINK+="input/tablet-pl700" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0038", SYMLINK+="input/tablet-pl510" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0039", SYMLINK+="input/tablet-dtu710" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="003f", SYMLINK+="input/tablet-cintiq21ux" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0041", SYMLINK+="input/tablet-intuos2-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0042", SYMLINK+="input/tablet-intuos2-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0043", SYMLINK+="input/tablet-intuos2-9x12" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0044", SYMLINK+="input/tablet-intuos2-12x12" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0045", SYMLINK+="input/tablet-intuos2-12x18" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0047", SYMLINK+="input/tablet-intuos2-6x8a" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0060", SYMLINK+="input/tablet-volito" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0061", SYMLINK+="input/tablet-penstation2" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0062", SYMLINK+="input/tablet-volito2-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0063", SYMLINK+="input/tablet-volito2-2x3" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0064", SYMLINK+="input/tablet-penpartner2" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0065", SYMLINK+="input/tablet-bamboo" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0069", SYMLINK+="input/tablet-bamboo1" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0081", SYMLINK+="input/tablet-graphire_bt-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0090", SYMLINK="input/tablet-tpc90" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0093", SYMLINK="input/tablet-tpc93-$env{WACOM_TYPE}" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="009a", SYMLINK="input/tablet-tpc9a-$env{WACOM_TYPE}" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b0", SYMLINK+="input/tablet-intuos3-4x5" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b1", SYMLINK+="input/tablet-intuos3-6x8" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b2", SYMLINK+="input/tablet-intuos3-9x12" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b3", SYMLINK+="input/tablet-intuos3-12x12" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b4", SYMLINK+="input/tablet-intuos3-12x19" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b5", SYMLINK+="input/tablet-intuos3-6x11" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b7", SYMLINK+="input/tablet-intuos3-4x6" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b8", SYMLINK+="input/tablet-intuos4-4x6" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00b9", SYMLINK+="input/tablet-intuos4-6x9" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00ba", SYMLINK+="input/tablet-intuos4-8x13" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00bb", SYMLINK+="input/tablet-intuos4-12x19" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c0", SYMLINK+="input/tablet-dtf521" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c4", SYMLINK+="input/tablet-dtf720" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c5", SYMLINK+="input/tablet-cintiq20wsx" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c6", SYMLINK+="input/tablet-cintiq12wx" -ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00c7", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/tablet-dtu1931" - -# Convenience links for the common case of a single tablet. We could do just this: -#ATTRS{idVendor}=="056a", SYMLINK+="input/wacom-$env{WACOM_TYPE}" -# but for legacy reasons, we keep the input/wacom link as the generic stylus device. -ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom" -ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch" - -# Check and repossess the device if a module other than the wacom one -# is already bound to it. -ATTRS{idVendor}=="056a", ACTION=="add", RUN+="check_driver wacom $devpath $env{ID_BUS}" - -LABEL="wacom_end" - - -</ron@debian.org></pre></blockquote> -</div> - -<p><b>60-wacom.rules on systems using SYSFS</b> - -</p><p><b>1. </b>Systems with only one Wacom device - -</p><div class="diff"> -<blockquote><pre># udev rules for wacom devices -# will create: -# /dev/input/wacom -# /dev/input/wacom-touch -BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus" -BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch" - -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch" -</pre></blockquote> -</div> - -<p><b>2. </b>Systems with more than one Wacom devices - -</p><div class="diff"> -<blockquote><pre># udev rules for wacom devices -# will create: -# /dev/input/wacom -# /dev/input/wacom-tablets/<model> -# /dev/input/wacom-tablets/<model>-<device id=""> -# -# The last rule is intended for cases when you have more than one tablet -# of the same model. The id is usb port dependent. -# -BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus" -BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch" - -# Type-named links for multiple tablets. If you want to use multiple -# tablets of the _same_ type, you will probably need to use the links -# from /dev/input/wacom-tablets to identify which is plugged into what usb -# port. For different tablet types though, just pick your links from -# the list below. -# -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0000", SYMLINK+="input/wacom-tablets/penpartner input/wacom-tablets/penpartner-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0010", SYMLINK+="input/wacom-tablets/graphire input/wacom-tablets/graphire-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0011", SYMLINK+="input/wacom-tablets/graphire2-4x5 input/wacom-tablets/graphire2-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0012", SYMLINK+="input/wacom-tablets/graphire2-5x7 input/wacom-tablets/graphire2-5x7-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0013", SYMLINK+="input/wacom-tablets/graphire3 input/wacom-tablets/graphire3-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0014", SYMLINK+="input/wacom-tablets/graphire3-6x8 input/wacom-tablets/graphire3-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0015", SYMLINK+="input/wacom-tablets/graphire4-4x5 input/wacom-tablets/graphire4-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0016", SYMLINK+="input/wacom-tablets/graphire4-6x8 input/wacom-tablets/graphire4-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0017", SYMLINK+="input/wacom-tablets/bamboofun-4x5 input/wacom-tablets/bamboofun-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0018", SYMLINK+="input/wacom-tablet/bamboofun-6x8 input/wacom-tablets/bamboofun-6x8" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0019", SYMLINK+="input/wacom-tablet/bamboo1-medium input/wacom-tablets/bamboo1-medium" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0060", SYMLINK+="input/wacom-tablets/volito input/wacom-tablets/volito-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0061", SYMLINK+="input/wacom-tablets/penstation2 input/wacom-tablets/penstation2-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0062", SYMLINK+="input/wacom-tablets/volito2-4x5 input/wacom-tablets/volito2-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0063", SYMLINK+="input/wacom-tablets/volito2-2x3 input/wacom-tablets/volito2-2x3-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0064", SYMLINK+="input/wacom-tablets/penpartner2 input/wacom-tablets/penpartner2-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0020", SYMLINK+="input/wacom-tablets/intuos-4x5 input/wacom-tablets/intuos-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0021", SYMLINK+="input/wacom-tablets/intuos-6x8 input/wacom-tablets/intuos-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0022", SYMLINK+="input/wacom-tablets/intuos-9x12 input/wacom-tablets/intuos-9x12-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0023", SYMLINK+="input/wacom-tablets/intuos-12x12 input/wacom-tablets/intuos-12x12-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0024", SYMLINK+="input/wacom-tablets/intuos-12x18 input/wacom-tablets/intuos-12x18-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0030", SYMLINK+="input/wacom-tablets/pl400 input/wacom-tablets/pl400-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0031", SYMLINK+="input/wacom-tablets/pl500 input/wacom-tablets/pl500-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0032", SYMLINK+="input/wacom-tablets/pl600 input/wacom-tablets/pl600-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0033", SYMLINK+="input/wacom-tablets/pl600sx input/wacom-tablets/pl600sx-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0034", SYMLINK+="input/wacom-tablets/pl550 input/wacom-tablets/pl550-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0035", SYMLINK+="input/wacom-tablets/pl800 input/wacom-tablets/pl800-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0037", SYMLINK+="input/wacom-tablets/pl700 input/wacom-tablets/pl700-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0038", SYMLINK+="input/wacom-tablets/pl510 input/wacom-tablets/pl510-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0039", SYMLINK+="input/wacom-tablets/dtu710 input/wacom-tablets/dtu710-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00c0", SYMLINK+="input/wacom-tablets/dtf521 input/wacom-tablets/dtf521-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00c4", SYMLINK+="input/wacom-tablets/dtf720 input/wacom-tablets/dtf720-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0003", SYMLINK+="input/wacom-tablets/cintiq_partner input/wacom-tablets/cintiq_partner-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0041", SYMLINK+="input/wacom-tablets/intuos2-4x5 input/wacom-tablets/intuos2-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0042", SYMLINK+="input/wacom-tablets/intuos2-6x8 input/wacom-tablets/intuos2-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0043", SYMLINK+="input/wacom-tablets/intuos2-9x12 input/wacom-tablets/intuos2-9x12-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0044", SYMLINK+="input/wacom-tablets/intuos2-12x12 input/wacom-tablets/intuos2-12x12-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0045", SYMLINK+="input/wacom-tablets/intuos2-12x18 input/wacom-tablets/intuos2-12x18-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b0", SYMLINK+="input/wacom-tablets/intuos3-4x5 input/wacom-tablets/intuos3-4x5-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b1", SYMLINK+="input/wacom-tablets/intuos3-6x8 input/wacom-tablets/intuos3-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b2", SYMLINK+="input/wacom-tablets/intuos3-9x12 input/wacom-tablets/intuos3-9x12-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b3", SYMLINK+="input/wacom-tablets/intuos3-12x12 input/wacom-tablets/intuos3-12x12-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b4", SYMLINK+="input/wacom-tablets/intuos3-12x19 input/wacom-tablets/intuos3-12x19-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b5", SYMLINK+="input/wacom-tablets/intuos3-6x11 input/wacom-tablets/intuos3-6x11-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="003f", SYMLINK+="input/wacom-tablets/cintiq21ux input/wacom-tablets/cintiq21ux-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0047", SYMLINK+="input/wacom-tablets/intuos2-6x8a input/wacom-tablets/intuos2-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b7", SYMLINK+="input/wacom-tablets/intuos3-4x6 input/wacom-tablets/intuos3-4x6-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b8", SYMLINK+="input/wacom-tablets/intuos4-4x6 input/wacom-tablets/intuos4-4x6-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00b9", SYMLINK+="input/wacom-tablets/intuos4-6x9 input/wacom-tablets/intuos4-6x9-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00ba", SYMLINK+="input/wacom-tablets/intuos4-8x13 input/wacom-tablets/intuos4-8x13-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00bb", SYMLINK+="input/wacom-tablets/intuos4-12x19 input/wacom-tablets/intuos4-12x19-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0065", SYMLINK+="input/wacom-tablets/bamboo input/wacom-tablets/bamboo-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00c6", SYMLINK+="input/wacom-tablets/cintiq12wx input/wacom-tablets/cintiq12wx-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00c5", SYMLINK+="input/wacom-tablets/cintiq20wsx input/wacom-tablets/cintiq20wsx-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="00c7", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom-tablets/dtu1931 input/wacom-tablets/dtu1931-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0069", SYMLINK+="input/wacom-tablets/bamboo1 input/wacom-tablets/bamboo1-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0081", SYMLINK+="input/wacom-tablets/graphire_bt-6x8 input/wacom-tablets/graphire_bt-6x8-%b" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0090", SYMLINK="input/wacom-tablets/tpc90" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="0093", SYMLINK="input/wacom-tablets/tpc93-$env{WACOM_TYPE}" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", SYSFS{idProduct}=="009a", SYMLINK="input/wacom-tablets/tpc9a-$env{WACOM_TYPE}" - -# Convenience links for the common case of a single tablet. We could do just this: -#SYSFS{idVendor}=="056a", SYMLINK+="input/wacom-$env{WACOM_TYPE}" -# but for legacy reasons, we keep the input/wacom link as the generic stylus device. -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom" -BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch" - -</device></model></model></pre></blockquote> -</div> - - -<div class="diff"> -Newer Mandriva Linux (Mandriva 2007 Spring and later) has an application called -mousedrake which takes care of the setup and configuration of linuxwacom driver. -If you use Mandriva Linux and you see InputDevice sections for Wacom device in -your Xorg.conf, chances are your Wacom tablet is ready for you to draw. -</div> - -<a name="buildwacom6"> -</a><h2><a name="buildwacom6">3.3 - Building wacom.c</a></h2> - -<a name="buildwacom6">To build the wacom.ko kernel module, you need to configure wacom as a kernel -module under your kernel source tree first. The kernel sources are required -as described on the </a><a href="#config">configuration</a> page. - -<p>Then, you need to configure the package with --enable-wacom option. -Here's how the configuration should generally look: - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$ ./configure --enable-wacom -... -checking for valid kernel source tree... <b>ok</b> -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i686 - linux kernel - <b>yes 2.6.9</b> - module versioning - yes - kernel - <b>yes /usr/src/linux</b> - XFree86 - no - XLib - yes /usr/X11R6 - TCL - yes /usr - TK - yes /usr - ncurses - yes - GTK - 2.0.6 - - BUILD OPTIONS: - wacom.o - <b>yes</b> - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - no - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.o - no ----------------------------------------- -</pre></blockquote> - -<p>As shown above, the kernel directory was detected and the wacom.o -module will be built. If the kernel option shows "no", you will need -to specify the --with-kernel option and the correct directory. - -</p><blockquote><div class="diff">For those who feel comfortable to -build everything from the source tree, please skip the make and install -steps below. Scroll down to the end of this page to see the steps with -light blue background. -</div></blockquote> - -<p>To build the driver, just run <i>make</i>. - -</p><p>If everything works properly, you'll see the following from the make: - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$ make -... -Making all in 2.6.9 -make[3]: Entering directory `/home/jej/linuxwacom/src/2.6.9' - Building linuxwacom drivers for 2.6 kernel. -make -C /usr/src/linux M=/home/jej/linuxwacom/src/2.6.9 -make[4]: Entering directory `/home/jej/linux-2.6.9' - LD /home/jej/linuxwacom/src/2.6.9/built-in.o - CC [M] /home/jej/linuxwacom/src/2.6.9/wacom.o - Building modules, stage 2. - MODPOST - CC /home/jej/linuxwacom/src/2.6.9/wacom.mod.o - LD [M] /home/jej/linuxwacom/src/2.6.9/wacom.ko -make[4]: Leaving directory `/usr/src/linux' -make[3]: Leaving directory `/home/jej/linuxwacom/src/2.6.9' -... -</pre></blockquote> - -<p></p><div class="diff">This part is for those who want to manually -build the wacom kernel driver in source tree. If you already followed -the steps above, you can move on to next page. <p>Please backup wacom.c in your kernel tree first. Then copy wacom.c -(or wacom_wac.c, wacom_wac.h, wacom_sys.c, and wacom.h if defined) from -the related linuxwacom directory to the source tree (if 4 files were -copies, you need to add <b>wacom-objs := wacom_sys.o wacom_wac.o </b> -to the Makefile under your kernel source input directory) and rebuild -the kernel. An example for kernel 2.6.9 is as following: </p><blockquote><pre> - [jej@ayukawa linuxwacom]$ cp /usr/src/linux/drivers/usb/input/wacom.c /usr/src/linux/drivers/usb/input/wacom.c.2.6.9 - [jej@ayukawa linuxwacom]$ cp src/2.6.9/wacom.c /usr/src/linux/drivers/usb/input/ - [jej@ayukawa linuxwacom]$ cd /usr/src/linux - [jej@ayukawa linux]$ make - [jej@ayukawa linux]$ su - [jej@ayukawa linux]#make install - [jej@ayukawa linux]#make modules_install - [jej@ayukawa linux]#reboot - </pre></blockquote> - </div> -<a name="testwacom"> -</a><h2><a name="testwacom">3.4 - Testing If wacom.(k)o Will Load</a></h2> -<p><a name="testwacom">Before we install the wacom driver, we need to test that it will load -properly. We do this by loading the driver manually. We will also -</a><a href="#root">need to be root</a> to do this. - -</p><p>WARNING: there is a small chance that this will bomb your kernel, -so we run <i>sync</i> to write all the stale buffers to the disk. People -using ext3 have little to worry about, but it's always good to be prepared -for the worst. At the very least, save your work. - -</p><blockquote><pre>[root@ayukawa linuxwacom]# sync -</pre></blockquote> - -<p>From the package's associated kernel directory, we unload any previous modules and -load the new one. The following example is from a kernel 2.4.22 system. - -</p><pre class="diff"> -<p>For Kernel 2.6.x, replace wacom.o with wacom.ko where it is used. - -</p><p>Kernel 2.6.11 and 2.6.12 are in src/2.6.11. Kernels 2.6.15 and 2.6.17 are handled in src/2.6.16. -</p></pre> - -<blockquote><pre>[root@ayukawa linuxwacom]# cd src/2.4.22 -[root@ayukawa 2.4.22]# /sbin/rmmod wacom -[root@ayukawa 2.4.22]# /sbin/insmod ./wacom.o # for those about to rock, we salute you. -</pre></blockquote> - -<p>Well, if you did not bomb, then good. And if you did, well, sorry. So -far, we have not had any reports of this happening, so please send in yours. - -</p><p>Incidentally, if you run "/sbin/insmod wacom.o" and happen to be in the -wrong directory, the old driver reloads, sometimes without warning. I -therefore changed this to read "/sbin/insmod ./wacom.o" which seems to prevent -this from happening. To be certain, you can check the log file for the -correct version number. - -</p><blockquote><pre>[root@ayukawa src]# tail /var/log/messages -Apr 29 20:34:41 ayukawa kernel: usb.c: registered new driver wacom -Apr 29 20:34:41 ayukawa kernel: Reporting max 30480, 31680 -Apr 29 20:34:41 ayukawa kernel: wacom.c: Setting tablet report for tablet data -Apr 29 20:34:41 ayukawa kernel: input0: Wacom Intuos2 12x12 on usb2:3.0 -Apr 29 20:34:41 ayukawa kernel: wacom.c: <b>$1.43-0.8.2-2</b> Vojtech Pavlik <vojtech@suse.cz> -Apr 29 20:34:41 ayukawa kernel: wacom.c: USB Wacom Graphire and Wacom Intuos tablet driver - -</pre></blockquote> - -<p>The important detail is the version number. A version number like -"1.46" -is an original kernel version and not from the linuxwacom package. The -correct version should also have the -j#.# or -pc#.# portion as well. -This is to help differentiate between the stock kernel driver and those -available from the Linux Wacom Project. -</p><p>If you get errors inserting the module, then you may need to reconfigure -and build with module versioning disabled. If it loads without a hitch, -move on to the next part. -<a name="installwacom"> -</a></p><h2><a name="installwacom">3.5 - Installing wacom.(k)o</a></h2> - -<pre class="diff"><p><a name="installwacom">For Kernel 2.4.x, replace wacom.ko with wacom.o where it is used. -</a></p></pre> - -<p><a name="installwacom">To install or not to install, that is the question. -Since the driver is in memory, you can pretty much use it this way -throughout the rest of this document. Anywhere you see -"modprobe wacom", you'll instead need to "insmod ./wacom.ko". -You'll also need to be careful that you are in the package's src directory. -If you instead use the less-specific command "insmod wacom.ko" from a -directory other than the package's src directory, <i>insmod</i> will load -the driver from the kernel modules directory instead. The result is that -you'll be using the wrong driver. - -</a></p><p><a name="installwacom">Why would you not install the driver? Well, for one, you may be building -a driver against a wrong kernel source, and if the system crashes (you get -an Oops or things come unglued in other ways), it would be nice to reboot -and have the original drivers load instead. - -</a></p><p><a name="installwacom">When should I install the driver? When you're comfortable that the -driver will not crash your system. If you really know what you're doing, -just load the drivers manually like in the previous section </a><a href="#testwacom">Testing If wacom.(k)o Will Load</a>. - -</p><p class="diff">On some distributions, Mandriva (a.k.a Mandrake) included, the -wacom.ko driver that appears in the kernel modules directory appears to be -compressed. If you cannot find wacom.ko using the method below, try locating -wacom.ko.gz instead. People who encountered this problem were able to run -gzip on the module and copy that instead.</p> - -<p>Installing the driver requires knowing where it belongs. A little research -will help here. By using the <i>locate</i> command, you can find all copies -of the original driver on the computer.</p> - -<blockquote><pre>jej@ayukawa wacom]$ locate wacom.ko -/lib/modules/2.6.17-1.2157_FC5/kernel/drivers/usb/input/<b>wacom.ko</b> -/lib/modules/2.6.17-1.2174_FC5/kernel/drivers/usb/input/<b>wacom.ko</b> - -[jej@ayukawa wacom]$ uname -r -<b>2.6.17-1.2157_FC5</b> -</pre></blockquote> - -On this computer, there are two kernels installed. <i>uname</i> identifies -the currently active kernel as 2.6.17-1.2157_FC5. The correct driver to -replace is therefore at /lib/modules/2.6.17-1.2157_FC5/kernel/drivers/usb/input/wacom.ko. -You will need to be root to replace this file, and it is a very good idea to -make a backup copy. - -<blockquote><pre>[jej@ayukawa wacom]$ su - -[jej@ayukawa root]# cd /lib/modules/2.6.17-1.2157_FC5/kernel/drivers/usb/input -[jej@ayukawa usb]# cp <b>wacom.ko</b> /home/jej/linuxwacom/src/2.6.16/<b>wacom_old.ko</b> -[jej@ayukawa usb]# cp /home/jej/linuxwacom/src/2.6.16/<b>wacom.ko</b> <b>wacom.ko</b> -</pre></blockquote> - -Here, I've saved the original to wacom_old.ko and copied my new driver over it. -You should substitute directory names as appropriate. - -<p><b>NOTE: Don't leave the backup copy in the same directory as the -original.</b> <i>depmod</i> will treat both as valid drivers, regardless -of their names. Copy the original somewhere outside of the kernel module -directory to ensure that this does not happen. In at least one case, -the backup driver was loaded instead of the new one due to a curious -dependency issue. - -</p><p>Finally, it is always a good thing to update the module dependencies. -This is where you find out if the module was compiled without kernel module -versioning. The following command, even if it generates errors is relatively -benign. If it fails, then there is no harm done. It just means that you will -have to load modules in the correct order since the system will not be able to -guess for you. - -</p><blockquote><pre>[jej@ayukawa usb]# depmod -e -</pre></blockquote> - -<p>If you get no errors and no output, everything is fine, and the module was -compiled, linked, and installed properly. If you received unresolved symbols -like usb_set_idle or printk, then you need to reconfigure with module -versioning enabled and recompile. - - -</p><pre class="diff"><p>Here is an example from a 2.6.12 system on Mandriva. - -</p><blockquote><pre>jej@ayukawa wacom]$ locate wacom.ko.gz -/lib/modules/2.6.12-12mdksmp/kernel/drivers/usb/input/<b>wacom.ko.gz</b> -/lib/modules/2.6.12-12mdksmp/kernel/drivers/usb/input/<b>wacom.ko.gz</b> - -[jej@ayukawa wacom]$ uname -r -<b>2.6.12-12mdksmp</b> -</pre></blockquote> - - -</pre> -<a name="loadwacom"> -</a><h2><a name="loadwacom">3.6 - Loading the wacom Driver</a></h2> - -<pre class="diff"><p><a name="loadwacom">For Kernel 2.6.x, replace wacom.o with wacom.ko where it is used. -</a></p></pre> - -<p><a name="loadwacom">If you have installed the driver, now is the time to test whether it will -load when needed. If you have not installed it, but are instead using insmod, -substitute <i>insmod mydir/src/wacom.o</i> where you see -<i>modprobe wacom</i> below. It is important that you use the correct -wacom.o file, the one you just built, since insmod may load the old driver -if it cannot find the one you have specified. - -</a></p><blockquote><pre><a name="loadwacom">[jej@ayukawa usb]# rmmod wacom -[jej@ayukawa usb]# modprobe usb-uhci (or usb-ohci) -<span class="diff">[jej@ayukawa usb]# modprobe input</span> -<span class="diff">[jej@ayukawa usb]# modprobe mousedev</span> -[jej@ayukawa usb]# modprobe wacom (or insmod mydir/src/wacom.o) -[jej@ayukawa usb]# modprobe evdev -</a></pre></blockquote> - -<p><a name="loadwacom">Check the system log for status messages pertaining to the wacom. -Here's a copy of the messages from my version of the driver. - -</a></p><blockquote><pre><a name="loadwacom">[jej@ayukawa usb]# grep -i wacom /var/log/messages | tail -Apr 29 21:23:35 ayukawa kernel: usb.c: registered new driver wacom -Apr 29 21:23:35 ayukawa kernel: wacom.c: <b>v1.43-0.8.2-2</b> Vojtech Pavlik <vojtech@suse.cz> -Apr 29 21:23:35 ayukawa kernel: wacom.c: USB Wacom Graphire and Wacom Intuos tablet driver (MODIFIED) -</a></pre></blockquote> - -<p><a name="loadwacom">The original driver was version 1.43. This version number -is 1.43-0.8.2-2 so the correct driver was loaded.</a></p> -<a name="buildhid6"> -</a><h2><a name="buildhid6">3.7 - Building (usb)hid.ko</a></h2> - -<p><a name="buildhid6">In the </a><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.2-2.tar.bz2">linuxwacom-0.8.2-2.tar.bz2</a> -file, you will find hid-core.c, which have special exceptions for -wacom. This file is not built by default, so you will need to -reconfigure the package and run make again. </p><p class="diff">Note, for kernel 2.6.18 and later, no need to build hid any more. For other kernels, refer to <a href="#testtablet">Testing Tablet Detection</a> to see if you need to build hid or not.</p> - -<p>You need to configure usbhid as a module under your kernel source tree before configuring linuxwacom. - -</p><p class="diff">On some distributions, Mandrake or Mandriva -included, the (usb)hid.ko driver that located in the kernel modules -directory appears to be compressed. You need to run gzip on the module -and copy (usb)hid.ko.gz instead.</p> - -<blockquote><pre>[jej@ayukawa wacom]$./configure --enable-hid --with-kernel=your-kernel-src-dir -... - BUILD OPTIONS: - hid.o - <b>yes</b> -... -</pre></blockquote> - -<p>Kernel 2.6.11 and 2.6.12 are in src/2.6.11. Kernels 2.6.16 and -2.6.17 are handled in src/2.6.16. Kernels 2.6.18/19/20/21/22 are in -src/2.6.18. All the other kernels are processed in its own src/2.6.x. -New 2.6 directories will be created when compatibility issue occurs. -</p><blockquote><div class="diff">For those who like to build everything from -the source tree, please skip the make and install steps below. Scroll down to the end of this -page to see the steps with light blue background. -</div></blockquote> - -<p>If everything works properly, you'll see the following from the make: - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$ make -... -Making all in 2.6.9 -make[3]: Entering directory `/home/jej/linuxwacom/src/2.6.9' - Building linuxwacom drivers for 2.6 kernel. -make -C /usr/src/linux M=/home/jej/linuxwacom/src/2.6.9 -make[4]: Entering directory `/home/jej/linux-2.6.9' - LD /home/jej/linuxwacom/src/2.6.9/built-in.o - CC [M] /home/jej/linuxwacom/src/2.6.9/hid-core.o - CC [M] /home/jej/linuxwacom/src/2.6.9/hid-input.o - LD [M] /home/jej/linuxwacom/src/2.6.9/usbhid.o - Building modules, stage 2. - MODPOST - CC /home/jej/linuxwacom/src/2.6.9/usbhid.mod.o - LD [M] /home/jej/linuxwacom/src/2.6.9/usbhid.ko -make[4]: Leaving directory `/usr/src/linux' -... -</pre></blockquote> - -<p>Then, use the following steps to install the driver: - - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$su -[jej@ayukawa linuxwacom]#cd src/2.6.9 -[jej@ayukawa 2.6.9]#cp usbhid.ko /lib/modules/<b>your-kernel-ver</b>/kernel/drivers/usb/input -[jej@ayukawa 2.6.9]#reboot -</pre></blockquote> - -<p></p><div class="diff">This part is for those who want to manually build the kernel drivers from source tree. -If you already followed the steps above, you can move on to next page. - -<p>Please backup your related kernel files first then copy the source from the related linuxwacom -directory to the source tree and rebuild the kernel. An example for kernel 2.6.9 is as following: - -</p><blockquote><pre>[jej@ayukawa linuxwacom]$ cp /usr/src/linux/drivers/usb/input/hid-core.c /usr/src/linux/drivers/usb/input/hid-core.c.2.6.9 -[jej@ayukawa linuxwacom]$ cp src/2.6.9/hid-core.c /usr/src/linux/drivers/usb/input/ -[jej@ayukawa linuxwacom]$ cd /usr/src/linux -[jej@ayukawa linux]$ make -[jej@ayukawa linux]$ su -[jej@ayukawa linux]# make install -[jej@ayukawa linux]# make modules_install -[jej@ayukawa linux]# reboot -</pre></blockquote> -</div> - -<a name="newtablet"> -</a><h2><a name="newtablet">3.8 - Unknown Tablet?</a></h2> -<a name="newtablet">To determine whether your device is listed in the driver, we need to determine -the device identifier. It can be discovered by issuing <i>more /proc/bus/usb/devices</i>: - -</a><blockquote><pre><a name="newtablet">[jej@ayukawa linuxwacom]# more /proc/bus/usb/devices -T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0 -D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 -P: <b>Vendor=056a ProdID=0044</b> Rev= 1.15 -S: Manufacturer=Tablet -S: <b>Product=XD-1212-U</b> -C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=140mA -I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=wacom -E: Ad=81(I) Atr=03(Int.) MxPS= 10 Ivl=5ms -</a></pre></blockquote> - -<p><a name="newtablet">In this case, the tablet identifier is in Vendor=056a ProdID=<b>0044</b>. -The model (<b>Product=XD-1212-U</b>) is determined by ProdID; the Intuos2 12x12 is 0x44 for instance. - -</a></p><p><a name="newtablet">In the wacom.c (kernel 2.6.9/10) or wacom_wac.c (kernels 2.6.11 or later) file under linuxwacom/src/2.6.x, -you will find a table called "wacom_ids". Look for your device identifier. Only the identifiers listed are -handled by the wacom driver, so if it is missing, it needs to be added. Also look for routine usb_hid_configure() -in hid-core.c if you are running a kernel older than 2.6.18. At the beginning of the routine, we added the -following lines to let HID driver ignore all Wacom devices: - -</a></p><blockquote><pre><a name="newtablet"> /* ignore all Wacom devices */ - if (dev->descriptor.idVendor == USB_VENDOR_ID_WACOM) - return NULL; -</a></pre></blockquote> - -<p><a name="newtablet">If you've gotten this far, and still cannot get it to work, email me -with your device identifier and as much of an explanation of where things did and did not work as -described. I'll see what I can do about at least finding out why it did not work. Then we can -go on to solutions. - -</a></p><p><a name="newtablet">The next section assumes you have things working up to this point. - -</a><a name="viewdata"> -</a></p><h2><a name="viewdata">3.11 - Viewing the Raw Data (xxd)</a></h2> -<p><a name="viewdata">View the raw data from the tablet, by returning to the /dev/input -directory and streaming the data directly from the device. Be patient -here because this is where a lot of people are getting stuck. - -</a></p><blockquote><pre><a name="viewdata">[root@ayukawa usb]# cd /dev/input -[root@ayukawa input]# xxd event0 -0000000: e65d c33d 597d 0100 0100 4101 0100 0000 .].=Y}....A..... -0000010: e65d c33d 5c7d 0100 0400 0000 b701 2800 .].=\}........(. -0000020: e65d c33d d9bb 0100 0100 4101 0000 0000 .].=......A..... -0000030: e65d c33d dcbb 0100 0400 0000 b701 2800 .].=..........(. -(Ctrl-C) -</a></pre></blockquote> - -<p><a name="viewdata">First off, you have to move the mouse or tap the pen to get any output. -If the tablet is mapped to event0, a continuously data stream will be -displayed while you move the mouse or pen on the tablet. Second, you -might not get anything at all. Don't panic. This seems to happen -occasionally. If absolutely no output occurs, try event1 and event2. -<span class="diff">It is reported on Fedora Core 2 the event0 used for -kernel 2.4 is represented as event2 when switching to kernel 2.6.1-1.65.</span> - -If no output occurs on those ports, reload the drive: - -</a></p><blockquote><pre><a name="viewdata">[jej@sasami root]# /sbin/rmmod wacom -[jej@sasami root]# /sbin/modprobe wacom (or /sbin/insmod mydir/src/wacom.o) -[jej@sasami root]# tail /var/log/messages -Apr 29 17:31:31 sasami kernel: usb.c: deregistering driver wacom -Apr 29 17:31:34 sasami kernel: usb.c: registered new driver wacom -Apr 29 17:31:35 sasami kernel: input0: Wacom Intuos2 12x12 on usb1:2.0 -Apr 29 17:31:35 sasami kernel: wacom.c: v1.43-0.8.2-2 Vojtech Pavlik <vojtech@suse.cz> -</a></pre></blockquote> - -<p><a name="viewdata">The device driver and the tablet occassionally get out of -sync with the tablet thinking it's still in HID mode when in fact it -should be in "mode 2." By unloading and reloading the driver manually, -the initialization code has another opportunity to get it right. Try the -<i>xxd /dev/input/event0</i> again. This time, it -<i>should</i> work. If not, send me some email. - -</a></p><p><a name="viewdata">Incidentally, if you have a program running that is connected to -/dev/input/event0 (like X or wacdump for instance), it is possible that -the tablet will not reattach back to the same event. I have seen the -wacom reattach to /dev/input/event1 when unloading and reloading the -wacom driver with wacdump running for instance. So, try xxd on event1 -or event2 if event0 fails. - -</a></p><p><a name="viewdata">You should also try running <i>xxd</i> on /dev/input/mouse0. -You should get streams of data when the mouse and pen are moved -around the surface of the tablet. It is this device that X will -look at for mouse movement. Use Ctrl-C to exit xxd. -</a><a name="wacdump"> -</a></p><h1><a name="wacdump">4.0 - Viewing Wacom Data (wacdump)</a></h1> -<p><a name="wacdump">The wacdump program parses and displays raw data from the Linux event -subsystem or serial port. It is very handy for verifying that your -tablet works without having to hassle with X server. Generally, you -must be root to run it unless you've set the permissions on the -appropriate device such that you can read them. - -</a></p><p><a name="wacdump"><b>Running wacdump</b> - -</a></p><p><a name="wacdump">In the case of USB tablets, this program can run simultaneously with X, -but it's best if X has not been configured for the tablet yet. X will -not share the serial port with wacdump, so serial users should comment out the -wacom InputDevice sections from XF86Config (or xorg.conf) before -using. Alternatively, you could move your serial tablet to COM2 and -try /dev/ttyS1 instead. - -</a></p><p><a name="wacdump">The command line usage of wacdump is pretty simple: - -</a></p><blockquote><pre><a name="wacdump">Usage: wacdump [options] device -Options: - -h, --help - usage - -c, --class device_cls - use specified class (see below) - -f, --force device_name - use specified device (see below) - -l, --list - list all supported devices - -v, --verbose - increase log output; multiple OK - -V, --version - display version number - --logfile log_file - output log to file - -Example devices: - /dev/input/event0 - usb tablet device - /dev/ttyS0 - serial tablet on com1 - /dev/ttyUSB0 - serial tablet on USB adapter - -Supported device classes: - serial, usb -Supported device names: - serial: art, art2, dig, dig2, pp, gr, pl, int, int2, c100 - usb: pp, gr, gr2, int, int2, pl, vol -</a></pre></blockquote> - -<p><a name="wacdump">Older versions of wacdump assumed the device to be /dev/input/event0. -This is now deprecated. You should instead specify which device to use -on the command line directly. If you get an end-of-file error or the -device does not exist, then the wacom may be attached to a different event. -Serial users may experience a timeout error which indicates that either -the tablet is not responding or X server has it open. Access denied errors -probably indicate that -</a><a href="#root">you are not root</a>. -If you get different types of errors, let me know so we can get them -documented. - -</p><p>Serial users are advised that now is a good time to plug in your tablet, -if you haven't already. - -</p><p>Let's run wacdump. Here are some command line examples: - -</p><blockquote><pre>[jej@ayukawa src]$ ./wacdump /dev/input/event0 # typical USB tablet -[jej@ayukawa src]$ ./wacdump /dev/input/event1 # USB tablet on event1 -</pre></blockquote> - -<p>When you run wacdump, it will attempt to initialize and query the tablet. -For a number of reasons, it may not display anything immediately, but if you -place a mouse or pen near the surface, the screen should update. -You will then be presented with a screen similar to the following: - -</p><blockquote><pre>wacdump v0.4.0 -MODEL=Wacom Intuos2 12x12 ROM=1.1-5 -CLS=USB VNDR=Wacom DEV=Intuos2 SUB=XD-1212-U - -TOOLTYPE=NONE SERIAL=0x00000000 - IN_PROX=+00000 (+00000 .. +00000) BUTTON=+00000 (+00000 .. +00000) - POS_X=+00000 (+00000 .. +30480) POS_Y=+00000 (+00000 .. +31680) - ROT_Z=+00000 (-00900 .. +00899) DISTANCE=+00000 (+00000 .. +00015) -PRESSURE=+00000 (+00000 .. +01023) TILT_X=+00000 (+00000 .. +00127) - TILT_Y=+00000 (+00000 .. +00127) ABSWHEEL=+00000 (+00000 .. +01023) -RELWHEEL=+00000 (-00001 .. +00001) THROTTLE=+00000 (-01023 .. +01023) - - LEFT= MIDDLE= RIGHT= EXTRA= - SIDE= TOUCH= STYLUS= STYLUS2= -</pre></blockquote> - -<p>The top portion identifies the tablet, and unless you specifically -override the device type with the -f option, it should be auto-detected -from the tablet directly. In this case, the model is XD-1212-U, a USB -Intuos2 12x12. - -</p><p>The next section describes the dynamic attributes of the tablet, -including the current position of the pointer, the type of tool in proximity -to the surface, its pressure, and tilt. Some tablets (Protocol V tablets, -such as Intuos 1, 2, and 3 as well as Cintiq 21UX) provide serial numbers -for their tools. When a button is pressed, the button heading will change -to something like "STYLUS=DOWN". - -</p><p> Some tablet tools report wheel movements as single increments forward -and reverse, while others provide absolute positions. The 4D mouse has a -throttle instead of a wheel. All three cases are reported independently. - -</p><p>Different tablets will have different options. Here is the lowly -ArtPadII for comparison. - -</p><blockquote><pre>wacdump v0.4.0 -MODEL=Wacom ArtPadII 4x5 ROM=1.3-6 -CLS=Serial VNDR=Wacom DEV=ArtPadII SUB=KT-0405-R - -TOOLTYPE=NONE IN_PROX=+00000 (+00000 .. +00000) - BUTTON=+00000 (+00000 .. +00000) POS_X=+00000 (+00000 .. +06400) - POS_Y=+00000 (+00000 .. +04800) PRESSURE=+00000 (+00000 .. +00255) - - LEFT= MIDDLE= RIGHT= EXTRA= - SIDE= TOUCH= STYLUS= STYLUS2= -</pre></blockquote> - -<p>Notice that this tablet has no tilt, and the pressure range is -considerably reduced. This version of wacdump does not distinguish -between tablets with mice, so the left, right, and middle buttons are -present, even though the tablet itself has no mouse. -<a name="x11"> -</a></p><h1><a name="x11">5.0 - Configuring X11</a></h1> -<a name="x11">Two steps must be completed to get X to recognize your tablet. First, -you need to add some lines to XF86Config/xorg.conf to inform X of the tablet's -existence. Second, you need to update the XInput driver that pertains -to the tablet since the one that ships with XFree86/Xorg is not very functional. -Neither driver holds a candle to the windows driver though, so you'll -have to take what you get for the time being. Updates to the XFree86/Xorg driver -are available in the stable and beta releases on the -</a><a href="#download">Downloading the Code</a> page. -<a name="inputdev"> -</a><h2><a name="inputdev">5.1 - Adding the InputDevices</a></h2> - -<p><a name="inputdev">The X Window system identifies the stylus (tip and side switches -of your pen), eraser (the other end of your pen if it is clickable), -cursor (your Wacom mouse), and pad (buttons, strips and rings on -your tablet if your tablet has any) as XInput devices. Most settings, -such as stylus pressure level and system cursor movement mode can be -done in /etc/X11/XF86Config or /etc/X11/xorg.conf configuration -file before X server starts or live through command-line -</a><a href="#xsetwacom">xsetwacom</a> -or the simple GUI control panel <a href="#wacomcpl">wacomcpl</a> while Wacom driver is running. - -</p><p>However, adding the InputDevice sections to your XF86Config/ -xorg.conf file for Wacom devices is required. You should add these -devices to the <a href="#srvlayout">ServerLayout</a> section of your XF86Config/xorg.conf -file too. - -</p><p>We assume you are running Either XFree86 4.2 or later Or Xorg. -<span class="diff">On some distributions, this file is called XF86Config-4. -Notice that the serial and USB configurations are different, so only -include the appropriate lines. The default serial and USB devices are given. -For Tablet PCs, options "Device" and "ForceDevice" should be included. You -should also change the device (e.g. ttyS0) to the correct one for your -tablet. Tablet PC and Cintiq/PL/DTF models don't support cursor type. -</span> All the new driver options are listed in the manual page below. - - -</p><blockquote><pre>Section "InputDevice" - Driver "wacom" - Identifier "stylus" - <b>Option "Device" "/dev/ttyS0" # SERIAL ONLY</b> - <b>Option "Device" "/dev/input/event0" # USB ONLY</b> - Option "Type" "stylus" - <b>Option "USB" "on" # USB ONLY</b> - <b>Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY</b> -EndSection - -Section "InputDevice" - Driver "wacom" - Identifier "eraser" - <b>Option "Device" "/dev/ttyS0" # SERIAL ONLY</b> - <b>Option "Device" "/dev/input/event0" # USB ONLY</b> - Option "Type" "eraser" - <b>Option "USB" "on" # USB ONLY</b> - <b>Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY</b> -EndSection - -Section "InputDevice" - Driver "wacom" - Identifier "cursor" - <b>Option "Device" "/dev/ttyS0" # SERIAL ONLY</b> - <b>Option "Device" "/dev/input/event0" # USB ONLY</b> - Option "Type" "cursor" - <b>Option "USB" "on" # USB ONLY</b> - <b>Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY</b> -EndSection - -<b># This section is for Intuos3, CintiqV5, Graphire4, or Bamboo</b> -Section "InputDevice" - Driver "wacom" - Identifier "pad" - <b>Option "Device" "/dev/ttyS0" # SERIAL ONLY</b> - <b>Option "Device" "/dev/input/event0" # USB ONLY</b> - Option "Type" "pad" - <b>Option "USB" "on" # USB ONLY</b> -EndSection - -<b># This section is for the TabletPC that supports touch</b> -Section "InputDevice" - Driver "wacom" - Identifier "touch" - <b>Option "Device" "/dev/ttyS0" # SERIAL ONLY</b> - <b>Option "Device" "/dev/input/event0" # USB ONLY</b> - Option "Type" "touch" - <b>Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY</b> - <b>Option "USB" "on" # USB ONLY</b> -EndSection -</pre></blockquote> - -<p>The above four sections identify the stylus, eraser, cursor, touch, and pad devices -to XInput. Notice that all four reference the same device /dev/ttyS0 or -/dev/input/event0 depending on whether its a serial or USB tablet. - -</p><p>The configuration options listed by your system's man page may be way out of date. -Below is an updated wacom man page which will be installed by default when you issue -<i>make install</i>. </p> - -<blockquote><pre>WACOM(4) WACOM(4) - -NAME - wacom - Wacom input driver - -SYNOPSIS - Section "InputDevice" - Identifier "idevname" - Driver "wacom" - Option "Device" "devpath" - ... - EndSection - -DESCRIPTION - wacom is an X input driver for Wacom devices. - - The wacom driver functions as a pointer input device, and may be used - as the X server's core pointer. - -SUPPORTED HARDWARE - This driver supports the Wacom IV and Wacom V protocols. Serial tablets - only need this driver. USB tablet support is available on some Linux - platforms. USB tablets needs wacom Linux kernel driver being loaded - before this driver starts. Please check linuxwacom.sf.net for latest - updates of Wacom X and kernel drivers. - -CONFIGURATION DETAILS - Please refer to xorg.conf(5x) for general configuration details and for - options that can be used with all input drivers. This section only - covers configuration details specific to this driver. - - Multiple instances of the Wacom devices can cohabit. It can be useful - to define multiple devices with different active zones. Each device - supports the following entries: - - Option "Type" "stylus"|"eraser"|"cursor"|"touch"|"pad" - sets the type of tool the device represents. This option is - mandatory. The core options, such as "SendCoreEvents" or - "AlwaysCore", are unnecessary in Gimp if you don't need to - move system cursor outside of Gimp drawing area. "pad" is - for Intuos 3 and CintiqV5 ExpressKeys and menu strips, or - Graphire 4 and Bamboo tablet buttons and wheel/ring. It is - required for Intuos3, CintiqV5, Graphire 4, or Bamboo if - you want to use keystroke features. "pad" is reported as a - second tool in the driver. "touch" is for the tablet with - touch support. Right now only a few Tablet PCs have this - feature. - - Option "Device" "path" - sets the path to the special file which represents serial - line where the tablet is plugged. You have to specify it - for each subsection with the same value if you want to have - multiple devices with the same tablet. This option is - mandatory. - - Option "USB" "on" - tells the driver to dialog with the tablet the USB way. - This option is mandatory for USB tablets. - - Option "ForceDevice" "ISDV4" - tells the driver to dialog with the tablet the serial - Tablet PC way. It is a special Wacom IV protocol, called - ISDV4 protocol. This option is mandatory for serial Tablet - PCs only. - - Option "DeviceName" "name" - sets the name of the X device. - - Option "Suppress" "number" - sets the position increment under which not to transmit - coordinates. This entry must be specified only in the - first Wacom subsection if you have multiple devices for one - tablet. The default value is 2. If you don't specify this - entry or your value is less than the default vaule or - greater than 100, the default value will be used. To - disable suppression, the entry should be specified as 0. - When suppress is defined, an event will be sent only when - at least one of the following conditions is met: - - the change between the current X coordinate and the - previous one is greater than suppress; - - the change between the current Y coordinate and the - previous one is greater than suppress; - - the change between the current pressure and the previous - one is greater than suppress; - - the change between the current degree of rotation and - the previous one of the transducer is greater than suppress; - - the change between the current absolute wheel value and the - previous one is equal to or greater than suppress; - - the change between the current tilt value and the previous - one is equal to or greater than suppress (if tilt is - supported); - - relative wheel value has changed; - - button value has changed; - - proximity has changed. - - Option "Mode" "Relative"|"Absolute" - sets the mode of the device. The default value for stylus - and eraser is Absolute; cursor is Relative; pad mode is - decided according to its core option due to its nature of - not moving system cursor: Relative if it is a core device; - Absolute, otherwise. - - Option "TopX" "number" - X coordinate of the top corner of the active zone. - Default to 0. - - Option "TopY" "number" - Y coordinate of the top corner of the active zone. - Default to 0. - - Option "BottomX" "number" - X coordinate of the bottom corner of the active zone. - Default to width of the tablet. - - Option "BottomY" "number" - Y coordinate of the bottom corner of the active zone. - Default to height of the tablet. - - Option "ButtonsOnly" "on"|"off" - disables the device's motion events. Default to off. - - Option "ButtonM" "AC" - reports an action AC when button M is pressed, where M is - one of the device supported button numbers, it can be 1 to - 32. The default action reported to Xinput is mouse button M - click. To ignore the button click, i.e., to not report any - button click event to Xinput, use "0" or "button 0". - - Option "TPCButton" "on"|"off" - enables the stylus buttons as Tablet PC buttons, i.e., - reports stylus button event only when its tip is pressed. - Default to "on" for Tablet PCs; "off" for all other models. - - Option "Touch" "on"|"off" - enables the touch device for models that support touch - feature. Default to "on" for tablets with touch; "off" for - all other models. - - Option "Capacity" "number" - sets touch sensitivity level for capacitive touch device, - where number can be an integer from -1 to 5. Default is 3 - for capacitive tools and -1 for none capacitive tools. - - Option "Speed" "Rspeed" - sets the cursor's relative movement speed to Rspeed. The - default value is 1.0. A Rspeed greater than 1.0 will speed - up the cursor's relative movement. A Rspeed less than 1.0 - but greater than 0 will slow down the cursor's relative - movement. A Rspeed too close to 0 is not recommanded. - - Option "Twinview" "horizontal"|"vertical"|"leftof"|"aboveof"|"none" - sets the orientation of TwinView to map the tablet to one - screen and to be able to move the screen cursor from one - screen to the other when tool reaches the edge of the - tablet. The cursor can be constrained in a specific screen - if "ScreenNo" option is added. If you want to map the - tablet to the whole desktop, you should NOT add this - option. The default is "none". - - Option "TVResolution" "res1,res2" - specifies different resolutions for the two screens in - TwinView setup. For example, if the resolution of screen 1 - (res1) is 1024x768 and screen 2 (res2) is 1280x1024, the - option will be set to: - Option "TVResolution" "1024x768,1280x1024" - - This option is used only when TwinView option is not none. - It is unnecessary to add this option if your screens are - displaying in the same resolutions. - - Option "ScreenNo" "n" - In a multi-monitor environment, specifies the screen number - in which the cursor can move. - - Option "MMonitor" "on"|"off" - turns on/off across monitor movement on a non-TwinView - multi-monitor desktop. If you have specific tablet mappings, - i.e. TopX/Y or BottomX/Y were set, the mapping will be - applied before rotation. The default is "on". - - Option "Rotate" "CW"|"CCW"|"HALF"|"NONE" - rotates the tablet orientation counterclockwise (CCW) or - clockwise (CW) or 180 degrees (HALF). The default is "NONE". - - Option "PressCurve" "x1,y1,x2,y2" - sets pressure curve by control points x1, y1, x2, and y2. - Their values are in range from 0..100. The input for - - linear curve (default) is "0,0,100,100"; - slightly depressed curve (firmer) might be "5,0,100,95"; - slightly raised curve (softer) might be "0,5,95,100". - - Option "KeepShape" "on" - When this option is enabled, the active zone begins - according to TopX and TopY. The bottom corner is adjusted - to keep the ratio width/height of the active zone the same - as the screen while maximizing the area described by TopX, - TopY, BottomX, BottomY. - - Option "DebugLevel" "number" - sets the level of debugging info reported for the defined - device. There are 12 levels in use, specified by the - integers between 1 and 12. Once it is defined, all the - debug messages with a level less than or equal to the - "number" will be logged into /etc/X11/XFree86.0.log or - /etc/X11/Xorg.0.log. - - Option "CommonDBG" "number" - sets the level of debugging info for all devices defined - for the same tablet. There are 12 levels in use, specified - by the integers between 1 and 12. Once it is defined, all - the debug messages with a level less than or equal to the - "number" will be logged into /etc/X11/XFree86.0.log or - /etc/X11/Xorg.0.log. - - Option "CursorProx" "number" - sets the max distance from tablet to stop reporting - movement for cursor in relative mode. Default for Intuos - series is 10, Graphire series (including Volitos) is 42. - - Option "Serial" "number" - sets the serial number associated with the physical device. - This allows to have multiple devices of the same type (i.e. - multiple pens). This option is only available on wacom V - devices (Intuos series and Cintiq 21UX). To see the serial - number associated with a device, run <i><a href="#xsetwacom">xsetwacom</a></i>. - - Option "Threshold" "number" - sets the pressure threshold used to generate a button 1 - events of stylus. The default is MaxPressure*3/50. - -SEE ALSO - Xorg(1x), xorg.conf(5x), xorgconfig(1x), Xserver(1x), X(7). - -AUTHORS - Frederic Lepied <lepied@xfree86.org>, Ping Cheng <pingc@wacom.com>, - John E. Joganic <jej@j‐arkadia.com>, Magnus Vigerlöf <Magnus.Vigerlof@ipbo.se> - -X Version 11 linuxwacom 0.8.0 WACOM(4) -</pre></blockquote> -<a name="mouse1"> -</a><h2><a name="mouse1">5.2 - Mouse1 (for some 2.6 systems)</a></h2> -<p><a name="mouse1">This section largely deals with interaction problems between the mouse1 -device, PS/2 mouse, and USB tablets. Serial users can ignore this part. - -</a></p><p></p><div class="diff"><a name="mouse1">Starting from linuxwacom-0.7.1, this is not a problem -for most kernel 2.6 systems. If you use kernel 2.6 and a driver newer than 0.7.1, -you may ignore this page. However, it has been reported that on some vendors 2.6 -systems, the information detailed on this page still applies. So, if you tried -all the other steps and the tablet still has issues, you may want to apply this -page to elminate the /dev/input/mice issue.</a></div> - -<p><a name="mouse1">If you have a USB mouse or PS/2 mouse and are also using a USB tablet, -there are two solutions here for you: you may either change your -mouse1 or PS/2 InputDevice section to something other than /dev/input/mice -or build mousedev.o from this project for your kernel, which will ignore -Wacom tablets as USB mice. The wacom tablet appears as a mouse to the Linux -kernel, and consequently, the "mice" device combines the input from all your -mice, including the tablet. This will not give you the behavior you want. -A better choice is to specify the precise USB device or PS/2 mouse from which -you want to receive mouse events, namely /dev/input/mouse0 or /dev/input/mouse1 -or /dev/psaux. - -</a></p><p><a name="mouse1">If you do not have a USB mouse, adding the Mouse1 device -is <i>probably not something you want to do</i>. -Despite this, Redhat's Anaconda program will do it for you if -you boot the machine with the tablet plugged in. You'll need to be -careful about this. - -</a></p><p><a name="mouse1">When you use the mouse1 input device, the data flows from the USB wacom -kernel driver, through the event subsystem, down into the mousedev driver, -out the /dev/input/mouse0 device, and finally into the XInput mouse driver. -You effectively lose all your absolute positioning information because the -mousedev driver converts it into relative data. Additionally, the XFree86 -wacom driver does not get control of the cursor because mouse1 is providing -those events. - -</a></p><p><a name="mouse1">Therefore, if you have a Mouse1 section, leave it. Redhat 8.0 at least, -expects it to be there; however, if you do not have a USB mouse and you -are using a USB tablet, you will not be using this section, so make -certain that it is commented out of the ServerLayout section covered next. - -</a></p><p><a name="mouse1">There is one exception however. If you have no other mouse -device in your ServerLayout section, <i>do not</i> remove Mouse1. XFree86 -will not start without at least one core pointer, and the tablet -does not count unless it is specifically identified as a "CorePointer" -rather than merely "SendCoreEvents." - -</a><a name="srvlayout"> -</a></p><h2><a name="srvlayout">5.3 - ServerLayout</a></h2> -<p><a name="srvlayout">The ServerLayout section describes what devices the X server will use. -Modify the ServerLayout section to reflect the new devices. Make certain -to comment out the Mouse1 device if determined necessary from the previous -page. - -</a></p><blockquote><pre><a name="srvlayout">Section "ServerLayout" - Identifier "Default Layout" - Screen 0 "Screen0" 0 0 - InputDevice "Mouse0" "CorePointer" - InputDevice "Keyboard0" "CoreKeyboard" - <b>InputDevice "stylus" "SendCoreEvents" - InputDevice "eraser" "SendCoreEvents" - InputDevice "cursor" "SendCoreEvents" # For non-LCD tablets only - InputDevice "touch" "SendCoreEvents" # Only a few TabletPCs support this type - InputDevice "pad" # For Intuos3/CintiqV5/Graphire4/Bamboo tablets</b> -EndSection -</a></pre></blockquote> - -<p><a name="srvlayout">This section determines which devices are actually used by the server. -In the case above, the cursor, stylus, eraser, touch, and pad devices are selected. -At present, this is the correct configuration for proper -operation of the tablet whether you are using the beta package or the production package. - -</a></p><p><a name="srvlayout">You can configure one of your Wacom devices as a Core Pointer if you don't -have a regular mouse on your system. However, you lose the Wacom specific -functions, such as pressure sensitivity and absolute mode when you use that device. - -</a></p><p><a name="srvlayout">You have completed the -XF86Config/xorg.conf file changes. But aware that if you reboot -your computer with the Wacom plugged in and Redhat's Anaconda program -notices, -it may treat the tablet as a USB mouse and reconfigure this file -incorrectly. -You may need to go back and check the file to ensure that everything is -still correct afterwards. Rebooting with the device detached is not -recommended since X server doesn't properly support hotplugging yet. My -recommendation is to tell Anaconda to ignore the tablet until the -device -detection works properly. -</a><a name="restartx"> -</a></p><h2><a name="restartx">5.4 - Restart X</a></h2> -<p><a name="restartx">Finally, restart X. You may wish to do this from runlevel 3 for -testing purposes. - -</a></p><blockquote><pre><a name="restartx">[root@ayukawa root]# init 3 -...processes starting and stopping... -[root@ayukawa root]# startx -</a></pre></blockquote> - -<a name="restartx">If the X server dies, you can always back-out the -changes to the XF86Config or xorg.conf file and try again. But first, -look at the X log file (XFree86.0.log for XFree86 and Xorg.0.log for -Xorg) for clues. -You might want to do this even if everything works correctly. When -things -are running right, the following lines appear in my log file. -</a><blockquote><pre><a name="restartx">[root@ayukawa root]# grep -i wacom /var/log/XFree86.0.log -(II) LoadModule: "wacom" -(II) Loading /usr/X11R6/lib/modules/input/wacom_drv.o -(II) Module wacom: vendor="The XFree86 Project" -(II) Wacom driver level: <b>47-0.8.2-2</b> $ -(II) XINPUT: Adding extended input device "eraser" (type: Wacom Eraser) -(II) XINPUT: Adding extended input device "stylus" (type: Wacom Stylus) -(II) XINPUT: Adding extended input device "cursor" (type: Wacom Cursor) -(==) Wacom Kernel Input device name: "Wacom Intuos2 12x12" -(==) Wacom tablet maximum X=30480 maximum Y=30480 X resolution=0 Y resolution=0 -suppress=0 -(==) Wacom Cursor top X=0 top Y=0 bottom X=30480 bottom Y=30480 -(==) Wacom Stylus top X=0 top Y=0 bottom X=30480 bottom Y=30480 -(==) Wacom Eraser top X=0 top Y=0 bottom X=30480 bottom Y=30480 -</a></pre></blockquote> - -<a name="restartx">Notice the driver version 47-0.8.2-2 above. This is the new stable -wacom_drv.o driver. The beta driver is currently 47-0.8.3-3. - -</a><p><a name="restartx">First things first, you should lift the mouse off the tablet and place it -back down. This seems to help reset things internally. When you replace the -mouse, the cursor should jump to that portion of the screen. If everything is -working correctly, the mouse should work in absolute mode with the four -corners of the tablet corresponding with the four corners of the screen. If -the cursor stops short of an edge, then the kernel driver limits are probably -incorrect. Please let me know so that I can update the driver. - -</a></p><p><a name="restartx">Next, remove the mouse and try using the eraser end of the stylus. -Hovering over the surface of the tablet should move the cursor. Touching -the eraser tip to the surface should generate a click. If you invert the -pen and use the stylus tip, you should get a similar result. If the pen -tip generates spurious touch events, you will need to increase the -threshold value in the InputDevice section. Wacdump is useful for -determining the appropriate value. - -</a></p><p><a name="restartx">Lastly, if you would like more logging, the parameter "DebugLevel" (for -individual tools) and "CommonDBG" (for all tools associated with the same -tablet) can be set to values between 1 and 12, with 12 being way too much, -and 1 being fairly useful. - -</a></p><p><a name="restartx">If X server failed to start and you are running the prebuilt wacom_drv.(s)o, you may have to go back to </a><a href="#config">Configuring the Package</a> page to build the driver on your system. - -<a name="ptrstat"> -</a></p><h2><a name="ptrstat">5.5 - Check the Pointer Status</a></h2> -<p><a name="ptrstat">You can check the XInput pointer status by using <i>xsetpointer</i> -as below. The man page states that calling xsetpointer with the name of -a particular device will set it as the primary pointing device. - -</a></p><blockquote><pre><a name="ptrstat">[root@ayukawa log]# xsetpointer -l -"eraser" [XExtensionDevice] -"stylus" [XExtensionDevice] -"cursor" [XExtensionDevice] -"Mouse0" [XPointer] -"keyboard" [XKeyboard] -</a></pre></blockquote> - -<a name="xidump"> -</a><h1><a name="xidump">6.0 - Viewing XInput Events (xidump)</a></h1> -<p><a name="xidump">The xidump program is similar to wacdump, but it parses and displays -event data from the XFree86 XInput extension rather than from the tablet -itself. This is useful for seeing what programs like gimp and gsumi are -receiving from X. - -</a></p><p><a name="xidump">Presently, xidump will display proximity and motion events for -the stylus, cursor, eraser, and pad input devices. xidump supports -different display modes with "curses" and "raw" modes already -implemented and a GTK-based graphical mode in the works. The curses -mode is probably the most useful in terms of verifying that the tablet -is functioning correctly in the XFree environment; however, the raw -mode has the additional benefit of being able to verify the order, -timing, and history of events. - -</a></p><p><a name="xidump">Since xidump uses the same XInput interface that gimp and gsumi use -to get tablet data, the values displayed in xidump should be identical -to what they are receiving. If you are having trouble with pressure in -gimp, chances are that xidump will demonstrate the same problem. -xidump does not require root access to use. - -</a></p><p><a name="xidump"><b>Running xidump</b> - -</a></p><p><a name="xidump">xidump takes one argument, the input device specified in your -XF86Config/xorg.conf file. It is the Identifier entry in the -InputDevice section. Normally they are either stylus, cursor, eraser, -touch, or pad. You can get a complete list by running xidump -with the list option '-l'. xidump has the additional feature of dumping all -the device capabilities by specifying the verbose option '-v'. Both are -demonstrated below. - -</a></p><p><a name="xidump">Note: The device identifiers (input_device) are case sensitive. - -</a></p><blockquote><pre><a name="xidump">[jej@ayukawa src]$ ./xidump -l -eraser extension -stylus extension -cursor extension -Mouse0 disabled -keyboard keyboard - -[jej@ayukawa src]$ ./xidump -l -v eraser -eraser extension - key: min=8, max=39, num=32 - btn: num=1 - val: axes=6 mode=abs buf=0 - axis[0]: res=2540, min=0, max=30480 - axis[1]: res=2540, min=0, max=30480 - axis[2]: res=1, min=0, max=1023 - axis[3]: res=1, min=-64, max=63 - axis[4]: res=1, min=-64, max=63 - axis[5]: res=1, min=0, max=1023 -</a></pre></blockquote> - -<p><a name="xidump">In the first dump, we see the eraser, stylus, and cursor with the -additional Mouse0 pointer and keyboard. Only the first three are -"extension" devices. Using xidump on the keyboard or mouse pointer -will generate an error since neither are XInput devices. - -</a></p><p><a name="xidump">The second dump shows the capabilities of the eraser device including the -number of keys (32), buttons (1), and axes (6). It also shows the -mode to be absolute. In order, the axes are: x, y, pressure, tilt-x, -tilt-y, and wheel. When the cursor is used, axis 3 becomes z-rotation -instead of tilt-x. - -</a></p><p><a name="xidump">You should be aware that xidump and gimp must take ownership of the device -in order to get real-time data. This creates a conflict if you are running -both of them simultaneously. gimp is the more clever of the two programs in -that it only "grabs" the input device if you are hovering over the gimp -drawing window. xidump is less friendly. In order to display the absolute -position across the entire screen, it creates a small "listening window," -grabs the device immediately, and does not release it until you quit the -program. Neither program should fail, but you will not be able to draw -in gimp and run xidump at the same time if they are both using the same -input device. - -</a></p><p><a name="xidump">We will run xidump in raw mode for the first time to see the stylus -events directly. A small window will appear on the desktop while xidump -runs; you can safely ignore it. Closing it will kill the application. - -</a></p><blockquote><pre><a name="xidump">[jej@ayukawa src]$ ./xidump -u raw stylus -14.56291895: Proximity In -14.56305595: Motion: x= +5978 y=+28728 p= 0 tx= +64 ty= +64 w= +0 ID: 2323 Serial: -60 -... -16.87158095: Motion: x= +4941 y=+27842 p= 225 tx= +41 ty= +67 w= +0 ID: 2323 Serial: -60 -16.87164395: Button: 1 DOWN -16.87169595: Motion: x= +4964 y=+27844 p= 398 tx= +42 ty= +66 w= +0 ID: 2323 Serial: -60 -... -17.27328395: Motion: x= +5261 y=+27543 p= 3 tx= +48 ty= +64 w= +0 ID: 2323 Serial: -60 -17.27334395: Button: 1 UP -17.27515995: Motion: x= +5348 y=+27451 p= 4 tx= +48 ty= +63 w= +0 ID: 2323 Serial: -60 -... -17.35933795: Motion: x= +7089 y=+27061 p= 4 tx= +48 ty= +63 w= +0 ID: 2323 Serial: -60 -17.37444395: Proximity Out -<Ctrl-C> -</a></pre></blockquote> - -<p><a name="xidump">The timestamp on the left is seconds elapsed; the next field is the -event type. Mostly, you will encounter motion events although I've trimmed -many of them out of this listing. As you can see from the above, the first line -is a "proximity in" event which indicates the stylus came in range of the -tablet. The last event was a "proximity out." At 16.87 seconds, I tapped -the stylus to the tablet surface as recorded by the "Button: 1 DOWN" and -subsequent "UP" message. Raw mode is useful for verifying the order and -timing of messages, but is not particularly clean. The ncurses mode works -much better. - -</a></p><blockquote><pre><a name="xidump">[jej@ayukawa src]$ ./xidump stylus -InputDevice: stylus -Valuators: Absolute ID: 2323 Serial Number: -60 - - x-axis y-axis pressure x-tilt y-tilt wheel - data: +10826 +09919 +00084 +00058 +00065 +00000 - min: +00000 +00000 +00000 -00064 -00064 +00000 - max: +30480 +30480 +01023 +00063 +00063 +01023 - res: +00000 +00000 +00039 +00001 +00001 +00001 - -******** -Proximity: IN - Focus: - Buttons: 1-DOWN - Keys: -</a></pre></blockquote> - -<p><a name="xidump">All of the ranges are displayed above, include their resolutions which as -far as I know are not normally used. Only the proximity, focus, valuator, -and button events are currently implemented. - -</a></p><p><a name="xidump">For completeness sake, here are the command line options: - -</a></p><blockquote><pre><a name="xidump">Usage: xidump [options] input_device - -h, --help - usage - -v, --verbose - verbose - -V, --version - version - -l, --list - list available input devices - -u, --ui ui_type - use specified ui, see below - -Use --list option for input_device choices -UI types: curses, raw -</a></pre></blockquote> - -<p><a name="xidump">There are not many options, but the --list option is helpful for -identifying devices, and the --ui option allows you to switch between -curses and raw modes. Adding the --verbose option increases the amount of output, and -when used in conjunction with --list, displays the device capabilities. - -</a><a name="tabletpc"> -</a></p><h1><a name="tabletpc">7.0 - Tablet PC</a></h1> - -<p><a name="tabletpc">The Wacom digitizers embedded in Tablet PCs -utilitizes a special protocol IV, ISDV4. Most of them are serial -tablets. There are a few Wacom USB tablet PC OEMs on the market -recently. However, we don't support USB tablet PC yet. This page is for -serial Tablet PC only. </a></p><p><a name="tabletpc">Similar to the conventional serial -tablets, serial tablet PCs use a serial controller (UART). But, -normally, they are not set to any serial ports. They are effectively -serial devices, but require special configuration (setserial) under -Linux. </a></p><div class="diff"> -<p><a name="tabletpc">You can use <i>xxd</i> to see if your tablet has been mapped onto a serial port or not. To do so, follow the steps below: - -</a></p><blockquote><pre><a name="tabletpc">[jej@ayukawa ~]$su -Password: -[jej@ayukawa ~]# xxd /dev/ttyS0 -</a></pre></blockquote> - -<p><a name="tabletpc">Move your pen on your tabletPC. If you see output -from the terminal while you move the pen, your tablet has been mapped -to port 1. Quit xxd by Ctrl+c. Then ignore the rest of this page and go -to(see </a><a href="http://linuxwacom.sourceforge.net/index.php/howto/x11">Configuring X11</a>) page. Otherwise, apply xxd to port 1 to 4. If none of them show output, you need to manually map the tablet to a serial port. -</p></div> - -<p>Here is a sample command. The IO port may be different for your Tablet PC. - -</p><blockquote><pre>[jej@ayukawa src]$ setserial /dev/ttyS2 port 0x93f8 autoconfig -</pre></blockquote> - -<p>This command needs to be excuted with each reboot before X server starts. -</p><p>You can add the command into one of your favorite start script. I normally -add it into /etc/rc.d/rc.local. Here is my rc.local: - -</p><blockquote><pre>#!/bin/sh -# -# This script will be executed *after* all the other init scripts. -# You can put your own initialization stuff in here if you don't -# want to do the full Sys V style init stuff. - -touch /var/lock/subsys/local -setserial /dev/ttyS2 port 0x93f8 autoconfig -</pre></blockquote> - -<p>After installing wacom_drv.o and other programs, such as wacomcpl and wacdump, -restart X server. Now you can view raw tablet data by: - - -</p><blockquote><pre>[jej@ayukawa util]$ ./wacdump -f tpc /dev/ttyS2 # Wacom digitizer on fake COM3 - -<div class="diff"> -If your wacdump is from linuxwacom version 0.7.5 or older, issue -[jej@ayukawa util]$ ./wacdump -f c100 /dev/ttyS2 -</div> -</pre></blockquote> - -<p>If everything looks right from wacdump (see <a href="http://linuxwacom.sourceforge.net/index.php/howto/wacdump">Using wacdump</a>), -you can update /etc/X11/XF86Config or /etc/X11/xorg.conf to load wacom X driver - (see <a href="http://linuxwacom.sourceforge.net/index.php/howto/x11">Configuring XFree86/X11R6</a>). - -</p><p>Please notice that in Wacom InputDevice section, the following 2 options are -required for Tablet PC: - -</p><blockquote><pre> <b>Option "Device" "/dev/ttyS2" # SERIAL ONLY</b> - <b>Option "ForceDevice" "ISDV4" # Tablet PC ONLY</b> -</pre></blockquote> - -<p>Refer to <a href="http://linuxwacom.sourceforge.net/index.php/howto/inputdev">Adding the InputDevices</a> for details. - -</p><blockquote><div class="diff"> - -<p>Some HP Tablet PCs require you explicitly run the following program before setserial. This -is due to the fact that Wacom Digitizer on HP Tablet PCs are not mapped to any serial -port by default. - -</p><p>Please compile tc1100ts.c as mentioned below and copy the executable (tc1100ts) -to /usr/sbin. Then add the following two lines to the end of your /etc/rc.d/rc.local: - -</p><p>/usr/sbin/tc1100ts -</p><p>setserial /dev/ttyS2 port 0x03e8 autoconfig - -</p><pre><b>Mapping Wacom Digitizer to /dev/ttyS2 for HP Tablet PC</b> - - -/* - * HP TC1100 Touchscreen Enable - * Copyright (c) 2004 Hewlett-Packard Co. - * - * Compile with `cc -O2 -o tc1100ts tc1100ts.c', - * and run as root with `./tc1100ts'. - * - * This standalone program enables the Serial Port 1 - * (SP1) of the NS LPC Super I/O, where the Wacom - * Digitizer is connected to on the HP TC1100 Tablet PC. - * - * The serial device is mapped to 0x3e8 IRQ0-4 to match - * the default /dev/ttyS2 port and IRQ mapping on Linux. - * - * To proof that the Wacom Digitizer is enabled by this - * standalone, do the following: - * - Change to superuser mode, i.e. root - * - setserial /dev/ttyS2 - * it should return: - * /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4 - * - ./tc1100ts - * - setserial /dev/ttyS2 autoconfig - * - setserial /dev/ttyS2 - * now returns: - * /dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 4 - * - */ - -#include <stdio.h> -#include <unistd.h> -#include <sys io.h=""> -#include <stdlib.h> - -const int cfgindex = 0x4e; -const int cfgdata = 0x4f; - -#define wsio(i,d) {outb(i,cfgindex); outb(d,cfgdata);} - -int main() -{ - /* Get access to the ports */ - if (iopl(3)) {perror("iopl"); exit(1);} - - // See the SuperIO Specificatio for details of each register - wsio(0x07,0x03); // Select Logical Device - Serial Port 1 - wsio(0x30,0x00); // De-activate Logical Device - wsio(0x60,0x03); // I/O Port Base [15-08] - wsio(0x61,0xe8); // I/O Port Base [07-00] - wsio(0x70,0x14); // Enables Wake-up on IRQ4 - wsio(0x71,0x03); // Level IRQ Req, Hi priority - wsio(0x74,0x04); // DMA Channel Select 0 - no DMA - wsio(0x75,0x04); // DMA Channel Select 1 - no DMA - wsio(0x30,0x01); // Activate Logical Device - - /* We don't need the ports anymore */ - if (iopl(0)) {perror("iopl"); exit(1);} - - exit(0); -} - -/* end of tc1100ts.c */ -</stdlib.h></sys></unistd.h></stdio.h></pre> - -</div></blockquote> - -<a name="wacomcpl"> -</a><h1><a name="wacomcpl">8.0 - GUI-Based (tcl/tk) Wacom Control Panel(wacomcpl)</a></h1> -<p><a name="wacomcpl">wacomcpl is a simple graphic Wacom driver configuration tool. It -changes the pressure sensitivity, click threshold, button functions, -cursor mode, speed, mapping, etc. without having to manually modify -XF86Config/xorg.conf file. For Cintiq and Tablet PC users, it is -also a tool to calibrate the tablet. wacomcpl should be launched -when you login as yourself since .xinitrc (or .xsession), a file -under your home directory, will be updated locally each time you -run wacomcpl. The .xinitrc (or .xsession) stores the preferences -you selected through wacomcpl for your next login. The goal is to -give each user a chance to use his/her own preference on a shared system. - -</a></p><div class="diff"> -<p><a name="wacomcpl">If you want all users on one system to share some settings, you can -copy those lines started with xsetwacom in ~/.xinitrc (or ~/.xsession) -to /etc/X11/xinit/xinitrc (/etc/X11/xinit/Xsession). - -</a></p><p><a name="wacomcpl">If your system doesn't execute .xinitrc (or .xsession) at login, each -time after exiting from wacomcpl, you will need to copy those xsetwacom -lines in .xinitrc (or .xsession) to a startup script (.bashrc, .cshrc, -.profile, etc.) that your system launches. You can also modify wacomcpl-exec -to automate this step. - -</a></p><p><a name="wacomcpl">However, it is reported that there are older systems on which can not run -wacomcpl due to some XFree86 interface error. The workaround is to add the -configuration options to your X config file, refer to </a><a href="#x11">Configuring X11</a> page for details. -</p></div> - -<p><b>Running wacomcpl</b> - -</p><p>If wacom_drv.(s)o was running while installing wacomcpl, wacomcpl can be -launched immediately after <i>make install</i> and <i>exit</i>. - -</p><p>If wacom_drv.(s)o is installed by the same <i>make install</i> -as wacomcpl is, restarting X server is required to use the newly built -wacom_drv.(s)o. We strongly recommand to build and install the -wacom_drv.(s)o and wacomcpl from the same release package since the out -of sync wacom_drv.(s)o and wacomcpl may crash your X server. -<a name="xsetwacom"> -</a></p><h1><a name="xsetwacom">9.0 - Command Line Configuration Interface (xsetwacom)</a></h1> -<p><a name="xsetwacom">The xsetwacom is a command-line Wacom driver configuration tool. It -changes the pressure sensitivity, click threshold, button functions, -cursor mode and speed, and much more without having to manually modify -XF86Config or xorg.conf file. - -</a></p><p><a name="xsetwacom">The basic usage and options can be viewed by issuing <i>xsetwacom</i>. - -</a></p><p><a name="xsetwacom"><b>Note: </b>The device identifiers (dev_name) are case sensitive. You should -use the dev_name exactly the same as <i>xsetwacom list</i> shows. The examples -below assume that Stylus, cursor, and pad are used. - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom -Usage: xsetwacom [options] [command [arguments...]] -Options: - -h, --help - usage - -v, --verbose - verbose output - -V, --version - version info - -d, --display disp_name - override default display - -s, --shell - generate shell commands for 'get' - -x, --xconf - generate X.conf lines for 'get' - -Commands: - list [dev|param] - display known devices, parameters - list mod - display supported modifier and specific keys for keystokes - set dev_name param [values...] - set device parameter by name - get dev_name param [param...] - get current device parameter(s) value by name - getdefault dev_name param [param...] - get device parameter(s) default value by name -</a></pre></blockquote> - -<p><a name="xsetwacom">xsetwacom supports 3 forms of get/getdefault commands: <i>xsetwacom get</i> -returns the parameter's raw value; <i>xsetwacom -x get</i> returns the value in Xorg.conf -form; and <i>xsetwacom -s get</i> returns the value in shell command form. - -</a></p><p><a name="xsetwacom">The most used xsetwacom command is <i>xsetwacom set dev_name param [values...]</i>, -where param is an option which will be set to values in wacom_drv.o after excuting xsetwacom. -To better understand the use of this command, let's see some examples. Assume that you use -<i>Stylus</i> as your Wacom tool's Identifier, which is considered as dev_name in xsetwacom command. - -</a></p><p><a name="xsetwacom">If you want to change <i>Stylus's</i> mode from absolute (default) to relative, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set Stylus mode relative -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to change button 2 to left-double-click, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set Stylus button2 "dblclick 1" -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to change button 2 to button 5, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set Stylus Button2 "button 5" -or -[jej@ayukawa linuxwacom]$xsetwacom set Stylus Button2 5 -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to change button 3 to ModeToggle, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set Stylus button3 modetoggle -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to know what the current (or default) pressure sensitivity setting is, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom -s get Stylus PressCurve (output in xsetwacom format) -xsetwacom set stylus PressCurve "0 15 85 100" -or -[jej@ayukawa linuxwacom]$xsetwacom -x get Stylus PressCurve (output in xorg.conf Option format) - Option "PressCurve" "0,15,85,100" - -[jej@ayukawa linuxwacom]$xsetwacom -x getdefault Stylus PressCurve - Option "PressCurve" "0,0,100,100" -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to set the pressure sensitivity a bit softer, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set Stylus PressCurve 0 15 85 100 -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want the buttons behave the Tablet PC way, i.e., sending button event only when -button1 (the tip) is pressed, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set Stylus TPCButton on -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to change <i>pad's</i> button 1 to ctrl alt F2, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set pad Button1 "core key ctrl alt F2" -</a></pre></blockquote> - -<p><a name="xsetwacom">If you want to change <i>pad's</i> button 2 to ctrl alt backspace, then: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa linuxwacom]$xsetwacom set pad Button2 "core key ctrl alt backspace" -</a></pre></blockquote> - -<div class="diff"><a name="xsetwacom"><b>Note:</b> keystrokes and modifiers are only supported for Xorg 6.8 or later. -</a></div> - - -<p><a name="xsetwacom"><b>xsetwacom supported parameters</b> - -</a></p><p><a name="xsetwacom">Below is a list of the parameters and their values used by <i>xsetwacom</i> command (a similar -output can be viewed by <i>xsetwacom list param</i>. All functions apply to the associated tool -unless explicitly stated otherwise): - -</a></p><blockquote><pre><a name="xsetwacom"> param [values...] results ------------------------------------------------------------------- - Mode Relative|Absolute sets the mode of the device - TopX integer sets the X coordinate of the top corner of the active zone - TopY integer sets the Y coordinate of the top corner of the active zone - BottomX integer sets the X coordinate of the bottom corner of the active zone - BottomY integer sets the Y coordinate of the bottom corner of the active zone - STopX<i>i</i> integer returns screen <i>i</i> left coordinate in pixels - STopY<i>i</i> integer returns screen <i>i</i> top coordinate in pixels - SBottomX<i>i</i> integer returns screen <i>i</i> right coordinate in pixels - SBottomY<i>i</i> integer returns screen <i>i</i> bottom coordinate in pixels - Button<i>M</i> integer|keystroke sets button <i>M</i> to button integer click or keystroke - Button<i>M</i> 0 ignores button <i>M</i> click - RelWUp integer|keystroke sets relative wheel up to button click or keystroke - RelWDn integer|keystroke sets relative wheel down to button click or keystroke - AbsWUp integer|keystroke sets absolute wheel up to button click or keystroke - AbsWDn integer|keystroke sets absolute wheel down to button click - StripLUp integer|keystroke sets left strip up to button click or keystroke - StripLDn integer|keystroke sets left strip down to button click or keystroke - StripRUp integer|keystroke sets right strip up to button click or keystroke - StripRDn integer|keystroke sets right strip down to button click or keystroke - PressCurve i1 i2 i3 i4 sets the pressure bezier curve, where i1+i4=100; i2+i3=100 - DebugLevel integer (0 - 12) sets the level of debugging trace for the specified tool - CommonDBG integer (0 - 12) sets the level of debugging trace for all tools - associated with the same tablet. - Suppress integer (0 - 100) number of data trimmed for the tools associated - with the same tablet. - Screen_No integer (-1 - 5) sets screen number the tablet is mapped to. - TwinView none|vertical|horizontal - |leftof|aboveof sets the mapping to TwinView. Tablet mappings applied after - this command will be based on the new tablet orientation. - TVResolution0 width x height sets MetaModes option for TwinView Screen 0. - TVResolution1 width x height sets MetaModes option for TwinView Screen 1. - SpeedLevel integer (1 - 11) sets relative cursor movement speed - ClickForce integer (1 - 21) sets tip/eraser pressure threshold with clickforce scale - Threshold integer sets tip/eraser pressure threshold directly to the pressure - xyDefault resets the bounding coordinates to default in tablet units - mmonitor on|off turns on/off across monitor movement on (non-TwinView) - multi-monitor desktop - TPCButton on|off turns on/off the buttons as Tablet PC buttons - Touch on|off turns on/off Touch events (default is enable/on for tablets with touch). - Capacity integer (-1 - 5) sets the touch sensitivity level for capacitive touch device - (default is 3 for capacitive tools, -1 for none capacitive tools). - CursorProx integer (distance) sets cursor distance margin for proximity-out - in distance from the tablet surface - Rotate none|cw|ccw|half sets the rotation of the tablet. - ToolID returns the ID of the associated device. - ToolSerial returns the serial number of the associated device. - GetTabletID/TabletID returns the tablet ID of the associated device. - NumScreen returns number of screens configured for the desktop. ------------------------------------------------------------------- - -Event description format: -[CORE] [EVENT TYPE] [MODIFIERS] [CODE] - CORE: Emit core events irrespective of the SendCoreEvents setting - EVENT TYPE: the type of event to emit: - KEY: Emit a key event - BUTTON: Emit a button event - DBLCLICK: Emit a double-click button event - MODETOGGLE: Toggle absolute/relative tablet mode - DISPLAYTOGGLE: Toggle cursor movement among screens - for the selected tool except pad which - applies to all tools asssociated with the tablet - MODIFIERS: use "xsetwacom list mod" - to see a list of modifiers and specific keys - CODE: Button number if emit a button event - or specific keys and any other keys not listed as mod - -</a></pre></blockquote> - - -<p><a name="xsetwacom"><b>Associating parameters to physical devices</b> - -</a></p><p><a name="xsetwacom">Following is a list of the parameters that are associated with the elements of devcies. - -</a></p><blockquote><pre><a name="xsetwacom"> param tools --------------------------------------------------------------------------- -Button# All Wacom styli/pucks buttons - Tablet ExpressKeys -RelWUp/RelWDn Graphire4 tablet wheel - Wacom puck Fingerwheel -AbsWUp/AbsWDn Intuos puck Thumbwheel - Intuos Airbrush Fingerwheel - Bamboo tabelt Touch Ring -StripLUp/StripLUp Left Touch Strip on Intuos3 and V5 Cintiq (Cintiq 21UX/12WX/20WSX) tablets -StripRUp/StripRUp Right Touch Strip on Intuos3 and V5 Cintiq (Cintiq 21UX/12WX/20WSX) tablets --------------------------------------------------------------------------- - -</a></pre></blockquote> - - -<p><a name="xsetwacom"><b>Automatically excuting predefined xsetwacom commands at logging in</b> - -</a></p><p><a name="xsetwacom">The xsetwacom commands can be added to the .xinitrc under your home directory so next time when -you login as yourself, the driver will be set to the options you choose. - -</a></p><p><a name="xsetwacom">Below is an example of my .xinitrc: - -</a></p><blockquote><pre><a name="xsetwacom">[jej@ayukawa jej]$ more .xinitrc -xsetwacom set Stylus TopX 10 -xsetwacom set Stylus TopY 67 -xsetwacom set Stylus BottomX 7170 -xsetwacom set Stylus BottomY 5778 -xsetwacom set Stylus TPCButton 1 -# run the primary system script -. /etc/X11/xinit/xinitrc -</a></pre></blockquote> - -<div class="diff"> -<p><a name="xsetwacom">To see what's under your home directory, use <i>ls -al ~</i>. - -</a></p><p><a name="xsetwacom">If your system doesn't execute .xinitrc at login, you can add those xsetwacom commands into the -startup script (.bashrc, .cshrc, .profile, etc.) that your system launches, for example, you should -use .Xsession instead of .xinitrc on Debian. - -</a></p><p><a name="xsetwacom">It has been reported that xsetwacom can not run on some older systems due to a XFree86 interface -error. A generic solution to this issue is directly adding your configuration options to the -/etc/X11/XF86Config file. Please refer to </a><a href="#x11">Configuring X11</a> for details. -</p></div> - -<p><b>More examples</b> - -</p><p>If you are confused with the usages above, let's see some more confusing examples. - -</p><p> <b>1.</b> Usage of keystroke and modifiers - -</p><p>keystroke and modifiers can be used through buttons, ExpressKeys, wheels, Touch Strips, and -Touch Ring. A list of supported modifiers and special keys can be viewed through -<i>xsetwacom list mod</i>. Special keys are symbols that go together to represent one XInput key event. - -</p><p>In the following example, <b>Up</b> represents the <b>up arrow</b> key: - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set cursor button4 "key core Up" -</pre></blockquote> - -<p>When you press button4 on your Wacom puck, Xinput will receive an <b>up arrow</b> event. - -</p><p>If you want to send the <b>Up</b> keystroke, the universal escape character <b>\</b> has to be used: - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set cursor button4 "key core \Up" -</pre></blockquote> - -<p>If you press button4 on your Wacom puck, Xinput will receive an <b>U</b> and a <b>p</b> events, -i.e., <b>Up</b> would be displayed on your active console or application. - -</p><p>Sending <b>down arrow</b> event when button5 is pressed: - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set cursor button5 "key core Down" -</pre></blockquote> - -<p>Sending <b>PageUp</b> event when tablet wheel scrolls up: - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set pad RelWUp "key core pgup" -</pre></blockquote> - -<p>Sending <b>PageDown</b> event when tablet wheel scrolls down: - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set pad RelWDn "key core pgdn" -</pre></blockquote> - -<p>The same functions work for parameters AbsWUp, AbsWDn, StripLUp, -StripLDn, StripRUp, and StripRDn. - -</p><p> <b>2.</b> Changing debug level while driver is running - -</p><p>xsetwacom supports 2 ways of enabling/disabling debugging information, for individual device -and/or for all tools associated with the same tablet, through parameters DebugLevel and CommonDBG. For example, - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set cursor DebugLevel 10 -</pre></blockquote> - -<p>Turns debugger on to level 10 for device "cursor" only. Other devices -will not report information to Xorg.0.log file. - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom set cursor CommonDBG 3 -</pre></blockquote> - -<p>Turns debugger on to level 3 for all devices associated with the same -tablet as "cursor" does. But only common debug information will be -reported. - -</p><p> <b>3.</b> Configuring TwinView setup while system running - -</p><p>TwinView parameter sets the mapping of TwinView to -horizontal/vertical/none. The current TwinView setup can be retrieved -by the corresponding get command. For example: - -</p><blockquote><pre>[jej@ayukawa jej]$ xsetwacom -x get cursor TwinView - Option "TwinView" "none" -[jej@ayukawa jej]$ -</pre></blockquote> - -which means device <b>cursor</b> was not set to TwinView display. - -<p>Two other parameters, TVResolution0 and TVResolution1, made the change of MetaModes option -in TwinView setup possible when system is running. TVResolution0 sets MetaModes option for -TwinView Screen 0, while TVResolution1 sets MetaModes option for TwinView Screen 1. -However, you need to make sure that the MetaModes you are going to set is the same as -the TwinView setup in your xorg.conf for Nvidia Graphic card driver. - -</p><p> <b>4.</b> Changing Suppress and RawSample to filter the raw data - -</p><p>Use of Suppress will reduce the number of raw data we process in the driver. So, unless -you know what you are doing, changing Suppress is not recommended. Valid values for Suppress -is 0 to 100, where 0 means raw data is used as is. Suppress less than 101 means data will -be used only when its change compared to the last processed event is larger than Suppress in -points. Default is 2. - -</p><p>RawSample was originally introduced to smooth x/y coordinates to a certain degree. -A four-points averaging was tested and convinced to be effective. In 0.7.8, we made -RawSample changeable through xsetwacom. However, same as with Suppress, changing -RawSample is not recommended. The maximum value can be as large as 20. -But the default stays at 4. - -</p><p>Both Suppress and RawSample apply to the devices on the same tablet, that is, -it is global to all devices associated with the same tablet. - -<a name="gimp"> -</a></p><h1><a name="gimp">10.0 - Working With Gimp</a></h1> -<div class="diff"><a name="gimp">It has been suggested that gimp should be recompiled from -source (v1.2.3) on Mandrake 9.0. This does not seem to be true for Redhat -8.0. - -It is also reported that Slackware didn't configure gtk with xinput support. -So, when you rebuild gtk, please make sure to configure the package with -xinput=xfree option, i.e., use <i>./configure --with-xinput=xfree</i>. As of -March 23, 2004, newer Slackware shipping with gtk2 has configured with -xinput. </a></div> - -<p><a name="gimp">Bring up <i>gimp</i> and select "File -> Dialogs -> Input Devices" if -using 1.x or "File -> Preferences -> Input Devices -> Configure Extended -Input Devices" if using 2.x. You will see a drop-down list with all -devices present. After enabling them, you can see their respective statuses -by calling up "File -> Dialogs -> Device Status". It has been recommended -that the devices be set to "Screen" mode rather than "Window". - -</a></p><p><a name="gimp">I have successfully been able to use gimp with several different pens, -including the tips and erasers. Tilt does not appear to be used by gimp -at present, but pressure works fine. If the pressure is too coarse, or -doesn't kick in until too late, you may need to lower your threshold value. -The pressure curve setting can be changed through graphic tool, wacomcpl, -and command line tool, xsetwacom. - -</a></p><p><a name="gimp">Also, a useability note with Gimp: Each input device (stylus,cursor,eraser) -has a completely different set of attributes in Gimp, and in theory, you can -even assign a unique serial number to different pens to get even -more granularity. You will experience this when -you try to use your eraser for the first time. Rather than selecting the -eraser tool, you get the rectangle selection tool instead. This is by design, -believe it or not. Gimp does not care that its an eraser, just that it's not -the pen you were just using. If you choose the eraser tool now, it will -remember that for the next time you try to use it. On the plus side, you -can set the eraser to be anything, including the Airbrush tool or Clone tool. - -</a></p><p><a name="gimp">If you change the tool's mapping area while -Gimp was running, you need to relaunch Gimp to use the new settings. -Otherwise, the tool tip will be off from the drawing point. -</a></p><p><a name="gimp">One tablet user has pointed out that deleting his .gimp directory and -rerunning gimp was necessary before his airbrush worked correctly. If you -are having trouble, it's worth a shot. - -</a></p><p><a name="gimp">Good luck! -</a><a name="multimonitor"> -</a></p><h1><a name="multimonitor">11.0 - Tablet-Screen Mapping</a></h1> - -<p><a name="multimonitor">This page explains how multi-monitor settings -are supported and how to use the InputDevices options to setup your -desired tablet-to-screen mapping. </a></p><p><a name="multimonitor">Linux Wacom X driver (wacom_drv.so) -mainly supports three types of dual/multi-monitor setup in use with X -server on Linux: TwinView, Xinerama, as well as non-TwinView and -non-Xinerama case, where you normally can move the cursor from one -screen to the other, but you can not move an application window, such -as a terminal, from one screen to the other. -</a></p><p><a name="multimonitor"><b>TwinView setup </b> - -</a></p><p><a name="multimonitor">By TwinView setup, we mean the two screens are configured in such a way that X "thinks" it only has one screen. - -</a></p><p><a name="multimonitor">There are three kinds of tablet-to-screen mappings in this setup: - -</a></p><p><a name="multimonitor">1. map the tablet to the whole desktop; -</a></p><p><a name="multimonitor"> In this case, there is no extra -option required in the InputDevices section for Wacom driver in your -X11's configuration file. So this is the default state for TwinView -setup. -</a></p><p><a name="multimonitor">2. map the tablet to one screen at a time, but can switch screens at wish; -</a></p><p><a name="multimonitor"> Option "TwinView" is used in the InputDevices section of the X11's configuration file to configure Wacom driver. - -</a></p><p><a name="multimonitor"> This feature was initially supported -by Dreamwork developers. Their idea was to maximize the accuracy of the -tablet on one screen and be able to move the cursor between screens -without issuing a command (such as xsetwacom) or press a button (such -as display toggle). The tradeoff is that you lost about 60 tablet count -of points on the side that enables the screen switch. </a></p><p><a name="multimonitor">3. map the tablet to a specific screen. -</a></p><p><a name="multimonitor"> Option "TwinView", "TVResolution0", -"TVResolution1", and "ScreenNo" are used in the InputDevices section of -the X11's configuration file to configure Wacom driver . Detailed use -of these options can be found by "man wacom". -</a></p><div class="diff"> -<p><a name="multimonitor">I've seen displays with Xinerama in their -xorg.conf files in fact fall into TwinView setup since the whole -desktop is reported as one screen. Use <i>xsetwacom get stylus NumScreen</i> -to see how many screen you have. You need to use this command without -adding any screen mapping related options in your xorg.conf file for -Wacom device. -</a></p></div> - -<a name="multimonitor"><b>Xinerama setup </b> - -</a><p><a name="multimonitor">1. map the tablet to the whole desktop; -</a></p><p><a name="multimonitor"> No extra option required in the -InputDevices section for Wacom driver in your X11's configuration file -to support this setup. It is the default state. -</a></p><p><a name="multimonitor">2. map the tablet to one screen at a time, but can switch screens with the regular mouse or a user defined button/app; -</a></p><p><a name="multimonitor"> Option "MMonitor" "off" is used in -the InputDevices section of the X11's configuration file to configure -Wacom driver. The cursor will stay in the screen where you started to -use the configured Wacom device. You can change screens by moving the -cursor with another device/app, such as system mouse or another Wacom -device which is not configured with "MMonitor" "off", then use the -configured Wacom device in that screen. -</a></p><p><a name="multimonitor">3. map the tablet to a specific screen. -</a></p><p><a name="multimonitor"> Only option "ScreenNo" is needed to configure Wacom driver in this setting. - -</a></p><p><a name="multimonitor"><b>non-TwinView and non-Xinerama setup </b> - -</a></p><p><a name="multimonitor">In this setup, we only support tablet -to a specific screen mapping, that is, you have to map the tablet to a -specific screen by option "ScreenNo". Otherwise, your tablet may be -mapped half on the first screen and the other half on the second -screen. </a></p><p><a href="#inputdev">X11 InputDevices Options</a> details all options for your Wacom device that we mentioned above. - - -<a name="contact"> -</a></p><h1><a name="contact">12.0 - Contacts</a></h1> -<p><a name="contact">Ping Cheng can be contacted at the following email address: -</a><a href="mailto:%20pingc@wacom.com?SUBJECT=WACOM">pingc@wacom.com</a>. -<a name="appendix"> -</a></p><h1><a name="appendix">13.0 - Appendix</a></h1> -<p><a name="appendix">This section is for everything that is either not critical or simply -too complex to describe in the document above without becoming overly -distracting. -</a><a name="dump"> -</a></p><h2><a name="dump">13.1 - Building wacdump and xidump</a></h2> - -<p><a name="dump"><b>Building wacdump</b> - -</a></p><p><a name="dump">wacdump is enabled by default in the configure script, so let's do that now: - -</a></p><blockquote><pre><a name="dump">[jej@ayukawa linuxwacom]$ ./configure -... ----------------------------------------- - BUILD OPTIONS: - wacom.o - no - wacdump - <b>yes</b> - hid.o - no - usbmouse.o - no - wacom_drv.o - no ----------------------------------------- -</a></pre></blockquote> - -<p><a name="dump">As shown above, the build options indicate that wacdump will be built. -If not, then scroll back through the configuration to see if there aren't -any errors or warnings that would explain this. - -</a></p><p><a name="dump">Next, run <i>make</i>. The output will be a file called wacdump in the -linuxwacom package's src/util directory. Running <i>make install</i>, will -install it under /usr/local/bin. - -</a></p><p><a name="dump"><b>Building xidump</b> - -</a></p><p><a name="dump">xidump builds by default so if you've configured and built the project -in previous steps, you probably have it already. If not, we can build it now. - -</a></p><p><a name="dump">xidump requires the XLib and XInput header files to be present on -the system. On Redhat 8.0, these files are located in the XFree86-devel -RPM package. Other distributions may be organized differently, and -people who build X from source probably get them by default. When -configuring, check that XLib is detected in the build environment, -and if not, refer to the warnings and "checking for" messages for -additional clues. - -</a></p><p><a name="dump">The preferred display mode for xidump uses ncurses. To compile it, you -will need the ncurses header files. On Redhat 8.0, these files are located -in the ncurses-devel package. Without ncurses, xidump defaults to raw mode -automatically. - -</a></p><blockquote><pre><a name="dump">[jej@ayukawa linuxwacom]$ ./configure -checking for XLib include directory... <b>found</b> -checking for XLib header files... <b>found</b> -checking for ncurses.h... <b>yes</b> -... ----------------------------------------- - BUILD ENVIRONMENT: - ... - <b>XLib - yes</b> - <b>ncurses - yes</b> - ... - - BUILD OPTIONS: - ... - <b>xidump - yes</b> - ... ----------------------------------------- - -</a></pre></blockquote> - -<p><a name="dump">The configuration above indicates that the XLib and ncurses header files -were found and xidump will be built. If ncurses.h is not found, xidump -will still build, but it will also warn you that ncurses will not be -available. If you encounter warnings, it is most likely that your -development environment is missing some packages. - -</a></p><p><a name="dump">When you run <i>make</i>, the xidump program will be built along with any -other programs that are specified in the build options. The output file is -called 'xidump' and is located in the linuxwacom package's src/util directory. -It is installed by running <i>make install</i>. -</a><a name="xset"> -</a></p><h2><a name="xset">13.2 - Building xsetwacom</a></h2> - -<p><a name="xset"><b>Building xsetwacom</b> - -</a></p><p><a name="xset">xsetwacom uses libwacomcfg.so to communicate with Wacom X (XFree86 or -Xorg) driver, wacom_drv.(s)o. So, libwacomcfg.so should be built and -installed. - -</a></p><p><a name="xset">libwacomcfg.so relies on Xlib. In the -configure script, it will default the Xlib path to /usr/X11R6 or -/usr/lib (/usr/X11R6/lib64 or /usr/lib64 if --enable-xserver64 option -is set) by checking the existence of xf86Version.h. If your Xlib is not -installed under /usr/X11R6 or /usr/lib, you'll need to specify the path -(dir) by <i>--with-xlib=dir</i>. Let's see -what we get from configure: - -</a></p><blockquote><pre><a name="xset">[jej@ayukawa linuxwacom]$./configure -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i686 - linux kernel - yes 2.4 - module versioning - yes -DONFIG_MODVERSIONS -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h - kernel source - yes /usr/src/linux - XFree86 - no - XSERVER64 - no - dlloader - no - XLib - yes /usr/X11R6 - TCL - yes /usr - TK - yes /usr - ncurses - yes - - BUILD OPTIONS: - wacom.o - no - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - no - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.so - no - wacom_drv.o - no ----------------------------------------- -</a></pre></blockquote> - -<p><a name="xset">As shown above, the build options indicate that libwacomcfg and xsetwacom -will be built. If not, then scroll back through the configuration to see -if there aren't any errors or warnings that would explain this. - -</a></p><p><a name="xset">Next, run <i>make</i>. The output will be stored in the linuxwacom -package's src/util and src/util/.libs directory. They will be installed by running -<i>make install</i> (you need to switch to superuser to run this command). - -</a></p><p><a name="xset">If wacom_drv.(s)o was running while installing xsetwacom, xsetwacom can be -launched immediately after <i>make install</i> and <i>exit</i>. - -</a></p><p><a name="xset">If wacom_drv.o is installed by the same <i>make install</i> as xsetwacom -is, restarting X server is required to use the newly built wacom_drv.(s)o. We -strongly recommand to build and install wacom_drv.(s)o and xsetwacom from -the same release package since the out of sync wacom_drv.(s)o and xsetwacom -may crash your X server. -</a><a name="cpl"> -</a></p><h2><a name="cpl">13.3 - Building wacomcpl</a></h2> - -<p><a name="cpl">wacomcpl is written in tcl/tk. It uses libwacomxi.so and xsetwacom to -communicate with Wacom XFree86/Xorg driver, wacom_drv.(s)o. So, to run -wacomcpl, tcl/tk should be installed, libwacomxi.so and xsetwacom should -be built and installed. - -</a></p><p><a name="cpl">libwacomxi.so and xsetwacom are enabled by -default in the configure script. By default, the script will assume -that tcl/tk is installed under /usr. That is, tcl.h and tk.h should be -under /usr/include; libtcl.so.0 and libtk.so.0 should be under -/usr/lib. Let's see what we get from configure: -</a></p><blockquote><pre><a name="cpl">[jej@ayukawa linuxwacom]$./configure -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i686 - linux kernel - yes 2.4 - module versioning - yes - kernel source - yes /usr/src/linux - XFree86 - no - XLib - yes /usr/X11R6 - TCL - yes /usr - TK - yes /usr - ncurses - yes - - BUILD OPTIONS: - wacom.o - no - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - no - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.o - no ----------------------------------------- -</a></pre></blockquote> - -<p><a name="cpl">As shown above, the build options indicate that libwacomxi and xsetwacom -will be built. If not, then scroll back through the configuration to see -if there aren't any errors or warnings that would explain this. - -</a></p><p><a name="cpl">For example, on another system, I have installed tcl/tk under /usr/local/ActiveTcl. -That is, tcl.h and tk.h are under /usr/local/ActiveTcl/include. If I run configure -without options, I get: - -</a></p><blockquote><pre><a name="cpl">[jej@ayukawa linuxwacom]$./configure -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i686 - linux kernel - yes 2.4 - module versioning - yes - kernel source - yes /usr/src/linux - XFree86 - no - XLib - yes /usr/X11R6 - TCL - no - TK - no - ncurses - yes - GTK - 2.0.6 - - BUILD OPTIONS: - wacom.o - no - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - no - xsetwacom - yes - hid.o - no - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.o - no ----------------------------------------- -</a></pre></blockquote> - -<p><a name="cpl">The build options show that libwacomxi will not be built. When I scroll -back through the configuration, I see: - -</a></p><blockquote><pre><a name="cpl">... -checking for tcl header files... not found; tried /usr/include/tcl.h -*** -*** WARNING: -*** The tcl development environment does not appear to -*** be installed. The header file tcl.h does not appear -*** in the include path. Do you have the tcl rpm or -*** equivalent package properly installed? Some build -*** features will be unavailable. -*** -checking for tk header files... not found; tried /usr/include/tk.h and /include/tk.h -*** -*** WARNING: -*** The tk development environment does not appear to -*** be installed. The header file tk.h does not appear -*** in the include path. Do you have the tk rpm or -*** equivalent package properly installed? Some build -*** features will be unavailable. -*** -checking ncurses.h usability... yes -checking ncurses.h presence... yes -checking for ncurses.h... yes -*** -*** WARNING: -*** libwacomxi requires tcl environment; libwacomxi will not be built. -*** -... -</a></pre></blockquote> - -<p><a name="cpl">Then I run configure with option --with-tcl=/usr/local/ActiveTcl: - -</a></p><blockquote><pre><a name="cpl">[jej@ayukawa linuxwacom]$./configure --with-tcl=/usr/local/ActiveTcl -... ----------------------------------------- - BUILD ENVIRONMENT: - architecture - i686 - linux kernel - yes 2.4 - module versioning - yes - kernel source - yes /usr/src/linux - XFree86 - no - XLib - yes /usr/X11R6 - TCL - yes /usr/local/ActiveTcl - TK - yes /usr/local/ActiveTcl - ncurses - yes - - BUILD OPTIONS: - wacom.o - no - wacdump - yes - xidump - yes - libwacomcfg - yes - libwacomxi - yes - xsetwacom - yes - hid.o - no - usbmouse.o - no - evdev.o - no - mousedev.o - no - input.o - no - tabletdev.o - no - wacom_drv.o - no ----------------------------------------- -</a></pre></blockquote> - -<p><a name="cpl"><b>Note:</b> You may need to issue the following commands before running wacomcpl: - -</a></p><blockquote><pre><a name="cpl">[jej@ayukawa linuxwacom]$export LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH -[jej@ayukawa linuxwacom]$su -[jej@ayukawa linuxwacom]#cd /usr/local/ActiveTcl/lib -[jej@ayukawa lib]#ln -s libtcl.8.4.so libtcl.so.0 -[jej@ayukawa lib]#ln -s libtk.8.4.so libtk.so.0 -</a></pre></blockquote> - -<p><a name="cpl">If your tcl and tk are installed on different paths, you'll need to -specify them separately. Suppose that your tcl is under /usr/local/tcl8.4 -and your tk is under /usr/local/tk8.4, the proper configuration and setup -commands will be: - -</a></p><blockquote><pre><a name="cpl">[jej@ayukawa linuxwacom]$./configure --with-tcl=/usr/local/tcl8.4 --with-tk=/usr/local/tk8.4 -[jej@ayukawa linuxwacom]$export LD_LIBRARY_PATH=/usr/local/tcl8.4/lib:/usr/local/tk8.4/lib:$LD_LIBRARY_PATH -[jej@ayukawa linuxwacom]$su -[jej@ayukawa linuxwacom]#cd /usr/local/tcl8.4/lib -[jej@ayukawa lib]#ln -s libtcl.8.4.so libtcl.so.0 -[jej@ayukawa lib]#cd /usr/local/tk8.4/lib -[jej@ayukawa lib]#ln -s libtk.8.4.so libtk.so.0 -</a></pre></blockquote> - -<p><a name="cpl">Next, run <i>make</i>. The output will be stored in the linuxwacom -package's src/wacomxi and src/wacomxi/.libs directories. They will be -installed by running <i>make install (you need to switch to superuser -to run this command)</i>. -</a><a name="builddrv"> -</a></p><h2><a name="builddrv">13.4 - Building wacom_drv.o from Scratch</a></h2> -<h3><a name="builddrv">Introduction</a></h3> - -<p><a name="builddrv">I should tell you out-right that this is a time consuming process. - -</a></p><p><a name="builddrv">Why would you want to do this? Two reasons. One, you are a developer -and need to make changes to the source code directly. Two, your distribution -uses c libraries or configuration options that are not compatible with the -wacom_drv.o file that I provide. People running libc5 for instance, would -need to build their own driver. - -</a></p><blockquote><div class="diff"> -<a name="builddrv">Timothy Klein has submitted a brief howto for compiling on Debian Stable -which is still running XFree86 4.1 as of this writing. It covers steps -one through four of this document, and a savvy developer should be able -to figure out step five on his own. If someone solves step five and -generates a patch to Makefile.am, I'll see what I can do about getting -it into the configuration script. That document is on the </a><a href="#debwcmdrv">Installing wacom driver On Debian</a> page. -</div></blockquote> - -<p>You will need the X source code to rebuild the wacom_drv.o driver. -The build configuration for X generates a number of header files that are -necessary but not installed by default on most distributions. Consequently, -you will need to not only get the source, but build it, practically in its -entirety. Then, after all that, the configure script can be instructed to -hook into the X build tree and rebuild wacom_drv.o at any time without -having to rebuild X again. - -</p><p>Since I am running Redhat 8.0 and cannot really pull down the original -XFree86 4.2.0 source code, compile it, and expect it to work on my -system, I need to instead use the source RPM provided by Redhat. If you -choose to go this route, I provide pretty detailed instructions for making -this work. If your distribution works differently, or you are using Gentoo -where most everything is source code by default, you'll need to handle this -as best as possible according to your particular situation. - -</p><p></p><h3>Step One: Get The Source</h3> - -<p>On Redhat 8.0, I discovered the version number for my currently installed -XFree86 packages by running <i>rpm -q XFree86</i>. This reported version -4.2.0-72, therefore the source package is XFree86-4.2.0-72.src.rpm. -I downloaded the package from Redhat directly and installed it to the system -as follows: - -</p><blockquote><pre>[root@sen src]# rpm -ivh XFree86-4.2.0-72.src.rpm - 1:XFree86 ########################################### [100%] -</pre></blockquote> - -<p>This installs a number of files to the /usr/src/redhat directory, -particularly in the SOURCES and SPECS subdirectories. Other distributions -undoubtedly install elsewhere. Look for the XFree86.spec file which should -be located in the SPECS directory. This file contains all the information -necessary to patch the orginal XFree86-4.2.0 source code to the level that -Redhat is distributing in their regular binary package. The source code -and patch files are located in SOURCES. - -</p><h3>Step Two: Build the Source</h3> - -<p>This step describes how to build the source from the RPM itself. If -you are building from some other mechanism, I honestly cannot offer much -assistance since I generally don't build my X system from scratch. -If you'd like to write up a short section on building the -server for your particular distribution, I would be happy to include it here. - -</p><p>Next, you don't actually have to build the entire thing. The -point at which the xf86Wacom.c driver can be built however, -is not until somewhere in the middle of the build process. The driver -depends on a number of header files that are created dynamically so until -they are generated, wacom_drv.o cannot be compiled. My solution -was to open a separate terminal in the wacom driver directory and -periodically attempt to build it. When it successfully built, I stopped -the X build process. Here's how to build the source for an RPM that's -been exploded out into the SPECS and SOURCES directories. - -</p><blockquote><pre>[root@sen root]# cd /usr/src/redhat -[root@sen redhat]# rpmbuild -bc SPECS/XFree86.spec -</pre></blockquote> - -<p>Not every distribution has <i>rpmbuild</i>; try using just <i>rpm</i> -instead. At some point, Redhat split the build functionality into separate -programs. If after looking through the <i>rpm</i> man page, you still -cannot get this to work, send me some email, and I'll look into it. - -</p><p>The important item is the "-bc" option of <i>rpmbuild</i> which unpacks, -patches, and builds the source without actually installing. While it is also -possible to simply unpack and patch using the "-bp" option, there does not -seem to be a way to just build. The "-bc" option simply deletes all the -files provided by "-bp" and recreates them again. The downside of this is -that if you wanted to simply unpack, patch, and then copy the new xf86Wacom.c -file over the old one, you'll find that the build step deletes it and starts -over again. I have gotten this to work by creating a new patch file, but -this requires a bit more effort, so I don't recommend it right off. - -</p><h3>Step Three: Build the Original Driver</h3> - -<p>The xf86Wacom.c file is buried pretty deep in the X build tree. If it -is in a different location than the one I have provided below, try using -<i>find . -name xf86Wacom.c</i> from the BUILD directory. - -</p><blockquote><pre>[root@sen redhat]# cd BUILD/XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/input/wacom -[root@sen wacom]# ls -Imakefile wacom.man xf86Wacom.c.Wacom-USB-driver-a25-update -Makefile xf86Wacom.c -</pre></blockquote> - -The "a25-update" file is the original xf86Wacom.c file before Redhat's patch. -If you open xf86Wacom.c, you'll find that it is version 25, at least as -of this writing and this distribution. The presence of the Makefile means -that the configuration has at least been run for this directory. If you -have built a sufficient portion of the X source files, then all the header -files that you need have been generated, and you can build xf86Wacom.c. Try -it, and if it does not build, wait a bit. The absence of xf86Version.h -for instance, is a good indication that the build process is not ready. - -<blockquote><pre>[root@sen wacom]# make -rm -f xf86Wacom.o -gcc -O2 -march=i386 ... -c xf86Wacom.c -ld -r xf86Wacom.o -o wacom_drv.o -</pre></blockquote> - -<h3> Step Four: Automating the Build Process</h3> - -<p>By configuring the package with the --with-xf86 option set to the XFree86 -build tree, you can build the driver outside of the X build tree. -</p><blockquote><pre>[jej@ayukawa wacom]$ ./configure \ - --with-xf86=/usr/src/redhat/BUILD/XFree86-4.2.0 -... -BUILD ENVIRONMENT: - XFree86 - yes - BUILD OPTIONS: - wacom_drv.o - yes -[jej@ayukawa wacom]$ make -</pre></blockquote> - -<p>The makefile rule which builds the driver is contained within src/Makefile.am -and is modified according to the configuration to generate a rule similar to -this in src/Makefile: - -</p><blockquote><pre>xf86Wacom.o: xf86Wacom.c - gcc -O2 -march=i386 -mcpu=$(ARCHITECTURE) -pipe -ansi \ - -pedantic -Wall -Wpointer-arith -fno-merge-constants \ - -I. -I$(XF86_DIR)/programs/Xserver/hw/xfree86/common \ - -I$(XF86_DIR)/programs/Xserver/hw/xfree86/loader \ - -I$(XF86_DIR)/programs/Xserver/hw/xfree86/os-support \ - -I$(XF86_DIR)/programs/Xserver/include \ - -I$(XF86_DIR)/programs/Xserver/mi \ - -I$(XF86_DIR)/exports/include/X11 \ - -I$(XF86_DIR)/include/extensions \ - -I$(XF86_DIR) \ - -I$(XF86_DIR)/exports/include \ - -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE \ - -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE \ - -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ - -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV -DPANORAMIX \ - -DRENDER -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV \ - -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \ - -DXFree86Server -DXF86VIDMODE -DXvMCExtension \ - -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ - -DX_BYTE_ORDER=X_LITTLE_ENDIAN -DNDEBUG -DFUNCPROTO=15 \ - -DNARROWPROTO -DIN_MODULE -DXFree86Module -DLINUX_INPUT \ - -o xf86Wacom.o -c xf86Wacom.c -</pre></blockquote> - -<blockquote><div class="diff">similar rules applie to wcmSerial.c, wcmUSB.c, -wcmISDV4.c, wcmCommon.c, wcmCompat.c, wcmConfig.c, and, wcmFilter.c. -</div></blockquote> - -<p>The options and directories specified come directly from the output of the -make command in the previous step. All the root and parent directories have -been replaced with the macro XF86_DIR which in this case is set by the -configuration script to /usr/src/redhat/BUILD/XFree86-4.2.0/xc. If the -options that you see in your build are identical to those above, then the -default rule will work for you now. If not, you'll need to make some -alterations. You can update the Makefile.am file and rerun automake, -update the Makefile.in and rerun configure, or just update the Makefile -directly. - -</p><p>So long as the X build tree exists, the include directories will point to -the correct locations, and the driver will build. If space is an issue, you -can probably remove all the non-essential directories, but be careful; the -dependency tree in X is huge. - -<a name="debwcmdrv"> -</a></p><h2><a name="debwcmdrv">13.5 - Installing wacom driver On Debian</a></h2> -<a name="debwcmdrv">The following documentation for building wacom driver on Debian was -written by Olivier Lecarme. You can also refer to Olivier's page -</a><a href="http://www.i3s.unice.fr/%7Eol/success.html">here</a> for updates. - -<br><br><br><br> - -Copyright (C) June 14, 2005 Olivier Lecarme. <br><br> - -<pre>I'm using the Sid version of Debian, but I was told that the Sarge -distribution, recently become the stable one, already contains what -is necessary. Version 2.6.11 of the kernel is the highly preferred -one by people maintaining the Linux Wacom software. - -<b>Download the 2.6.11 kernel</b> - -I was completely unsuccessful when trying to configure and compile -my own kernel: certainly I omitted some capital module, but I could -not decide what it was. Thus, I chose the last pre-compiled kernel. - - 1. apt-get kernel-image-2.6.11-1-686 - - 2. apt-get kernel-headers-2.6.11-1-686 - -If you use Lilo, configure your /etc/lilo.conf file, taking into -account that this kernel needs an initrd= line. - -<b>Optionally</b> - -If your case is irrelevant, please skip this section and the following one. - - 1. I Have a Broadcom NetXtreme BCM5751 Ethernet card, which needs -the tigon3 driver, unavailable in Debian kernel 2.6.11. The solution is here. - - Thus I got the package: - - 1. cd /usr/src - 2. wget http://www.acm.rpi.edu/~dilinger/kernel-source-nonfree-2.6.11 -/kernel-nonfree-modules-2.6.11-1-686-2.6.11-1_i386.deb - - 2. I have an ATI X 300 video card, whose driver is not available -in Debian kernel 2.6.11. The solution is here. - - Thus I got the packages: - - 1. for the driver: wget http://www.stanchina.net/~flavio/ -debian-fglrx-xfree86/fglrx-driver_8.12.10-1_i386.deb - 2. and for the kernel module: wget http://www.stanchina.net/~flavio -/debian-fglrx-modules/fglrx-kernel-2.6.11-1-686-smp_8.12.10-1+2.6.11-2_i386.deb - -<b>Install the optional packages</b> - - 1. cd /usr/src - - 2. dpkg -i kernel-nonfree-modules-2.6.11-1-686_2.6.11-1_i386.deb - - 3. dpkg -i fglrx-driver_8.12.10-1_i386.deb - - 4. dpkg -i fglrx-kernel-2.6.11-1-686_8.12.10-1+2.6.11-2_i386.deb - -<b>Install the wacom tools package</b> - - 1. apt-get install wacom-tools - - 2. dpkg-reconfigure wacom-kernel-source - - Since your debconf configuration probably did not ask for the lowest -priority questions, this step is needed. You might also use it later if you -update your kernel, for instance. - - When asked whether you want to build the modules, answer yes, and tell -where the headers are located (normally /usr/src/kernel-headers-2.6.11-1-686). - -<b>Prepare for the /dev/input/wacom link</b> - -In /etc/udev/rules.d/10-wacom.rules, add the following line: - -KERNEL="event*", SYSFS{idVendor}="056a", NAME="input/%k", SYMLINK="input/wacom%e" - -Thus the drivers will find the Wacom tablet, whatever its /dev/input/eventX address is. - -<b>Change your XF86Config-4 file</b> - -The important sections are: - - 1. The ServerLayout section: - -Section "ServerLayout" - [ ... ] - InputDevice "stylus" "SendCoreEvents" - InputDevice "eraser" "SendCoreEvents" - InputDevice "cursor" "SendCoreEvents" - InputDevice "pad" -EndSection - - 2. The InputDevice sections: - -Section "InputDevice" - Identifier "stylus" - Driver "wacom" - Option "Type" "stylus" - Option "USB" "on" - Option "Threshold" "10" - Option "Device" "/dev/input/wacom" -EndSection - -Section "InputDevice" - Identifier "eraser" - Driver "wacom" - Option "Type" "eraser" - Option "USB" "on" - Option "Threshold" "10" - Option "Device" "/dev/input/wacom" -EndSection - -Section "InputDevice" - Identifier "cursor" - Driver "wacom" - Option "Type" "cursor" - Option "USB" "on" - Option "Threshold" "10" - Option "Device" "/dev/input/wacom" -EndSection - -Section "InputDevice" - Identifier "pad" - Driver "wacom" - Option "Device" "/dev/input/wacom" - Option "Type" "pad" - Option "USB" "on" -EndSection - - 3. The section dealing with your normal mouse must be considered too. See <a href="#mouse1">Mouse1 (for some 2.6 systems)</a>. -I didn't use /dev/psaux nor /dev/input/mice. /dev/input/mouse0 works for a PS/2 -mouse. For a USB mouse, there is a problem mentioned in the <b>Remaining problems</b>. - - 4. If you use the ATI X300 card, you need to change also the Device section: - -Section "Device" - Identifier "ATI" - Driver "fglrx" - Option "VideoOverlay" "on" - Option "OpenGLOverlay" "off" - Option "UseInternalAGPGART" "no" -EndSection - -<b>Final steps</b> - - 1. Reboot. This will also restart the X server, of course. - 2. Enjoy! - -<b>If you want to use the expresskeys of your Intuos tablet</b> - -If you do nothing more, the pad is not usable at all. However, you will find <a href="http://web.telia.com/%7Eu46133770/wacom/index.html">here</a> a specific -tool for having the pad available in various programs, for example XTerm, Gimp, or Blender. - -This tool is very easy to compile, install, and use. If you want to use the pad -in Gimp, do <b>not</b> enable it in "Preferences -> Input Devices -> Configure -the extended input devices", contrarily to the three other tools (stylus, eraser, -and cursor). You can easily configure what the expresskeys send, according to -your tastes, and use only them for the tasks that need a good control of the -stylus or eraser. - -<b>Remaining problems</b> - -If your tablet is always plugged, everything works perfectly. If you want to plug -it out, for example in order to move it onto another computer, and then to plug -it back later, problems begin. - -For the present, you must take care of the following things: - - 1. If you plug in the tablet again, the corresponding driver is not informed -of this, thus you must restart the X server. - - 2. If the tablet is plugged when you reboot, and you have an USB mouse, maybe -the /dev/input address of this mouse is not the same as the previous time. Thus -you will have to change this in your XF86Config-4 file. - - 3. If you use GDM or KDM or XDM, you should plug in the tablet after rebooting, -but before the X server starts, which is somewhat difficult! Thus you will be forced -to restart the X server, i.e. kill it (Ctrl+Alt+Backspace) and not simply logging out. - -<b>Final remarks</b> - - I would like to thank all persons who helped me, on the LinuxWacom or the -Gimp-user discussion lists, especially Carol Spears, Karine Delvare, Ping Cheng, and Ron. - -</pre> -<a name="ppcwcmdrv"> -</a><h2><a name="ppcwcmdrv">13.6 - Building wacom driver On PowerMac</a></h2> -<a name="ppcwcmdrv">The following documentation for building wacom driver on PowerMac [silver] -was written by Joseph E. Sacco. If you have any problems or questions, -go ahead and post them to the list, or send email to me directly. I'll -forward your email on to Joseph. - -<br><br><br><br> - -Copyright (C) 2004 Joseph E. Sacco<br><br> - -</a><pre><a name="ppcwcmdrv">System: - -<< Hardware >> -* PowerMac [silver] with dual 533 MHz G4 [7410] CPU's, 1GB RAM, - (3) 73 GB SCSI drives -* Contour UniMouse [USB, optical, three button] -* Wacom Intuos Tablet [USB]: GD-1218-U - * 4-d mouse - * pen - * air brush - -<< Software >> -* Yellow Dog Linux 3.0.1 [Redhat variant for PPC] -* kernel: 2.4.25-ben1 -* linuxwacom-0.6.1 - -* XFree86-4.3.0-2.1e -* atk-1.6.0-1 -* freetype-2.1.3-4 -* gcc-3.3 -* gtk+-2.4.0 -* glib2-2.4.0 -* ncurses-5.2-28 -* pango-1.4.0 - -============================================================ - -I have a Wacom Intuos tablet "working" [after a fashion] on a PPC -running Yellow Dog Linux 3.0.1. - -<< What works >> -* input devices: - * cursor movement - * button clicks - * wheel rotation [as seen from wacdump] - * pressure [as seen from wacdump & gimp] - * tilt [as seen from wacdump] - -* applications: - * wacdump - * xidump - * xev - * xinput-1.2 - * gimp-1.25 & gimp-2.0 - * dia-0.9.2 - -< What does *not* work >> -* input devices: - * Mode "Relative" for pen & air brush [should it???] - -* applications: - * xsetwacom - * wacomcpl [because of xsetwacom] - -There are some issues I would like to report. ----------------------------------------------------------------------------------------------------------------------------------------- - -* Makefiles -The makefiles are set up for Intel architecture. Some options are not -applicable for PPC's. - -[ from ./src/2.4.22/Makefile.in ] -KCFLAGS = -Wall $(DEBUG_FLAGS) -D__KERNEL__ \ - -DMODULE -DEXPORT_SYMTAB $(MODS) \ - -Wstrict-prototypes -Wno-trigraphs -O2 \ - -fno-strict-aliasing \ - -fno-common -fomit-frame-pointer -pipe \ - ===> -mpreferred-stack-boundary=2 \ - ===> -march=$(ARCHITECTURE) - -The last two options are not applicable to a PPC. - -A more appropriate set of flags, taken from building the 2.4.25 kernel -modules, might be: - -KCFLAGS = -Wall $(DEBUG_FLAGS) -D__KERNEL__ \ - -Wstrict-prototypes -Wno-trigraphs -O2 \ - -fno-strict-aliasing -fno-common -fomit-frame-pointer \ - -fsigned-char -msoft-float -pipe -ffixed-r2 \ - -Wno-uninitialized -mmultiple -mstring \ - -DMODULE -DMODVERSIONS -iwithprefix - -[ from ./src/Makefile.in ] -$(XF86OBJS): xf86Wacom.c Makefile - ==> gcc -O2 $(DEPFLAGS) -march=i386 -mcpu=$(ARCHITECTURE) -pipe -ansi \ - -pedantic -Wall -Wpointer-arith $(NO_MERGE_CONSTANTS) \ - -I. -I$(XF86_DIR)/programs/Xserver/hw/xfree86/common \ - -I$(XF86_DIR)/programs/Xserver/hw/xfree86/loader \ - -I$(XF86_DIR)/programs/Xserver/hw/xfree86/os-support \ - -I$(XF86_DIR)/programs/Xserver/include \ - -I$(XF86_DIR)/programs/Xserver/mi \ - -I$(XF86_DIR)/exports/include/X11 \ - -I$(XF86_DIR)/include/extensions \ - -I$(XF86_DIR) \ - -I$(XF86_DIR)/exports/include \ -==> -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE \ - -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE \ - -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ - -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV -DPANORAMIX \ - -DRENDER -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV \ - -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \ - -DXFree86Server -DXF86VIDMODE -DXvMCExtension \ - -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ - -DX_BYTE_ORDER=X_LITTLE_ENDIAN -DNDEBUG -DFUNCPROTO=15 \ - -DNARROWPROTO -DIN_MODULE -DXFree86Module $(LINUX_INPUT) \ - -o $@ -c $(subst .o,.c,$@) - -A more appropriate set of flags, taken from building XFree86-4.3.0, might be: - -$(XF86OBJS): xf86Wacom.c Makefile - gcc -O2 $(DEPFLAGS) -mcpu=$(ARCHITECTURE) -pipe -ansi \ - -pedantic -Wall -Wpointer-arith $(NO_MERGE_CONSTANTS) \ - -I. -I$(XF86_DIR)/programs/Xserver/hw/xfree86/common \ - -I$(XF86_DIR)/programs/Xserver/hw/xfree86/loader \ - -I$(XF86_DIR)/programs/Xserver/hw/xfree86/os-support \ - -I$(XF86_DIR)/programs/Xserver/include \ - -I$(XF86_DIR)/programs/Xserver/mi \ - -I$(XF86_DIR)/exports/include/X11 \ - -I$(XF86_DIR)/include/extensions \ - -I$(XF86_DIR) \ - -I$(XF86_DIR)/exports/include \ - -Dlinux -D__powerpc__ -D_POSIX_C_SOURCE=199309L \ - -D_POSIX_SOURCE \ - -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE \ - -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ - -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV -DPANORAMIX \ - -DRENDER -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV \ - -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \ - -DXFree86Server -DXF86VIDMODE -DXvMCExtension \ - -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ - -DX_BYTE_ORDER=X_BIG_ENDIAN -DNDEBUG -DFUNCPROTO=15 \ - -DNARROWPROTO -DIN_MODULE -DXFree86Module $(LINUX_INPUT) \ - -o $@ -c $(subst .o,.c,$@) - -where $(ARCHITECTURE) = powerppc [ppc will not work] - -* Kernel modules -I experimented with different ways of building [and loading] the kernel -modules: - * evdev.o - * hid.o - * mousedev.o - * wacom.o - -I settled on building the modules within the existing framework for building -the Linux kernel rather than using the makefiles provided by linuxwacom-0.6.1. -I did so to insure that I got all the PPC dependency stuff right. - -* Hotplug kernel module issues -I had some issues using 'modprobe' to load the wacom kernel module that forced -me to reconfigure and rebuild the 2.4.25-ben1 kernel. - -A typical YDL kernel build for a PowerMac statically links most of the input -core support into the kernel: - - [from .config file provided by YDL] - # Input core support - # - CONFIG_INPUT=y - CONFIG_INPUT_KEYBDEV=y - CONFIG_INPUT_MOUSEDEV=y - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 - CONFIG_INPUT_JOYDEV=m - CONFIG_INPUT_EVDEV=y - -I had initially built only wacom.o as a loadable module. The other modules -were statically linked into the kernel. - -When wacom.o was loaded using: - - $ /sbin/insmod wacom.o - -all went well: - -[output from /var/log/messages] - -Mar 24 10:26:33 plantain kernel: usb.c: registered new driver wacom -Mar 24 10:26:33 plantain kernel: Reporting max 45720, 31680 -Mar 24 10:26:33 plantain kernel: wacom.c: Setting tablet report for tabletdata -Mar 24 10:26:33 plantain kernel: input4: Wacom Intuos 12x18 on usb2:3.0 -Mar 24 10:26:33 plantain kernel: wacom.c: v1.30-j0.6.1 Vojtech Pavlik -<vojtech@suse.cz> -Mar 24 10:26:33 plantain kernel: wacom.c: USB Wacom Graphire and Wacom Intuos -tablet driver (LINUXWACOM-DEBUG) -Mar 24 10:26:33 plantain kernel: wacom_events - -When wacom.o was loaded using: - - $ /sbin/modprobe wacom - -the module failed to load: - - $ /sbin/rmmod wacom - $ /sbin/modprobe wacom - modprobe: Can't locate module evdev which is needed for wacom - -I was perplexed about this failure because "evdev" was statically linked into -the kernel. I puzzled over this for a while and concluded that it had -something to do with how USB hotplug was configured. - -I arrived at this conclusion by unplugging the tablet, waiting, and then -plugging it back in. I found that the tablet "worked" but there are complaints -in /var/log/messages: - -Mar 24 10:34:51 plantain kernel: usb.c: USB disconnect on device 10:19.0-1 -address 3 - -Mar 24 10:35:53 plantain kernel: hub.c: new USB device 10:19.0-1, assigned -address 4 -Mar 24 10:35:53 plantain kernel: Reporting max 45720, 31680 -Mar 24 10:35:53 plantain kernel: wacom.c: Setting tablet report for tablet -data -Mar 24 10:35:53 plantain kernel: input4: Wacom Intuos 12x18 on usb2:4.0 -Mar 24 10:35:53 plantain kernel: wacom_intuos_irq: tool change 0x094 -Mar 24 10:35:56 plantain /etc/hotplug/usb.agent: Setup wacom for USB product -56a/24/101 -Mar 24 10:35:56 plantain /etc/hotplug/usb.agent: Setup evdev mousedev for USB -product 56a/24/101 -Mar 24 10:35:56 plantain modprobe: modprobe: Can't locate module evdev -Mar 24 10:35:56 plantain modprobe: modprobe: Can't locate module mousedev - -I really don't understand how the USB hotplug mechanisms are supposed to be -configured. Yes... I did look at the scripts in /etc/hotplug. Yes.. I did -attempt a few unsucessful modifications to usb.handmap and usb.distmap. I -pondered over this for a while and then decided on a work-around: - -I reconfigured and rebuilt the kernel to dynamically load - * evdev.o - * hid.o - * mousedev.o - * wacom.o - -which "eliminated" the problem. - -If someone out there knows what should have been done to allow modprobe to -successfully load wacom when evdev and friends are already statically linked -into the kernel, please send me email. - -* XFree86 module: wacom_drv.o -I rebuilt wacom_drv.o using the linuxwacom-0.6.1 makefile and the flags listed -above. The build was uneventful. - -* Mouse1 -I do not have a Mouse1 entry in XF86Config. I mention this because there is an -obscure reference in the documentation to potential mouse conflict problems -when running a USB Wacom mouse on a system with a USB mouse. The USB mouse -connected to the system and the Wacom input devices all seem to work. - -On my system: - - /dev/mouse is a link to /dev/input/mice - -Mouse0 is configured in XF86Config as: - -Section "InputDevice" - Identifier "Mouse0" - Driver "mouse" - Option "ZAxisMapping" "4 5" - Option "Protocol" "IMPS/2" - Option "Device" "/dev/input/mice" -EndSection - -Maybe something nasty is going on that I don't know about. Thoughts??? - -* xsetwacom -There are problems... - -The 'list' command prints stuff: - -$ xsetwacom list -eraser eraser -stylus stylus -cursor cursor - -The set command fails: - -$ xsetwacom -v set stylus FileModel -Set: sending 100 0 (0x0) -Error (5): WacomConfigSetRawParam: Unknown X error -Set: Failed to set stylus value for 'FileModel' - -Looking at the code, I see that it is failing in a call to -XChangeDeviceControl() made from WacomConfigSetRawParam(). I also poked -around in this one with GDB. The X-Display gets opened properly. Things look -OK until the request is dispatched, which then returns an unknown X error. - -I also tried to use xsetwacom to toggle the cursor mode between relative and -absolute. Again the command fails with an unkown X error. Note that the -XFree86 command 'xsetmode' works fine. - --Joseph -</vojtech@suse.cz></a></pre> -<a name="debwacomnosrc"> -</a><h2><a name="debwacomnosrc">13.7 - Building wacom driver On Fedora Core 3</a></h2> -<a name="debwacomnosrc">The following documentation for building wacom kernel modules and x.org -driver on Fedora Core 3 was written by Paul Duffy. If you have any problems -or questions, go ahead and post them to the list, or send email to me directly. -If I cannot provide a satisfactory answer, I'll forward your email on to Paul. - -<br><br><br><br> - -Copyright (C) 2005 Paul Duffy<br><br> - -</a><pre><a name="debwacomnosrc">Procedure for building linuxwacom package on Fedora Core 3 with 2.6 series -kernel. These instructions are current as of May 23, 2005. -There are several reasons why FC3 is different. The two main reasons -being: - -- evdev, hid-core and mousedev are compiled into the kernel core so you can't -just recompile them as modules. - -- the Fedora Core kernel is heavily patched, which I don't mind as it means my -Creative Live! Drive II works, but it does mean that compiling the kernel -from www.kernel.org may lose you some hardware support. - -Additionally, Red Hat no longer supply a simple linux-source rpm so if you -want the official kernel source for Fedora Core 3 you're going to have to use -the source RPM. - -At this stage, I am assuming that you have a fully updated system and are -using kernel 2.6.11-1.14_FC3 - -<b>What you will need:</b> - -At this stage you're going to need all of the development packages required to -compile the kernel (gcc, automake, etc) and the xorg-x11-sdk package -installed (under Development >> X Software Development). If you're unsure -where this all is, you can select the hat menu in KDE or Gnome and you want -to select System Settings >> Add/Remove Applications. - -If you're unsure as to exactly what you need to install, install everything -(except gcc-java, it causes problems with Sun or IBM java installs) assuming -you have the hard drive space. - -Also the vast majority of this will require you to be in SuperUser mode so you -might as well 'su' from the start; not normally advice I'd be giving anyone -but it's kinda necessary in this case. - -You have two choices for the first step; you can either download the kernel -SRPM from one of the mirrors at -http://fedora.redhat.com/download/mirrors.html where you can find the correct -package as updates/3/SRPMS/kernel-2.6.11-1.14_FC3.src.rpm and install it -with - -rpm -ivh kernel-2.6.11-1.14_FC3.src.rpm - -or you can use - -up2date --get-source kernel - -Either method should leave you with a lot of files in /usr/src/redhat/SOURCES -and the file /usr/src/redhat/SPECS/kernel-2.6.spec -At this stage, don't worry about all the files starting linux-2.6.9... the -main file you are looking for is linux-2.6.11.tar.bz2. As long as that's -there you should be fine. - -Now, to actually get all the kernel sources setup in a compilable form you -need to run the command - -rpmbuild -bp --target=<arch> /usr/src/redhat/SPECS/kernel-2.6.spec - -If you don't know what <arch> is, run the command - -uname -m - -and it should tell you. -Of course, it should be noted at this point that if my architecture is i686 -and I select that, what will actually be installed is the source -configuration for i386 and above so if you're still not sure but you know you -can run Windows then --target=i386 is a safe default. - -After everything has been setup the rpmbuild will have applied all the -standard patches and setup a default configuration so the only reason to run -'make config', or 'make xconfig', is to change something from the default. - -Having said this, I like to run 'make xconfig' to alter the selected chip the -kernel is going to compile for as it defaults to compiling for i386 whereas -anyone with a reasonably recent chip (Athlon, Pentium III even) is going to -want something a bit more advanced. - -So, the first thing you want to do, if you want most add-on modules to find -the kernel source without adding a really long command-line parameter, is to -add a symbolic link to the source directory. - -cd /usr/src -ln -s redhat/BUILD/kernel-2.6.11/linux-2.6.11 linux - -So now everything can find the current kernel source in /usr/src/linux - -cd linux -make xconfig - -select 'Processor type and features' and change 'Processor family' from 386 to -whatever it is you're running. -If you make a mistake and you don't know what you've done you can always close -the program and select 'Discard changes' and start again. -Otherwise, click on the floppy disk icon to save and exit safe in the -knowledge that you're not compiling for a CPU that doesn't even have a -floating point unit. - -OK, so by now you should have the basic kernel source setup and available -in /usr/src/linux and, due to the setup of the default kernel, we can't just -recompile a few modules, we have to recompile the whole kernel. - -So at this stage, we're just about where we'd like to be if we wanted to -compile the kernel as it is, with no support for the Intuos3 or any of the -Cintix range but if you've got an AthlonXP or a Pentium 4 you might get a -little bit more performance out of it. - -We now want to be getting the latest linuxwacom-0.6.8.tar.bz2 You may want to -setup your own arrangement for wherever you want it but your home directory -should be fine and... - -tar jxvf linuxwacom-0.6.8.tar.bz2 -cd linuxwacom-0.6.8 - -...and you're in the source directory for the code that enables proper Wacom -support. - -Now we need to copy just four files, usbmouse.c has been deprecated in favour -of hid-core.c and can be safely ignored, also we don't need to do anything to -input.c. Now we copy all the necessary source files. - -cd src/2.6.11 -cp evdev.c mousedev.c /usr/src/linux/drivers/input/ -cp hid-core.c wacom.c /usr/src/linux/drivers/usb/input/ - -Now, with the manual patching done everything should work and, unless I've -somehow missed a stage, everything should compile just fine. - -cd /usr/src/linux -make all - -Now, this is going to take a while, especially if your system's a bit aold -like mine so now would be a good time to get some tea, coffee, go down the -corner shop or have lunch. - -Assuming there have been no errors, everything should now be compiled. - -make modules_install -make install - -You need to install the modules first or 'make install' will quit, complaining -about there being no '/lib/modules/2.6.11-prep' and sulk in the corner. - -After all this, there's still one last thing you need to do and that's make -this new kernel the default on boot. You will need to -edit /boot/grub/menu.lst and change the 'default' value from 1 to 0. - -Those of you with nVidia and other such graphics cards who like their 3D -acceleration will need to reinstall the drivers before X Windows will work. - -As it is, on reboot you will need to change the boot parameters. When Grub -comes up, press a to alter the boot parameters. It is advisable at this stage -to remove 'rhgb' as, one of the effects of running the Red Hat Graphical Boot -is that if you want a change in the xorg.conf file to take effect you have to -reboot the entire system and this just gets to be a PITA when you're trying -to configure something. Then add '3' (without quotes) to the end of the line -to make FC3 boot to the command line. - -Right, so by now we should have the kernel set up to recognise whatever tablet -you have properly. We can check this. - -cat /proc/bus/usb/devices - -should give you a readout of every device on your usb system and we're looking -for the line which includes Vendor=056a - -With my Intuos 3 I have ProdID 00b1, manufacturer is listed as 'Tablet' and -Product is listed as PTZ-630 although this may differ depending on which -tablet you have and what size it is. - -The most important line is the one beginning with I: which should end with -'Driver=wacom'. - -If this is that case, congratulations, your kernel is now fully set up to -recgonise your tablet :o) - -Now, to get it running with X Windows we need to update the wacom_drv driver -and this, in itself is going to be different as the configuration script will -not know where to find your x11 SDK and so will efuse to compile the driver. - -The xorg SDK in the case of FC3 is located in /usr/X11R6/lib/Server and we can -tell the configuration script this - -./configure --with-xorg-sdk=/usr/X11R6/lib/Server - -should do the trick and - -make install - -should compile and install the module in the appropriate place. - -After all this is done, now all you need to do is setup the configuration -in /etc/X11 xorg.conf - -The ServerLayout section is at the start of the configuration file and, as an -example, mine looks like this: - -Section "ServerLayout" - Identifier "Default Layout" - Screen 0 "Screen0" 0 0 - InputDevice "Mouse0" "CorePointer" - InputDevice "Keyboard0" "CoreKeyboard" - InputDevice "eraser" "SendCoreEvents" - InputDevice "stylus" "SendCoreEvents" -EndSection - -Where Mouse3 and Mouse5 are the identifiers for the pen and eraser. - -My InputDevice sections look like this: - -Section "InputDevice" - Identifier "eraser" - Driver "wacom" -# Option "TopX" "0" -# Option "TopY" "0" -# Option "BottomX" "1600" -# Option "BottomY" "1200" - Option "Device" "/dev/input/event3" - Option "Type" "eraser" - Option "USB" "On" -EndSection - -Section "InputDevice" - Identifier "stylus" - Driver "wacom" -# Option "TopX" "0" -# Option "TopY" "0" -# Option "BottomX" "1600" -# Option "BottomY" "1200" - Option "Device" "/dev/input/event3" - Option "Type" "stylus" - Option "USB" "On" -EndSection - -It's important to note, at this point, that the TopX/Y and BottomX/Y options -are not actually necessary unless you have problem with the detection of the -tablet as all the lpi information is included in the source code for the -wacom module so it's perfectly safe to leave these out if you don't know what -the values should be. - -Also note, that at this stage I still don't have /dev/input/wacom and the -tablet appears on /dev/input/event3 - -If you're unsure as to which device your tablet is using, then wacdump should -be able to find it. It is, to be honest, a bit trial and error but you'll -know when you've found it as the readout will look like this: - -wacdump v0.5.2 - -MODEL=Wacom Intuos3 6x8 ROM=1.0-2 -CLS=USB VNDR=Wacom DEV=Intuos3 SUB=PTZ-630 - - - - -TOOLTYPE=NONE IN_PROX=+00000 (+00000 .. +00000) - BUTTON=+00000 (+00000 .. +00000) POS_X=+00000 (+00000 .. +40640) - POS_Y=+00000 (+00000 .. +30480) ROT_Z=+00000 (-00900 .. +00899) -DISTANCE=+00000 (+00000 .. +00015) PRESSURE=+00000 (+00000 .. +01023) - TILT_X=+00000 (+00000 .. +00127) TILT_Y=+00000 (+00000 .. +00127) -ABSWHEEL=+00000 (+00000 .. +01023) RELWHEEL=+00000 (-00001 .. +00001) -THROTTLE=+00000 (-01023 .. +01023) - - LEFT= MIDDLE= RIGHT= EXTRA= - SIDE= TOUCH= STYLUS= STYLUS2= - - -Once you've setup all the configuration with the correct input device execute - -init 5; exit - -and you should find yourself in X with a fully working graphics tablet. -Instructions for configuring GIMP 2.2 are the same as in the official HowTo. - -Good luck. - -regards, Paul - -</arch></arch></a></pre> -<a name="susewacom"> -</a><h2><a name="susewacom">13.8 - Building wacom driver On Suse 9.2</a></h2> - -<a name="susewacom">Nico Kadel-Garcia has provided a changed SPEC file for SuSE 9.2. -You can download the spec </a><a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1117278&group_id=69596&atid=525124">here</a>. - -<pre> -"There are only a few needed changes: use the new -software, throw out an old patch, teach it to use the right -options for x86_64 compilation, and stop it from -generating symlinks into /usr/include/X11 at compilation -time, and it's done. ". Nico said on Mar 21 2005. - -</pre><a name="laptop"> -</a><h2><a name="laptop">13.9 - Laptop Suspend/Resume Tips</a></h2> -<a name="laptop">Thomas Netter (tnetter at iniDOTunizhDOTc) kindly provided a solution -to the following problem: - -</a><blockquote><pre><a name="laptop">When laptop recovers from suspend/resume, XFree86/X.org no longer -registers the tablet. The laptop, however, receives all the tablet data -(I can "cat /dev/input/event2" and see the data). - -The only way I know for X to recover the tablet is to restart X. -</a></pre></blockquote> - -<a name="laptop">The peoblem lies in the step that when unplugging tablet cable while the -laptop is entering Suspend Mode. The proper steps to plug/unplug, suspend/resume -a Wacom tablet on a laptop are: - -</a><blockquote><pre><a name="laptop">- Fold the laptop's screen -- Wait 4 or 5 seconds for the tablet's orange LED to extinguish -- Unplug the tablet's USB cable - -THEN you can recover the tablet functionalities after resuming the -laptop and repluging the tablet. - -However, If you: -- Fold the laptop's screen -- Immediately unplug the tablet's USB cable before the LED extinguishes - -THEN you cannot recover the tablet functionalities after resuming the -laptop and replugging the tablet, even if you replug the tablet before -resuming the laptop. - -Therefore, old airline operations apply: Extinguish LEDs before take-off! - --Thomas -</a></pre></blockquote> -<a name="lic"> -</a><h2><a name="lic">13.10 - GNU GENERAL PUBLIC LICENSE</a></h2> -<a name="lic"> GNU GENERAL PUBLIC LICENSE<br> - Version 2, June 1991<br> -<br> - Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br> - 675 Mass Ave, Cambridge, MA 02139, USA<br> - Everyone is permitted to copy and distribute verbatim copies<br> - of this license document, but changing it is not allowed.<br> -<br> - Preamble<br> -<br> - </a><p><a name="lic"> The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - -</a></p><p><a name="lic"> When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -</a></p><p><a name="lic"> To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -</a></p><p><a name="lic"> For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -</a></p><p><a name="lic"> We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -</a></p><p><a name="lic"> Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -</a></p><p><a name="lic"> Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -</a></p><p><a name="lic"> The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -</a></p><p><a name="lic"> 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -</a></p><p><a name="lic">Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -</a></p><p><a name="lic"> 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -</a></p><p><a name="lic">You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -</a></p><p><a name="lic"> 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -</a></p><p><a name="lic"> a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - -</a></p><p><a name="lic"> b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - -</a></p><p><a name="lic"> c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement. - -</a></p><p><a name="lic">These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -</a></p><p><a name="lic">Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -</a></p><p><a name="lic">In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -</a></p><p><a name="lic"> 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -</a></p><p><a name="lic"> a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - -</a></p><p><a name="lic"> b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - -</a></p><p><a name="lic"> c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -</a></p><p><a name="lic">The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -</a></p><p><a name="lic">If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -</a></p><p><a name="lic"> 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -</a></p><p><a name="lic"> 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -</a></p><p><a name="lic"> 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -</a></p><p><a name="lic"> 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -</a></p><p><a name="lic">If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -</a></p><p><a name="lic">It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -</a></p><p><a name="lic">This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -</a></p><p><a name="lic"> 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -</a></p><p><a name="lic"> 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -</a></p><p><a name="lic">Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -</a></p><p><a name="lic"> 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -</a></p><p><a name="lic"> 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -</a></p><p><a name="lic"> 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS -</a></p></td></tr></tbody></table></center> - -<br><br> - -<div class="copy" align="center"> - Copyright (C) 2002-2009 - LinuxWacom -Last updated April 29, 2009<br> - This website and its contents are licensed under the GNU GENERAL PUBLIC LICENSE.<br> -</div> -</body></html>
\ No newline at end of file |