summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpingc <pingc>2009-08-28 23:23:42 +0000
committerpingc <pingc>2009-08-28 23:23:42 +0000
commit9039487aba4a426115efa836116a70ed6c4567c0 (patch)
tree450d97780995e1cd585438e7dfbd2f0873da5aef
parent6091ec388e9159c1390650e26091da3b1b2473bd (diff)
downloadxf86-input-wacom-release-0.8.4-1.tar.gz
Updated wacomcpl for non-TwinView Nvidia dual setuprelease-0.8.4-1
-rw-r--r--ChangeLog7
-rw-r--r--docs/docs.html527
-rwxr-xr-xsrc/include/Xwacom.h3
-rwxr-xr-xsrc/util/wcmAction.c9
-rwxr-xr-xsrc/util/xsetwacom.c21
-rwxr-xr-xsrc/wacomxi/wacomcpl-exec97
-rwxr-xr-xsrc/xdrv/wcmCommon.c45
-rwxr-xr-xsrc/xdrv/xf86Wacom.c5
-rwxr-xr-xsrc/xdrv/xf86WacomDefs.h1
9 files changed, 320 insertions, 395 deletions
diff --git a/ChangeLog b/ChangeLog
index 2cb1662..ff2e0b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
+2009-08-28 Ping Cheng <pingc@wacom.com>
+ * Updated wacomcpl for Nvidia non-TwinView setting
+ * Fixed ring event jump accrossing 0 and 71 points
+ * Label 0.8.4-1
+
2009-07-30 Ping Cheng <pingc@wacom.com>
* Support Nvidia non-TwinView setting
- * Updated webpages and man page
+ * Updated webpages and man pages
* Fixed bug 2789354 for Graphire
* Label 0.8.4
diff --git a/docs/docs.html b/docs/docs.html
index 4214b00..2245777 100644
--- a/docs/docs.html
+++ b/docs/docs.html
@@ -55,7 +55,7 @@
&nbsp;&nbsp;<a class="menu" href="http://sourceforge.net/projects/linuxwacom">Development</a>&nbsp;&nbsp; |
&nbsp;&nbsp;<a class="menu" href="http://linuxwacom.sourceforge.net/index.php/toc">TOC</a>&nbsp;&nbsp; |
&nbsp;&nbsp;<a class="menu" href="http://linuxwacom.sourceforge.net/index.php/all">All</a>&nbsp;&nbsp;
-</td><td class="menu" align="right">Apr 29, 2009</td></tr>
+</td><td class="menu" align="right">Aug 28, 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>
@@ -225,9 +225,9 @@ Serial tablet or Tablet PC users can go directly to the next section
<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
+<p><a name="download">The file </a><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.4.tar.bz2">linuxwacom-0.8.4.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
+current beta package <a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.3-6.tar.bz2">linuxwacom-0.8.3-6.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
@@ -236,9 +236,9 @@ 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>
+</p><blockquote><pre>[jej@ayukawa jej]$ bunzip2 linuxwacom-0.8.4.tar.bz2
+[jej@ayukawa jej]$ tar -xf linuxwacom-0.8.4.tar
+[jej@ayukawa jej]$ cd linuxwacom-0.8.4</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
@@ -249,7 +249,7 @@ installation procedures depend on the kernel source you use.
and release dates. Otherwise, let's continue.
-</p><h3>Stable files included for linuxwacom-0.8.2-2:</h3>
+</p><h3>Stable files included for linuxwacom-0.8.4:</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>
@@ -302,6 +302,7 @@ and release dates. Otherwise, let's continue.
<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.4.tar.bz2">linuxwacom-0.8.4.tar.bz2</a></td><td valign="top">-</td><td valign="top">2009-07-30</td><td valign="top">Support: Intuos4; kernels up to 2.6.31; Xorg up to 1.6.0.</td></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
@@ -328,7 +329,7 @@ programs for x86_32 and x86_64 systems. Adds many new xsetwacom options.</td></t
<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.3-6.tar.bz2">linuxwacom-0.8.3-6.tar.bz2</a></td><td valign="top">-</td><td valign="top">2009-06-28</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 &amp; 2.6.24. Temporary workaround for Xorg 7.3. Support
@@ -489,13 +490,13 @@ for future readers.
</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.
+linuxwacom-0.8.4/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
+</a></p><blockquote><pre><a name="install">[jej@ayukawa jej]$ cd linuxwacom-0.8.4/prebuilt
[jej@ayukawa prebuilt]$ su
[jej@ayukawa prebuilt]# ./uninstall
[jej@ayukawa prebuilt]# ./install
@@ -634,7 +635,7 @@ of the document identifies which options are needed and when.<br><br>
<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
+ and your mappping doesn't work 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>
@@ -963,22 +964,22 @@ 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
+Aug 28 21:26:11 ayukawa kernel: hub.c: USB new device connect on bus2/2, assigned device number 2
+Aug 28 21:26:11 ayukawa kernel: <b>input0: Wacom Intuos2 12x12</b> on usb2:2.0
+Aug 28 21:26:11 ayukawakernel: <b>wacom.c: Setting tablet report for tablet data</b>
+Aug 28 21:26:11 ayukawa kernel: <b>wacom.c: input1: Wacom Intuos2 12x12</b> on usb1:6.0
+Aug 28 21:26:14 ayukawa /etc/hotplug/usb.agent: Setup wacom hid for USB product <b>56a/44</b>/115
+Aug 28 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 &lt;vojtech@suse.cz&gt;
-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
+Aug 28 21:28:38 sasami kernel: hub.c: USB new device connect on bus1/1, assigned device number 2
+Aug 28 21:28:38 sasami kernel: <b>input0: Wacom Intuos2 12x12</b> on usb1:2.0
+Aug 28 21:28:39 sasami kernel: usb.c: registered new driver hiddev
+Aug 28 21:28:39 sasami kernel: usb.c: registered new driver hid
+Aug 28 21:28:39 sasami kernel: hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik &lt;vojtech@suse.cz&gt;
+Aug 28 21:28:39 sasami kernel: hid-core.c: USB HID support drivers
+Aug 28 21:28:39 sasami kernel: mice: <b>PS/2 mouse</b> device common for all mice
</a></pre>
</blockquote>
@@ -996,13 +997,15 @@ driver <i>did not get control</i>. Either hid or usbmouse did.
<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.
+in </a><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.4.tar.bz2">linuxwacom-0.8.4.tar.bz2</a> supports Intuos4, which will be available in
+kernel version 2.6.31.
-</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>The USB Wacom tablet may be assigned to a different /dev/input/event#
+after each reboot. To resolve this issue, 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:
@@ -1389,12 +1392,12 @@ 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 &lt;vojtech@suse.cz&gt;
-Apr 29 20:34:41 ayukawa kernel: wacom.c: USB Wacom Graphire and Wacom Intuos tablet driver
+Aug 28 20:34:41 ayukawa kernel: usb.c: registered new driver wacom
+Aug 28 20:34:41 ayukawa kernel: Reporting max 30480, 31680
+Aug 28 20:34:41 ayukawa kernel: wacom.c: Setting tablet report for tablet data
+Aug 28 20:34:41 ayukawa kernel: input0: Wacom Intuos2 12x12 on usb2:3.0
+Aug 28 20:34:41 ayukawa kernel: wacom.c: <b>$1.43-0.8.4</b> Vojtech Pavlik &lt;vojtech@suse.cz&gt;
+Aug 28 20:34:41 ayukawa kernel: wacom.c: USB Wacom Graphire and Wacom Intuos tablet driver
</pre></blockquote>
@@ -1525,17 +1528,17 @@ if it cannot find the one you have specified.
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 &lt;vojtech@suse.cz&gt;
-Apr 29 21:23:35 ayukawa kernel: wacom.c: USB Wacom Graphire and Wacom Intuos tablet driver (MODIFIED)
+Aug 28 21:23:35 ayukawa kernel: usb.c: registered new driver wacom
+Aug 28 21:23:35 ayukawa kernel: wacom.c: <b>v1.43-0.8.4</b> Vojtech Pavlik &lt;vojtech@suse.cz&gt;
+Aug 28 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>
+is 1.43-0.8.4 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>
+<p><a name="buildhid6">In the </a><a href="http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.4.tar.bz2">linuxwacom-0.8.4.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>
@@ -1648,7 +1651,7 @@ 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>
+</a></p><h2><a name="viewdata">3.9 - 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.
@@ -1675,10 +1678,10 @@ 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 &lt;vojtech@suse.cz&gt;
+Aug 28 17:31:31 sasami kernel: usb.c: deregistering driver wacom
+Aug 28 17:31:34 sasami kernel: usb.c: registered new driver wacom
+Aug 28 17:31:35 sasami kernel: input0: Wacom Intuos2 12x12 on usb1:2.0
+Aug 28 17:31:35 sasami kernel: wacom.c: v1.43-0.8.4 Vojtech Pavlik &lt;vojtech@suse.cz&gt;
</a></pre></blockquote>
<p><a name="viewdata">The device driver and the tablet occassionally get out of
@@ -2073,19 +2076,22 @@ CONFIGURATION DETAILS
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"
+ Option "Twinview" "horizontal"|"vertical"|"leftof"|"aboveof"
+ |"xinerama"|"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. The default is "none". Note: due to historic reason,
+ "horizontal" represents the "RightOf" and "vertical"
+ represents the "BelowOf" in acutal TwinView setup.
- Option "TVResolution" "res1,res2"
+ Option "TVResolution" "res0,res1"
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
+ TwinView setup. For example, if the resolution of screen 0
+ (res0) is 1024x768 and screen 1 (res1) is 1280x1024, the
option will be set to:
Option "TVResolution" "1024x768,1280x1024"
@@ -2095,7 +2101,8 @@ CONFIGURATION DETAILS
Option "ScreenNo" "n"
In a multi-monitor environment, specifies the screen number
- in which the cursor can move.
+ in which the cursor can move. Here n starts from 0,
+ which indicates the first screen.
Option "MMonitor" "on"|"off"
turns on/off across monitor movement on a non-TwinView
@@ -2273,7 +2280,7 @@ are running right, the following lines appear in my log file.
(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) Wacom driver level: <b>47-0.8.4</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)
@@ -2285,8 +2292,8 @@ suppress=0
(==) 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 name="restartx">Notice the driver version 47-0.8.4 above. This is the new stable
+wacom_drv.o driver. The beta driver is currently 47-0.8.3-6.
</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
@@ -2792,8 +2799,9 @@ unless explicitly stated otherwise):
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
+ TwinView none|xinerama|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.
@@ -3039,16 +3047,20 @@ 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">By TwinView setup, we used to
+represent the two screens are configured in such a way that X "thinks"
+it only has one screen. Starting from release 0.8.3-6, we added the
+non-TwinVew setup for nvidia card as TwinView with option Xinerama. So,
+it is getting more confused even among us, the developers. Thanks for
+the new dual display support from Nvidia driver.
+</a></p><p><a name="multimonitor">There are four 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">2. map the tablet to one screen at a time when dual display is in TwinView setup, 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
@@ -3056,18 +3068,27 @@ 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.
+of points on the side that enables the screen switch. </a></p><p><a name="multimonitor">3. map the tablet to a specific screen when dual display is in TwinView setup.
</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><p><a name="multimonitor">3. map the tablet to a specific screen when dual display is in non-TwinView setup with Nvidia card.
+</a></p><p><a name="multimonitor"> Option "TwinView" and "ScreenNo" are
+used in the InputDevices section of the X11's configuration file to
+configure Wacom driver . The actual option would be:
+</a></p><p><a name="multimonitor"> Option "TwinView" "Xinerama"
+</a></p><p><a name="multimonitor"> Option "ScreenNo" "theScreenNumber"
+
</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.
+Wacom device. If the command only reports one screen but you actually
+have two screen on the system, you are running a TwinView setup. If it
+reports more than one screen, you are in Xinerama setup.
</a></p></div>
<a name="multimonitor"><b>Xinerama setup </b>
@@ -3099,7 +3120,7 @@ screen. </a></p><p><a href="#inputdev">X11 InputDevices Options</a> details all
<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><a href="mailto:%20pinglinux@gmail.com?SUBJECT=WACOM">pinglinux@gmail.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
@@ -4100,294 +4121,81 @@ 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 &gt;&gt; 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 &gt;&gt; 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
+</a><h2><a name="debwacomnosrc">13.7 - Building wacom driver On RHEL 5 / CentOS 5</a></h2>
+<a name="debwacomnosrc">The following documentation for building wacom x.org and kernel modules on RHEL 5 / CentOS 5
+was written by Sylvain Giasson. If you have any problems or questions, go ahead and post them
+to linuxwacom-discuss@lists.sourceforge.net.
-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
+<br><br>
-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.
+Copyright (C) August 2009 Sylvain Giasson<br><br>
-Also note, that at this stage I still don't have /dev/input/wacom and the
-tablet appears on /dev/input/event3
+</a><pre><a name="debwacomnosrc"><b>Summary</b>
-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:
+When installing a driver, you will not always get an rpm package to install it. You may have to
+compile it for the kernel and architecture you are using. This document will show you how to
+compile the wacom driver from source.
-wacdump v0.5.2
+<b>Download the binaries</b>
-MODEL=Wacom Intuos3 6x8 ROM=1.0-2
-CLS=USB VNDR=Wacom DEV=Intuos3 SUB=PTZ-630
+You will need to download the source for the wacom driver. You need to go on the linux wacom web
+page: http://linuxwacom.sourceforge.net. In this example, you download it into /usr/tmp.
+<b>Uncompress the binaries</b>
+Once downloaded, the wacom driver source package are TARed and compressed as bz2 archives. They
+must extracted and uncompressed unsing the following commands.
+ su - root
+ cd /usr/tmp
+ tar xjvf linuxwacom-0.8.4.tar.bz2
-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)
+Note: tar options: x=extract; j=extract bz2 before tar; v=verbose; f=the file you are going to
+uncompress.
- LEFT= MIDDLE= RIGHT= EXTRA=
- SIDE= TOUCH= STYLUS= STYLUS2=
+<b>Updating/installing pre-requisite packages with yum before compiling</b>
+Before compiling the driver for your workstation, you need to be sure to have some pre-requisites
+modules installed. The easiest way to install them is by using yum.
-Once you've setup all the configuration with the correct input device execute
+This utility allows you to automatically download and install the kernel headers and development
+package, the X server software development kit and source, as well as the libXi development
+package. (Note: Your workstation must have internet access).
-init 5; exit
+ yum install kernel-devel kernel-headers
+ yum install xorg-x11-server-source xorg-x11-server-sdk libXi-devel
-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.
+Once yum found everything it needs, press "y" to begin the installation process.
-Good luck.
+<b>Compiling the driver</b>
-regards, Paul
+ 1. Compiling the driver is simple. You need to configure a custom installer, create it, and
+install it. Type the following commands:
+
+ su - root
+ cd /usr/tmp/linuxwacom-0.8.4
+ ./configure
+
+If some dependencies aren't resolved, the configure step will not be completed successfully. Once
+dependancies are resolved, run ./configure again.
+
+ 2. When the "configure" step succeeds, continue to the next steps. Type:
+
+ ./make
+
+ 3. This will create the actual installer using the configuration from the previous step. Type:
+
+ ./make install
+
+ This will install the driver.
+
+ 4. Install kernel driver (create a backup copy)
+
+ cp /lib/modules/`uname -r`/kernel/drivers/usb/input/wacom.ko /lib/modules/`uname -r`/kernel/drivers/usb/input/wacom.ko.old.$$
+ cp src/`uname -r | cut -d- -f1`/wacom.ko /lib/modules/`uname -r`/kernel/drivers/usb/input/
-</arch></arch></a></pre>
+ 5. Reboot the workstation
+</a></pre>
<a name="susewacom">
</a><h2><a name="susewacom">13.8 - Building wacom driver On Suse 9.2</a></h2>
@@ -4401,8 +4209,51 @@ 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>
+</pre><a name="ubuntu">
+</a><h2><a name="ubuntu">13.9 - Building wacom driver On Ubuntu 9.04 64-bit system</a></h2>
+<a name="ubuntu">The steps on this page are taken from the following posts:-
+</a><pre><a name="ubuntu">http://ubuntuforums.org/showthread.php?t=1215979&amp;page=3 #22
+http://ubuntuforums.org/showthread.php?t=1038949&amp;page=11 #104 Section 1
+http://ubuntuforums.org/showthread.php?t=967147&amp;page=18 #176
+<br>
+</a></pre>
+
+<a name="ubuntu">Craig Stevens summarized the steps below for his Wacom
+Intuos4 M on a 64-bit Ubuntu 9.04 (Aug. 26, 2009). Craig also wanted to
+credit Favux and Eric Honaker for their help. If you have any problems
+or questions, please post them to
+linuxwacom-discuss@lists.sourceforge.net.
+</a><pre><a name="ubuntu">Process from start to finish:-
+
+ 1. Installed "wacom-tools" and "xserver-xorg-input-wacom" using synaptic.
+ 2. "cd ./Desktop"
+ 3. "wget http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.4.tar.bz2"
+ 4. "sudo apt-get update"
+ 5. "sudo apt-get install build-essential libx11-dev libxi-dev x11proto-input-dev xserver-xorg-dev tk8.4-dev tcl8.4-dev libncurses5-dev"
+ 6. "sudo apt-get upgrade"
+ 7. Then got the kernal version with: "uname -r" (needed in steps 8 and 14)
+ 8. I had the generic kernel so:
+ "sudo apt-get install linux-headers-generic"
+ (or it would have been: "sudo apt-get install linux-headers-rt for the rt kernel")
+ 9. "tar xjvf linuxwacom-0.8.4.tar.bz2"
+ 10. "cd linuxwacom-0.8.4"
+ 11. "./configure --enable-wacom"
+ 12. "make"
+ 13. "sudo make install"
+ 14. Then copied the wacom.ko built in step 12 over the existing one in lib/modules...,
+ "sudo cp ./src/2.6.28/wacom.ko /lib/modules/`uname -r`/kernel/drivers/input/tablet/wacom.ko"
+ where `uname -r` is the kernel version from step 7.
+ 15. Changed /usr/share/hal/fdi/policy/20thirdparty/10-wacom.fdi for a new one attached to
+ http://ubuntuforums.org/showthread.php?t=967147&amp;page=18 #176 which clearly explains the procedure
+ (just swapping out the file contents in a text editor, after backing up!)
+ 16. In a text editor added the line "wacom" to the end of the /etc/modules file
+ 17. Rebooted and it worked.
+</a></pre>
+
+<a name="ubuntu">This has got the tablet as far as working like a mouse
+in Ubuntu Gnome desktop and also working in Photoshop in XP on a
+VirtualBox VM. The Touch Ring zooms in Firefox. </a><a name="laptop">
+</a><h2><a name="laptop">13.10 - Laptop Suspend/Resume Tips</a></h2>
<a name="laptop">Thomas Netter (tnetter at iniDOTunizhDOTc) kindly provided a solution
to the following problem:
@@ -4437,7 +4288,7 @@ 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><h2><a name="lic">13.11 - GNU Free Document License</a></h2>
<a name="lic"> GNU GENERAL PUBLIC LICENSE<br>
Version 2, June 1991<br>
<br>
@@ -4723,7 +4574,7 @@ POSSIBILITY OF SUCH DAMAGES.
<br><br>
<div class="copy" align="center">
- Copyright (C) 2002-2009 - LinuxWacom -Last updated April 29, 2009<br>
+ Copyright (C) 2002-2009 - LinuxWacom -Last updated July 30, 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
diff --git a/src/include/Xwacom.h b/src/include/Xwacom.h
index f698225..08ab99d 100755
--- a/src/include/Xwacom.h
+++ b/src/include/Xwacom.h
@@ -161,7 +161,8 @@
#define AC_KEY 0x00010000 /* Emit key events */
#define AC_MODETOGGLE 0x00020000 /* Toggle absolute/relative mode */
#define AC_DBLCLICK 0x00030000 /* Emit a button1 double-click event */
-#define AC_DISPLAYTOGGLE 0x00040000 /* Toggle among screens */
+#define AC_DISPLAYTOGGLE 0x00040000 /* Toggle among displays (screen plus whole desktop) */
+#define AC_SCREENTOGGLE 0x00050000 /* Toggle among screens */
#define AC_TYPE 0x000f0000 /* The mask to isolate event type bits */
#define AC_NUM_KEYS 0x0ff00000 /* The mask to isolate number of keys to send */
#define AC_CORE 0x10000000 /* Always emit a core event */
diff --git a/src/util/wcmAction.c b/src/util/wcmAction.c
index cec7f61..cafae4c 100755
--- a/src/util/wcmAction.c
+++ b/src/util/wcmAction.c
@@ -1,7 +1,7 @@
/*****************************************************************************
** wcmAction.c
**
-** Copyright (C) 2007 - 2008 - Ping Cheng
+** Copyright (C) 2007 - 2009 - Ping Cheng
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -22,7 +22,8 @@
** 2008-01-17 0.0.2-pc - Add Display Toggle
** 2008-08-01 0.0.3-pc - Merge patch 1998051 (Yuri Shchedov)
** 2008-12-10 0.0.4-pc - Updated patch 1998051 for none KP buttons
-*/
+** 2009-08-24 0.0.5-pc - Add Screen Toggle
+*/
/* This pseudo-header file is included both from the X11 driver, and from
* tools (notably xsetwacom). The reason is to have the function defined
@@ -45,7 +46,8 @@ static ACTIONCODE action_code [] =
{ "BUTTON", AC_BUTTON },
{ "MODETOGGLE", AC_MODETOGGLE },
{ "DBLCLICK", AC_DBLCLICK },
- { "DISPLAYTOGGLE", AC_DISPLAYTOGGLE }
+ { "DISPLAYTOGGLE", AC_DISPLAYTOGGLE },
+ { "SCREENTOGGLE", AC_SCREENTOGGLE }
};
static ACTIONCODE modifier_code [] =
@@ -258,6 +260,7 @@ int xf86WcmDecode (const char *dev, const char *but, const char *ev, unsigned *
case AC_MODETOGGLE:
case AC_DBLCLICK:
case AC_DISPLAYTOGGLE:
+ case AC_SCREENTOGGLE:
break;
case AC_KEY:
if (!strlen(ev_p))
diff --git a/src/util/xsetwacom.c b/src/util/xsetwacom.c
index 4fcecb2..2afe063 100755
--- a/src/util/xsetwacom.c
+++ b/src/util/xsetwacom.c
@@ -37,6 +37,7 @@
** 2009-02-27 0.1.8 - PC - Added LeftOf and AboveOf to TwinView
** 2009-05-18 0.1.9 - PC - Support get/set serial command
** 2009-07-14 0.2.0 - PC - Support Nvidia Xinerama setting
+** 2009-08-24 0.2.1 - PC - Add SCREENTOGGLE command
**
****************************************************************************/
@@ -733,12 +734,18 @@ static int ListParam(WACOMCONFIG *hConfig, char** argv)
"\tBUTTON: Emit a button event\n"
"\tDBLCLICK: Emit a double-click button event\n"
"\tMODETOGGLE: Toggle absolute/relative tablet mode\n");
- printf ("\tDISPLAYTOGGLE: Toggle cursor movement among screens\n"
- "\t for the selected tool except pad which\n"
- "\t applies to all tools asssociated with the tablet\n"
+ printf ("\tDISPLAYTOGGLE: Toggle cursor movement among all displays \n"
+ "\t which include individual screens plus the whole desktop \n"
+ "\t for the selected tool if it is not a pad. \n"
+ "\t When the tool is a pad, the function applies to all \n"
+ "\t tools that are asssociated with the tablet\n");
+ printf ("\tSCREENTOGGLE: Toggle cursor movement among all screens \n"
+ "\t for the selected tool if it is not a pad. \n"
+ "\t When the tool is a pad, the function applies to all \n"
+ "\t tools that are asssociated with the tablet\n"
" Modifier: use \"xsetwacom list mod\"\n"
- "\tto see a list of modifiers and specific keys\n"
- " CODE: Button number if emit a button event \n"
+ "\t to see a list of modifiers and specific keys\n"
+ " CODE: Button number if emitting a button event; \n"
"\tor specific keys and any other keys not listed as mod \n");
printf ("Examples:\n"
" xsetwacom set stylus Button1 \"button 5\"\n"
@@ -1098,6 +1105,9 @@ static void DisplayValue (WACOMDEVICE *hDev, const char *devname, PARAMINFO *p,
case AC_MODETOGGLE:
sl += snprintf (strval + sl, sizeof (strval) - sl, "MODETOGGLE ");
break;
+ case AC_SCREENTOGGLE:
+ sl += snprintf (strval + sl, sizeof (strval) - sl, "SCREENTOGGLE ");
+ break;
case AC_DBLCLICK:
sl += snprintf (strval + sl, sizeof (strval) - sl, "DBLCLICK ");
break;
@@ -1176,6 +1186,7 @@ static void DisplayValue (WACOMDEVICE *hDev, const char *devname, PARAMINFO *p,
(((value & AC_TYPE) == AC_KEY) ||
((value & AC_TYPE) == AC_MODETOGGLE) ||
((value & AC_TYPE) == AC_DBLCLICK) ||
+ ((value & AC_TYPE) == AC_SCREENTOGGLE) ||
((value & AC_TYPE) == AC_DISPLAYTOGGLE)) )
printf ("%s\n", strval);
else
diff --git a/src/wacomxi/wacomcpl-exec b/src/wacomxi/wacomcpl-exec
index 7dc4860..bbfad6c 100755
--- a/src/wacomxi/wacomcpl-exec
+++ b/src/wacomxi/wacomcpl-exec
@@ -53,7 +53,8 @@ set modeToggleB 33
set ignoreButton 34
set doubleClickB 35
set displayToggleB 36
-set keystrokeB 37
+set screenToggleB 37
+set keystrokeB 38
set maxNumTablets 199
proc updateCurrentScreenInfo {} {
@@ -133,44 +134,46 @@ proc updateXinitrc {device option value} {
}
proc verifycalibResults { } {
- global calibResults device getOptionDefault
+ global device getOptionDefault xDevMin xDevMax yDevMin yDevMax
- set tol_offset [expr ($getOptionDefault($device,BottomY) / 20)]
- set tol_left [expr (($getOptionDefault($device,BottomY) / 2) - $tol_offset)]
- set tol_right [expr (($getOptionDefault($device,BottomY) / 2) + $tol_offset)]
+ set tol_offset [expr ($getOptionDefault($device,BottomY) / 4)]
+ set tol_left [expr ($getOptionDefault($device,BottomY) - $tol_offset) / 2]
+ set tol_right [expr ($getOptionDefault($device,BottomY) + $tol_offset) / 2]
set tol_bottom [expr ($getOptionDefault($device,BottomY) - $tol_offset)]
# set tablet Y values to normal when offset is by whole of the tablet size.
# Whole has to be first and we do it two times to make sure.
- if { $calibResults(yDev,0) > $tol_bottom } {
- set calibResults(yDev,0) [expr ($calibResults(yDev,0) - $getOptionDefault($device,BottomY))]
- set calibResults(yDev,1) [expr ($calibResults(yDev,1) - $getOptionDefault($device,BottomY))]
- } elseif { $calibResults(yDev,0) > $tol_bottom } {
- set calibResults(yDev,0) [expr ($calibResults(yDev,0) - $getOptionDefault($device,BottomY))]
- set calibResults(yDev,1) [expr ($calibResults(yDev,1) - $getOptionDefault($device,BottomY))]
- } elseif { ($calibResults(yDev,0) > $tol_left) && ($calibResults(yDev,0) < $tol_right) } {
+ if { $yDevMin > $tol_bottom } {
+ set yDevMin [expr ($yDevMin - $getOptionDefault($device,BottomY))]
+ set yDevMax [expr ($yDevMax - $getOptionDefault($device,BottomY))]
+ }
+ if { $yDevMin > $tol_bottom } {
+ set yDevMin [expr ($yDevMin - $getOptionDefault($device,BottomY))]
+ set yDevMax [expr ($yDevMax - $getOptionDefault($device,BottomY))]
+ } elseif { ($yDevMin > $tol_left) && ($yDevMin < $tol_right) } {
# set tablet Y values to normal when offset is by half tablet size
- set calibResults(yDev,0) [expr ($calibResults(yDev,0) - ($getOptionDefault($device,BottomY) / 2))]
- set calibResults(yDev,1) [expr ($calibResults(yDev,1) - ($getOptionDefault($device,BottomY) / 2))]
+ set yDevMin [expr ($yDevMin - ($getOptionDefault($device,BottomY) / 2))]
+ set yDevMax [expr ($yDevMax - ($getOptionDefault($device,BottomY) / 2))]
}
- set tol_offset [expr ($getOptionDefault($device,BottomX) / 20)]
- set tol_left [expr (($getOptionDefault($device,BottomX) / 2) - $tol_offset)]
- set tol_right [expr (($getOptionDefault($device,BottomX) / 2) + $tol_offset)]
+ set tol_offset [expr ($getOptionDefault($device,BottomX) / 4)]
+ set tol_left [expr ($getOptionDefault($device,BottomX) - $tol_offset) / 2]
+ set tol_right [expr ($getOptionDefault($device,BottomX) + $tol_offset) / 2]
set tol_bottom [expr ($getOptionDefault($device,BottomX) - $tol_offset)]
# set tablet X values to normal when offset is by whole of the tablet size.
# Whole has to be first and we do it two times to make sure.
- if { $calibResults(xDev,0) > $tol_bottom } {
- set calibResults(xDev,0) [expr ($calibResults(xDev,0) - $getOptionDefault($device,BottomX))]
- set calibResults(xDev,1) [expr ($calibResults(xDev,1) - $getOptionDefault($device,BottomX))]
- } elseif { $calibResults(xDev,0) > $tol_bottom } {
- set calibResults(xDev,0) [expr ($calibResults(xDev,0) - $getOptionDefault($device,BottomX))]
- set calibResults(xDev,1) [expr ($calibResults(xDev,1) - $getOptionDefault($device,BottomX))]
- } elseif { ($calibResults(xDev,0) > $tol_left) && ($calibResults(xDev,0) < $tol_right) } {
+ if { $xDevMin > $tol_bottom } {
+ set xDevMin [expr ($xDevMin - $getOptionDefault($device,BottomX))]
+ set xDevMax [expr ($xDevMax - $getOptionDefault($device,BottomX))]
+ }
+ if { $xDevMin > $tol_bottom } {
+ set xDevMin [expr ($xDevMin - $getOptionDefault($device,BottomX))]
+ set xDevMax [expr ($xDevMax - $getOptionDefault($device,BottomX))]
+ } elseif { ($xDevMin > $tol_left) && ($xDevMin < $tol_right) } {
# set tablet X values to normal when offset is by half tablet size
- set calibResults(xDev,0) [expr ($calibResults(xDev,0) - ($getOptionDefault($device,BottomX) / 2))]
- set calibResults(xDev,1) [expr ($calibResults(xDev,1) - ($getOptionDefault($device,BottomX) / 2))]
+ set xDevMin [expr ($xDevMin - ($getOptionDefault($device,BottomX) / 2))]
+ set xDevMax [expr ($xDevMax - ($getOptionDefault($device,BottomX) / 2))]
}
}
@@ -180,6 +183,7 @@ proc calibrationSequence {which xDev yDev} {
global swapThresh screenWidth screenHeight getOptionDefault
global getDeviceModel screenXBottom screenYBottom
global calibX_org calibY_org calibX_botm calibY_botm
+ global xDevMin xDevMax yDevMin yDevMax
set scaling [exec xsetwacom get $device xscaling]
if { $scaling == 1 } {
@@ -227,19 +231,19 @@ proc calibrationSequence {which xDev yDev} {
of the pink crosshair, you are fine. Otherwise, try it again."
}
- # A starting point verification of the click.
+ # Verifying the end results
verifycalibResults
- set widthDev [expr $calibResults(xDev,1) - $calibResults(xDev,0)]
- set heightDev [expr $calibResults(yDev,1) - $calibResults(yDev,0)]
- set widthX [expr $screenWidth-$size]
- set heightX [expr $screenHeight-$size]
+ set widthDev [expr $xDevMax - $xDevMin]
+ set heightDev [expr $yDevMax - $yDevMin]
+ set widthX [expr $screenWidth - $size]
+ set heightX [expr $screenHeight - $size]
set xDevMin [expr $xDevMin - ($borderOffset * $widthDev / $widthX)]
set xDevMax [expr $xDevMax + ($borderOffset * $widthDev / $widthX)]
set yDevMin [expr $yDevMin - ($borderOffset * $heightDev / $heightX)]
set yDevMax [expr $yDevMax + ($borderOffset * $heightDev / $heightX)]
-
+
updateXinitrc $device topx $xDevMin
updateXinitrc $device topy $yDevMin
updateXinitrc $device bottomx $xDevMax
@@ -293,7 +297,7 @@ proc Calibration {} {
return
}
- if { $tvID == 1 } { # Nvidia Xinerama setup starts at (0,0) even when it is not in xorg.conf
+ if { $tvID == 1 } { # Nvidia Xinerama setup starts at (0,0) even when it is different in xorg.conf
set calibX_org 0
set calibY_org 0
set calibX_botm $screenWidth
@@ -430,7 +434,7 @@ proc disableButtons {} {
proc getDeviceOptionProc { dev i } {
global getOption getOptionDefault Option oldKeys modeToggleB
- global displayToggleB ignoreButton doubleClickB keystrokeB
+ global displayToggleB ignoreButton screenToggleB doubleClickB keystrokeB
global numStrips numControls numButton spName
for { set j 1 } { $j < [ expr $i+1 ] } { incr j 1 } {
@@ -486,6 +490,9 @@ proc getDeviceOptionProc { dev i } {
if { ![string compare -nocase -length 13 DISPLAYTOGGLE $value ] } {
set getOption($dev,$Option($j)) $displayToggleB
}
+ if { ![string compare -nocase -length 12 SCREENTOGGLE $value ] } {
+ set getOption($dev,$Option($j)) $screenToggleB
+ }
if { $value == 0 } {
set getOption($dev,$Option($j)) $ignoreButton
}
@@ -659,7 +666,7 @@ proc updateButton {} {
global device getDeviceModel sm getOption spName isLCD
global dm currentW oldKeys numButton cKeys numStrips startS
global modeToggleB ignoreButton doubleClickB keystrokeB
- global displayToggleB
+ global displayToggleB screenToggleB
set type $getDeviceModel($device,type)
set model $getDeviceModel($device,model)
@@ -694,6 +701,9 @@ proc updateButton {} {
"Display Toggle"
{ set j $displayToggleB
set v "DisplayToggle 1" }
+ "Screen Toggle"
+ { set j $screenToggleB
+ set v "ScreenToggle 1" }
"KeyStroke"
{ set j $keystrokeB
if { $cKeys($spName($k)) == "" } {
@@ -985,7 +995,7 @@ proc expressKeys { } {
global db11 db12 db13 db14 startS
global currentW device numButton spName numStrips
global getDeviceModel cKeys oldKeys getOption
- global displayToggleB ignoreButton keystrokeB
+ global displayToggleB ignoreButton keystrokeB screenToggleB
global numPadRings numPadStrips numPadAbsW numPadRelW
set name(1) "Wheel Up"
@@ -1040,15 +1050,15 @@ proc expressKeys { } {
proc addMenu { curb } {
global db db1 db2 db3 db4 db5 db6 db7 db8 db9 db10
global db11 db12 db13 db14 currentW device spName
- global getOption getDeviceModel cKeys oldKeys keystrokeB
- global doubleClickB displayToggleB ignoreButton modeToggleB
+ global getOption getDeviceModel cKeys oldKeys
+ global keystrokeB doubleClickB screenToggleB
+ global displayToggleB ignoreButton modeToggleB
set model $getDeviceModel($device,model)
set type $getDeviceModel($device,type)
set opt $getOption($device,$spName($curb))
if { $opt == "" } { set opt $curb }
-
set db$curb $db($opt)
#reset keys
if { $opt != $keystrokeB } {
@@ -1059,12 +1069,12 @@ proc addMenu { curb } {
if { [string compare $type "pad"] } {
set bmenu [ tk_optionMenu $currentW.f.$curb db$curb $db(1) $db(2) \
$db(3) $db(4) $db(5) $db($doubleClickB) $db($modeToggleB) \
- $db($displayToggleB) $db($ignoreButton) ]
+ $db($displayToggleB) $db($screenToggleB) $db($ignoreButton) ]
set i 9
} else {
set bmenu [ tk_optionMenu $currentW.f.$curb db$curb $db(1) $db(2) \
$db(3) $db(4) $db(5) $db($doubleClickB) $db($displayToggleB) \
- $db($ignoreButton) ]
+ $db($screenToggleB) $db($ignoreButton) ]
set i 8
}
@@ -1338,7 +1348,7 @@ proc initialSet {} {
}
}
- tk_optionMenu $currentW.f.tvmenu tvd $tv(0) $tv(1) $tv(2) $tv(3) $tv(4) tv(5)
+ tk_optionMenu $currentW.f.tvmenu tvd $tv(0) $tv(1) $tv(2) $tv(3) $tv(4) $tv(5)
grid $currentW.f.tv -row 2 -column 0
grid $currentW.f.tvmenu -row 2 -column 1
@@ -1885,7 +1895,7 @@ proc createControls { } {
global desktopHeight desktopWidth oldKeys numStrips
global workingTags db dm sm wName bName numButton
global doubleClickB ignoreButton displayToggleB
- global modeToggleB keystrokeB
+ global modeToggleB keystrokeB screenToggleB
createDeviceList
updateModelInfo
@@ -1903,6 +1913,7 @@ proc createControls { } {
set db($doubleClickB) "Left Double"
set db($modeToggleB) "Mode Toggle"
set db($displayToggleB) "Display Toggle"
+ set db($screenToggleB) "Screen Toggle"
set db($ignoreButton) "Ignore"
set db($keystrokeB) "KeyStroke"
set dm(1) "Relative"
diff --git a/src/xdrv/wcmCommon.c b/src/xdrv/wcmCommon.c
index a628a05..50d17c0 100755
--- a/src/xdrv/wcmCommon.c
+++ b/src/xdrv/wcmCommon.c
@@ -545,7 +545,7 @@ static void sendAButton(LocalDevicePtr local, int button, int mask,
case AC_DISPLAYTOGGLE:
if (mask && priv->numScreen > 1)
{
- if (IsPad(priv)) /* toggle display for all tools except pad */
+ if (IsPad(priv)) /* toggle display (individual screens plus the whole desktop) for all tools except pad */
{
WacomDevicePtr tmppriv;
for (tmppriv = common->wcmDevices; tmppriv; tmppriv = tmppriv->next)
@@ -559,7 +559,7 @@ static void sendAButton(LocalDevicePtr local, int button, int mask,
}
}
}
- else /* toggle display only for the selected tool */
+ else /* toggle display (individual screens plus the whole desktop) only for the selected tool */
{
int screen = priv->screen_no;
if (++screen >= priv->numScreen)
@@ -569,6 +569,33 @@ static void sendAButton(LocalDevicePtr local, int button, int mask,
}
break;
+ case AC_SCREENTOGGLE:
+ if (mask && priv->numScreen > 1)
+ {
+ if (IsPad(priv)) /* toggle screens for all tools except pad */
+ {
+ WacomDevicePtr tmppriv;
+ for (tmppriv = common->wcmDevices; tmppriv; tmppriv = tmppriv->next)
+ {
+ if (!IsPad(tmppriv))
+ {
+ int screen = tmppriv->screen_no;
+ if (++screen >= tmppriv->numScreen)
+ screen = 0;
+ xf86WcmChangeScreen(tmppriv->local, screen);
+ }
+ }
+ }
+ else /* toggle screens only for the selected tool */
+ {
+ int screen = priv->screen_no;
+ if (++screen >= priv->numScreen)
+ screen = 0;
+ xf86WcmChangeScreen(local, screen);
+ }
+ }
+ break;
+
case AC_DBLCLICK:
if (mask)
{
@@ -602,6 +629,7 @@ static void sendWheelStripEvents(LocalDevicePtr local, const WacomDeviceState* d
int x, int y, int z, int v3, int v4, int v5)
{
WacomDevicePtr priv = (WacomDevicePtr) local->private;
+ WacomCommonPtr common = priv->common;
int fakeButton = 0, i, value = 0, naxes = priv->naxes;
unsigned *keyP = 0;
int is_absolute = priv->flags & ABSOLUTE_FLAG;
@@ -630,6 +658,19 @@ static void sendWheelStripEvents(LocalDevicePtr local, const WacomDeviceState* d
if ( ds->abswheel != priv->oldWheel )
{
value = priv->oldWheel - ds->abswheel;
+ if ((strstr(common->wcmModel->name, "Bamboo") ||
+ strstr(common->wcmModel->name, "Intuos4"))
+ && IsPad(priv))
+ {
+ /* deal with MAX_FINGER_WHEEL to 0 and 0 to MAX_FINGER_WHEEL switching */
+ if (abs(priv->oldWheel - ds->abswheel) > (MAX_FINGER_WHEEL/2))
+ {
+ if (priv->oldWheel > ds->abswheel)
+ value -= MAX_FINGER_WHEEL;
+ else
+ value += MAX_FINGER_WHEEL;
+ }
+ }
if ( value > 0 )
{
fakeButton = priv->wheelup;
diff --git a/src/xdrv/xf86Wacom.c b/src/xdrv/xf86Wacom.c
index 70f4740..a468a3f 100755
--- a/src/xdrv/xf86Wacom.c
+++ b/src/xdrv/xf86Wacom.c
@@ -81,9 +81,10 @@
* 2009-05-22 47-pc0.8.3-5 - Support Nvidia Xinerama
* 2009-06-26 47-pc0.8.3-6 - Support DTF720a
* 2009-07-14 47-pc0.8.3-7 - Support Nvidia Xinerama setting
+ * 2009-08-25 47-pc0.8.4-1 - Support ScreenToggle
*/
-static const char identification[] = "$Identification: 47-0.8.3-7 $";
+static const char identification[] = "$Identification: 47-0.8.4-1 $";
/****************************************************************************/
@@ -814,7 +815,7 @@ static int xf86WcmRegisterX11Devices (LocalDevicePtr local)
strstr(common->wcmModel->name, "Intuos4"))
&& IsPad(priv))
/* Touch ring */
- InitValuatorAxisStruct(local->dev, 5, 0, 71, 1, 1, 1);
+ InitValuatorAxisStruct(local->dev, 5, 0, MAX_FINGER_WHEEL, 1, 1, 1);
else
{
/* absolute wheel */
diff --git a/src/xdrv/xf86WacomDefs.h b/src/xdrv/xf86WacomDefs.h
index d9884f2..e7f110a 100755
--- a/src/xdrv/xf86WacomDefs.h
+++ b/src/xdrv/xf86WacomDefs.h
@@ -35,6 +35,7 @@
#define MAX_SUPPRESS 100 /* max value of suppress */
#define BUFFER_SIZE 256 /* size of reception buffer */
#define MAXTRY 3 /* max number of try to receive magic number */
+#define MAX_FINGER_WHEEL 71 /* max value of finger wheel */
/* Default max distance to the tablet at which a proximity-out event is generated for
* cursor device (e.g. mouse).