summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Baergen <joshuabaergen@gentoo.org>2007-05-13 17:47:22 +0000
committerJoshua Baergen <joshuabaergen@gentoo.org>2007-05-13 17:47:22 +0000
commit7ceead1fba6a3957e78745affbc53bb5315031e9 (patch)
tree1f5bea33d68dd200572d803ec69193790bd9ddff /x11-drivers
parentamd64 stable (diff)
downloadhistorical-7ceead1fba6a3957e78745affbc53bb5315031e9.tar.gz
historical-7ceead1fba6a3957e78745affbc53bb5315031e9.tar.bz2
historical-7ceead1fba6a3957e78745affbc53bb5315031e9.zip
Include several patches from upstream. Thanks to Conrad Kostecki in bug
#176514. Package-Manager: portage-2.1.2.7
Diffstat (limited to 'x11-drivers')
-rw-r--r--x11-drivers/xf86-input-fpit/ChangeLog10
-rw-r--r--x11-drivers/xf86-input-fpit/Manifest27
-rw-r--r--x11-drivers/xf86-input-fpit/files/digest-xf86-input-fpit-1.1.0-r16
-rw-r--r--x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update1.diff400
-rw-r--r--x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update2.diff30
-rw-r--r--x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update3.diff355
-rw-r--r--x11-drivers/xf86-input-fpit/xf86-input-fpit-1.1.0-r1.ebuild20
7 files changed, 843 insertions, 5 deletions
diff --git a/x11-drivers/xf86-input-fpit/ChangeLog b/x11-drivers/xf86-input-fpit/ChangeLog
index 96bf1452f76b..b4173a93872f 100644
--- a/x11-drivers/xf86-input-fpit/ChangeLog
+++ b/x11-drivers/xf86-input-fpit/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for x11-drivers/xf86-input-fpit
# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-input-fpit/ChangeLog,v 1.31 2007/01/24 06:47:09 dberkholz Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-input-fpit/ChangeLog,v 1.32 2007/05/13 17:47:22 joshuabaergen Exp $
+
+*xf86-input-fpit-1.1.0-r1 (13 May 2007)
+
+ 13 May 2007; Joshua Baergen <joshuabaergen@gentoo.org>
+ +files/xf86-input-fpit-update1.diff, +files/xf86-input-fpit-update2.diff,
+ +files/xf86-input-fpit-update3.diff, +xf86-input-fpit-1.1.0-r1.ebuild:
+ Include several patches from upstream. Thanks to Conrad Kostecki in bug
+ #176514.
24 Jan 2007; Donnie Berkholz <dberkholz@gentoo.org>;
-xf86-input-fpit-1.0.0.5.ebuild:
diff --git a/x11-drivers/xf86-input-fpit/Manifest b/x11-drivers/xf86-input-fpit/Manifest
index a4abc1158308..931acbdc3d9b 100644
--- a/x11-drivers/xf86-input-fpit/Manifest
+++ b/x11-drivers/xf86-input-fpit/Manifest
@@ -1,13 +1,29 @@
+AUX xf86-input-fpit-update1.diff 15185 RMD160 11c5b6db3e3765a6cc4ea536de375378c591c8e7 SHA1 5635ba840af8809352d925ad9ad768361c3fa610 SHA256 8231f2db6167c98a35bcfb744b860c675693ac38351bc8e6cd94bc3e9d3d86cf
+MD5 7c0505e09a79612473f2b5b07659cf65 files/xf86-input-fpit-update1.diff 15185
+RMD160 11c5b6db3e3765a6cc4ea536de375378c591c8e7 files/xf86-input-fpit-update1.diff 15185
+SHA256 8231f2db6167c98a35bcfb744b860c675693ac38351bc8e6cd94bc3e9d3d86cf files/xf86-input-fpit-update1.diff 15185
+AUX xf86-input-fpit-update2.diff 1571 RMD160 192e1ddbf4a1ba57cb6ba4f6785fab6f18021c2b SHA1 6d8e19f6d1d8b18708919396df7d69057acb04fb SHA256 d2ff814b45a128cad7cf2a3c60b0d03548baaad6c451df860c109c3f5353845c
+MD5 add804bfbdd555a3ac6ae34682f490aa files/xf86-input-fpit-update2.diff 1571
+RMD160 192e1ddbf4a1ba57cb6ba4f6785fab6f18021c2b files/xf86-input-fpit-update2.diff 1571
+SHA256 d2ff814b45a128cad7cf2a3c60b0d03548baaad6c451df860c109c3f5353845c files/xf86-input-fpit-update2.diff 1571
+AUX xf86-input-fpit-update3.diff 13756 RMD160 a1732648443ea87c7f60fb47f7f60097c842e608 SHA1 d559ca3bd695fa53285a7e5c36e8290fc0c854fa SHA256 0f103ec7bfb60c0bfd0668087332eac3990094f26236dbb2e28a92d75ff4b415
+MD5 6a2c11de23ef2a140b2d0bc6078cd671 files/xf86-input-fpit-update3.diff 13756
+RMD160 a1732648443ea87c7f60fb47f7f60097c842e608 files/xf86-input-fpit-update3.diff 13756
+SHA256 0f103ec7bfb60c0bfd0668087332eac3990094f26236dbb2e28a92d75ff4b415 files/xf86-input-fpit-update3.diff 13756
DIST x11-driver-patches-1.tar.bz2 389 RMD160 0c57d4b235d83f3d7c46691c13857fd121ddec2d SHA1 6e2ac0cd255d3c4dc97d35092fe3ef64a71d7ac5 SHA256 64787d5b57d2845c0fa9297a9d924093ba191fc3551798239d9983f0bcca9b3e
DIST xf86-input-fpit-1.1.0.tar.bz2 232340 RMD160 677a27db3c5b71c0e7c752cfeb4a09340893f1ad SHA1 988f689f64dcbf721154267c8f4844d8f3dae6ce SHA256 8ee3b2df90516182460fbda025153aa7fb2c6ba343e4239d225963a287f694f8
+EBUILD xf86-input-fpit-1.1.0-r1.ebuild 691 RMD160 82571ee03252ad6210acf61e519ca0a6a16a8128 SHA1 a17b4adda370df3ff0c7301684d3502db30dbf39 SHA256 a64991a1e1b7d86fa3e4082ab860d8c65f6d13d2ccba6e2504cb7c12875940e7
+MD5 4a385d9ef485e1ebaffb18b92b9c6f36 xf86-input-fpit-1.1.0-r1.ebuild 691
+RMD160 82571ee03252ad6210acf61e519ca0a6a16a8128 xf86-input-fpit-1.1.0-r1.ebuild 691
+SHA256 a64991a1e1b7d86fa3e4082ab860d8c65f6d13d2ccba6e2504cb7c12875940e7 xf86-input-fpit-1.1.0-r1.ebuild 691
EBUILD xf86-input-fpit-1.1.0.ebuild 572 RMD160 f42297c0ce5b6946cefa7e9d3063a4b4e7590ca7 SHA1 1f79b1b1a162e5283202973cb7b0c6b970768cc6 SHA256 ddce2188811633a88a0db1606763600ed4ce6cf4e66e5d753f9e50be989ff9f2
MD5 4ef66bc718f73fa5188f0ede97f29d4b xf86-input-fpit-1.1.0.ebuild 572
RMD160 f42297c0ce5b6946cefa7e9d3063a4b4e7590ca7 xf86-input-fpit-1.1.0.ebuild 572
SHA256 ddce2188811633a88a0db1606763600ed4ce6cf4e66e5d753f9e50be989ff9f2 xf86-input-fpit-1.1.0.ebuild 572
-MISC ChangeLog 4095 RMD160 579e00ec70e5c1eef85a5e541a1ed0d5d7bd9a1e SHA1 676648287ce2a42c0046dcf60ed0a2cbea5378c7 SHA256 56378d5f052db6f8b7539ae852f95ae166fe19490ee443b4672bf85399ef126c
-MD5 c163d84d028848e952d363e31b001c8b ChangeLog 4095
-RMD160 579e00ec70e5c1eef85a5e541a1ed0d5d7bd9a1e ChangeLog 4095
-SHA256 56378d5f052db6f8b7539ae852f95ae166fe19490ee443b4672bf85399ef126c ChangeLog 4095
+MISC ChangeLog 4433 RMD160 828511721a5d88cfce2c099c0f911e3a98d7bb45 SHA1 a98d6372e799de0743a512ca0cbdc5db9658d8d4 SHA256 09cefcc9601f415fd24dbcc3c1833b710a93199e24c0e6a950eac380b70f9a93
+MD5 17e10296f35e209e6b7324b59cfaa557 ChangeLog 4433
+RMD160 828511721a5d88cfce2c099c0f911e3a98d7bb45 ChangeLog 4433
+SHA256 09cefcc9601f415fd24dbcc3c1833b710a93199e24c0e6a950eac380b70f9a93 ChangeLog 4433
MISC metadata.xml 156 RMD160 c1274bdccf57603d580de0075ba07a35b7509560 SHA1 6f78f604e3d079d39189b40aaaa1ddb06182ad91 SHA256 5101ab0d4cc8c7125eea733c44e86962769bd77acaf53b69223b9cadcdd29055
MD5 a37bab73e2f24b213932c30997d3d360 metadata.xml 156
RMD160 c1274bdccf57603d580de0075ba07a35b7509560 metadata.xml 156
@@ -15,3 +31,6 @@ SHA256 5101ab0d4cc8c7125eea733c44e86962769bd77acaf53b69223b9cadcdd29055 metadata
MD5 13b61983a7ca8af189d8b4c54f02ebdc files/digest-xf86-input-fpit-1.1.0 524
RMD160 b106a6a652444a115e3978280306a6d80999ef76 files/digest-xf86-input-fpit-1.1.0 524
SHA256 654e2c8147174ffec38d6c37eaf2f5a314e2244b80331874059ae61bc2182ef2 files/digest-xf86-input-fpit-1.1.0 524
+MD5 13b61983a7ca8af189d8b4c54f02ebdc files/digest-xf86-input-fpit-1.1.0-r1 524
+RMD160 b106a6a652444a115e3978280306a6d80999ef76 files/digest-xf86-input-fpit-1.1.0-r1 524
+SHA256 654e2c8147174ffec38d6c37eaf2f5a314e2244b80331874059ae61bc2182ef2 files/digest-xf86-input-fpit-1.1.0-r1 524
diff --git a/x11-drivers/xf86-input-fpit/files/digest-xf86-input-fpit-1.1.0-r1 b/x11-drivers/xf86-input-fpit/files/digest-xf86-input-fpit-1.1.0-r1
new file mode 100644
index 000000000000..97c0e5725807
--- /dev/null
+++ b/x11-drivers/xf86-input-fpit/files/digest-xf86-input-fpit-1.1.0-r1
@@ -0,0 +1,6 @@
+MD5 1b8cfd2923836ee93eda69abe50dda04 x11-driver-patches-1.tar.bz2 389
+RMD160 0c57d4b235d83f3d7c46691c13857fd121ddec2d x11-driver-patches-1.tar.bz2 389
+SHA256 64787d5b57d2845c0fa9297a9d924093ba191fc3551798239d9983f0bcca9b3e x11-driver-patches-1.tar.bz2 389
+MD5 a31066a2076d18619ceaea67f6d89698 xf86-input-fpit-1.1.0.tar.bz2 232340
+RMD160 677a27db3c5b71c0e7c752cfeb4a09340893f1ad xf86-input-fpit-1.1.0.tar.bz2 232340
+SHA256 8ee3b2df90516182460fbda025153aa7fb2c6ba343e4239d225963a287f694f8 xf86-input-fpit-1.1.0.tar.bz2 232340
diff --git a/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update1.diff b/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update1.diff
new file mode 100644
index 000000000000..81ef3798f16a
--- /dev/null
+++ b/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update1.diff
@@ -0,0 +1,400 @@
+commit 4b06c8f70e8b1d6cfaeb41e1584f9efcfef83bb0
+Author: Justin Blanchard <justinb04@aim.com>
+Date: Tue Jan 30 20:12:07 2007 -0500
+
+ Updates from Justin Blanchard - patch 1
+
+ * Make the docs reflect more accurately what the code actually does.
+ * Update the docs: remove material specific to XFree86 3.x/4.0. Re-organize to
+ reflect the wider variety of machines that use this device. Change the link to
+ linuxslate.com. Expand troubleshooting section.
+ * Code cleanup: assorted trivial changes.
+
+diff --git a/man/fpit.man b/man/fpit.man
+index fba0e6f..4964dbe 100644
+--- a/man/fpit.man
++++ b/man/fpit.man
+@@ -23,11 +23,15 @@ driver functions as a pointer input devi
+ X server's core pointer.
+ .SH SUPPORTED HARDWARE
+ This driver supports the touchscreen of the Stylistic LT and (with
+-special options) of the Stylistic 500, 1000 and 2300.
++special options) of the Stylistic 500, 1000, 1200, 2300, and 3400.
++Modern FinePoint MP800 devices will also work with this driver.
+
+-Under Linux the Fujitsus serial port is not, by default, detected.
+-Therefore the following must be added to one of your start-up scripts.
+-(Either one of the X scripts, or to rc.local or similar).
++Under Linux the Fujitsu's serial port is not, by default, detected.
++Therefore the port must be configured manually as described in the
++accompanying readme.txt file.
++
++For example, add the following to your startup scripts for Stylistic xx00
++devices:
+
+ .TP 4
+ .B setserial /dev/ttyS3 autoconfig
+@@ -70,12 +74,12 @@ Same as for X axis, but for Y axis.
+ Invert the specified axis.
+ .TP 4
+ .B Option \fI"SwapXY"\fP
+-Swap the X and Y axis.
++Swap the X and Y axis (after inversions).
+ .TP 4
+ .B Option \fI"Rotate"\fP \fI"CW"\fP
+ .B Option \fI"Rotate"\fP \fI"CWW"\fP
+ Manipulate the invert and swap options to match screen
+-rotations.
++rotations. (Will behave strangely if combined with invert or swap options.)
+ .TP 4
+ .B Option \fI"DeviceName"\fP \fI"name"\fP
+ .B Option \fI"DeviceName"\fP \fI"name"\fP
+@@ -92,7 +96,7 @@ enabled for any other value.
+ .B Option \fI"DebugLevel"\fP \fInumber \fP
+ sets the level of debugging info reported.
+ .TP 4
+-.B Option \fI"BaudRate"\fP \fI"38400"\fP, \fI"19200"\fP or \fI"9600"\fP (default)
++.B Option \fI"BaudRate"\fP \fI"38400"\fP, \fI"19200"\fP (default) or \fI"9600"\fP
+ changes the serial link speed.
+ .TP 4
+ .B Option \fI"Passive"\fP
+diff --git a/readme.txt b/readme.txt
+index fd0990c..075c52e 100644
+--- a/readme.txt
++++ b/readme.txt
+@@ -1,15 +1,8 @@
+ xf86Fpit.c
+ (and associated files).
+
+-Documentation updated by John Apfelbaum, linuxslate.com Oct 2001
+-
+-*** P L E A S E N O T E ***
+-* Due to a Hardrive failure, the version of this driver that was previously
+-* on the linuxslate.com website was lost. This is a version came from a
+-* directory on my development system that was marked "Works", and I belive it
+-* to be the latest version I worked on (about a year ago), but I have not had
+-* time to build from this source and verify this driver.
+-***
++Last updated Jan 2007
++This information applies to version 1.1.0 of this driver.
+
+ Supported Hardware:
+
+@@ -19,6 +12,8 @@ Supported Hardware:
+ Fujistu Stylistic 1000 (Should Work)
+ Fujistu Stylistic 1200 (Should Work)
+ Fujistu Stylistic 2300 (Should Work)
++ Fujitsu Stylistic 3400 (and possibly other passive-pen systems)
++ FinePoint MP800
+
+ History and Contributors:
+
+@@ -30,9 +25,11 @@ History and Contributors:
+ project into the XFree86 4.0.2 Elographics driver by Patrick Lecoanet.
+ - John Apfelbaum continuted the work to produce a working XFree86 4.0.x driver for the
+ Stylistic 1200.
+-- David Clay added support for Stylistic 3400 passive pen.
++- David Clay added support for Stylistic 3400 passive pen, and possibly
++ others. (Also fixed processing of all packets, and enabled right mouse button.)
+
+-Please visit http://linuxslate.com for the latest information.
++Please visit http://webcvs.freedesktop.org/xorg/driver/xf86-input-fpit/ for the
++latest version of this driver.
+
+ License:
+
+@@ -52,73 +49,53 @@ Please visit http://XFree86.org for lice
+
+ Installation:
+
+-THIS RELEASE IS FOR XFree86 Version 4.0.2. Hopefully it will also work
+-with other Version 4 systems. The source is written so that hopefully
+-it can be compiled under 3.3.6 - THIS HAS NOT BEEN TESTED (yet).
+-
+-Copied from original xf86fpit.c readme:
+-
+ 1. Install and configure Linux w/o consideration of the digitizer tablet.
+ 2. Get X working the way you want it.
+-3. Add or Change your appropriate startup scripts to include:
++3. Set up a serial device to be initialized at startup.
++ Modify /etc/serial.conf if your distribution uses it. Otherwise
++ add or modify your appropriate startup scripts to include:
+
+ setserial /dev/ttyS3 autoconfig
+-setserial /dev/ttyS3 IRQ 15 baud_base 115200
+-(Some models may also have to specify: port 0xfce8)
++setserial /dev/ttyS3 port ??? IRQ ?? baud_base 115200 [uart 16450]
+
+-
+-New/Different for Ver 4.0.2
++The uart setting may be necessary for the device to work.
++See below for appropriate port/IRQ values.
+
+ 4. Copy fpit_drv.o to /usr/X11R6/lib/modules/input
+
+-5. Add the following to your XF86Config(-4) file:
++5. Add the following to your X config file (XF86Config/XF86Config-4/xorg.conf)
+
+ Section "InputDevice"
+ Identifier "mouse0"
+ Driver "fpit"
+ Option "Device" "/dev/ttyS3"
++ # These may need tweaking; see below.
+ Option "BaudRate" "19200"
+ Option "MaximumXPosition" "6250"
+ Option "MaximumYPosition" "4950"
+ Option "MinimumXPosition" "130"
+ Option "MinimumYPosition" "0"
+ Option "InvertY"
++ # For a passive pen, e.g. Stylistic 3400
++ Option "Passive"
+ EndSection
+
+ 6. Remember to add this Input Device to the server description (Near the end of the file.)
+
+ 7. Start or restart X.
+
+-8. If required adjust the Min/Max X/Y positions so that the pointer
++8. If required adjust the baud rate and Min/Max X/Y positions so that the pointer
+ tracks the pen correctly.
+
++For Fujitsu Stylistic xx00 models, try IRQ 15, with port either unspecified
++ or set to 0xfce8.
+
+-New for Ver 4.5.0
+-
+- * supports Stylistic 3400 (and possibly other passive-pen systems)
+- * Fixed processing of all packets
+- * Fixed hover-mode pointer movement
+- * Added Passive parameter for passive displays
+- * Added switch 3 for "right" mouse button
+-
+-Try this serial configuration for the 3400:
++For Fujitsu Stylistic 3400 models, try IRQ 4 and port 0xfd68.
++ Recommended X config settings are BaudRate 9600, Min X/Y 0, MaxX 4070, MaxY 4020.
+
+-setserial /dev/ttyS3 autoconfig
+-setserial /dev/ttyS3 uart 16450 irq 5 port 0xfd68
+-
+-Try this config for the 3400:
+-Section "InputDevice"
+- Identifier "mouse0"
+- Driver "fpit"
+- Option "Device" "/dev/ttyS3"
+- Option "BaudRate" "9600"
+- Option "Passive"
+- Option "MaximumXPosition" "4070"
+- Option "MaximumYPosition" "4020"
+- Option "MinimumXPosition" "0"
+- Option "MinimumYPosition" "0"
+- Option "SendCoreEvents"
+-EndSection
++In general you may wish to consult /proc/ioports or /sys/devices/pnp0/*
++(under Linux 2.6) for serial information. BaudRate should generally be 9600,
++19200, or 38400.
+
+
+ Hints if you are having problems (Thanks to Aron Hsiao):
+@@ -135,6 +112,8 @@ This should be re-stating the defaults,
+ to be an XFree86 4.x bug.
+
+ Problem 2: X Server crash during GUI startup (Particularly Gnome).
++ Or: programs using high-resolution pen tracking via XInput
++ don't work.
+
+ Solution: You must have a regular mouse defined as the default pointer
+ even if no mouse is used. During startup, Gnome attempts to
+@@ -142,6 +121,10 @@ Solution: You must have a regular mous
+ pendrivers are absolute pointers, and acceleration is meaningless,
+ they do not take well to attempts to set it :-)
+
++ Additionally, setting the tablet as a core pointer prevents X
++ from sending XInput events. This lowers the pen-tracking
++ resolution available to programs by 1 or 2 orders of magnitude!
++
+ Problem 3: Jittery cursor and undesired mouse clicks (both buttons),
+ particuarly on the Stylistic 1200, and particuarly after the
+ system has warmed up.
+@@ -152,6 +135,9 @@ Solution: (Not really a solution) This
+ actively using it extends battery life, and keeps the system from
+ getting too hot.
+
++ If cursor movement seems completely random and mouse clicks seem
++ inexplicable, your baud rate may be set incorrectly.
++
+ Bugs and Needed Work:
+
+ (See above)
+diff --git a/src/xf86Fpit.c b/src/xf86Fpit.c
+index b7a9a60..d0b9fe3 100644
+--- a/src/xf86Fpit.c
++++ b/src/xf86Fpit.c
+@@ -63,8 +63,6 @@
+
+ # include <misc.h>
+ # include <xf86.h>
+-# if !defined(DGUX)
+-# endif
+ # include <xf86_OSproc.h>
+ # include <xf86Xinput.h>
+ # include <exevents.h>
+@@ -79,7 +77,6 @@
+ *
+ ***************************************************************************
+ */
+-#define FPIT_LINK_SPEED B19200 /* 19200 Baud */
+ #define FPIT_PORT "/dev/ttyS3"
+
+ #define FPIT_MAX_X 4100
+@@ -87,19 +84,6 @@
+ #define FPIT_MAX_Y 4100
+ #define FPIT_MIN_Y 0
+
+-#define PHASING_BIT 0x80
+-#define PROXIMITY_BIT 0x20 /* DMC: This was 0x40 but the chart says its bit 5 which is 0x20 */
+-/*#define TABID_BIT 0x20 */
+-#define XSIGN_BIT 0x10
+-#define YSIGN_BIT 0x08
+-#define BUTTON_BITS 0x07
+-#define COORD_BITS 0x7f
+-
+-/* DMC: Added these */
+-#define SW1 0x01
+-#define SW2 0x02
+-#define SW3 0x04
+-
+
+ /*
+ ***************************************************************************
+@@ -123,8 +107,6 @@ typedef struct {
+ int screen_width;
+ int screen_height;
+ int screen_no;
+- int fpitInc; /* increment between transmits */
+- int fpitButTrans; /* button translation flags */
+ int fpitOldX; /* previous X position */
+ int fpitOldY; /* previous Y position */
+ int fpitOldProximity; /* previous proximity */
+@@ -135,10 +117,7 @@ typedef struct {
+ int fpitMaxY; /* max Y value */
+ int fpitInvX; /* Invert X axis */
+ int fpitInvY; /* Invert Y axis */
+- int fpitRes; /* resolution in lines per inch */
+- int flags; /* various flags */
+ int fpitIndex; /* number of bytes read */
+- int fpitBaud; /* Baud rate of device */
+ unsigned char fpitData[BUFFER_SIZE]; /* data read on the device */
+ int fpitSwapXY; /* swap X and Y values */
+ int fpitPassive; /* translate passive buttons */
+@@ -209,37 +188,45 @@ static void xf86FpitReadInput(LocalDevic
+
+ priv->fpitIndex += len;
+
+- /* process each packet in this block */
+- for (loop=0;loop+FPIT_PACKET_SIZE<=priv->fpitIndex;loop++) {
+- if (!(priv->fpitData[loop] & 0x80)) continue; /* we don't have a start bit yet */
+
++#define PHASING_BIT 0x80
++#define PROXIMITY_BIT 0x20
++#define BUTTON_BITS 0x07
++#define SW1 0x01
++#define SW2 0x02
++#define SW3 0x04
++
++ /* process each packet in this block */
+ /* Format of 5 bytes data packet for Fpit Tablets
+ Byte 1
+- bit 7 Phasing bit always 1
+- bit 6 Switch status change
+- bit 5 Proximity
+- bit 4 Always 0
+- bit 3 Test data
+- bit 2 Sw3 (2nd side sw)
+- bit 1 Sw2 (1st side sw)
+- bit 0 Sw1 (Pen tip sw)
++ bit 7 (0x80) Phasing bit always 1
++ bit 6 (0x40) Switch status change
++ bit 5 (0x20) Proximity
++ bit 4 (0x10) Always 0
++ bit 3 (0x08) Test data
++ bits 2-0 (0x07) Buttons:
++ bit 2 (0x04) Sw3 (2nd side sw)
++ bit 1 (0x02) Sw2 (1st side sw)
++ bit 0 (0x01) Sw1 (Pen tip sw)
+
+ Byte 2
+- bit 7 Always 0
+- bits 6-0 = X6 - X0
++ bit 7 (0x80) Always 0
++ bits 6-0 (0x7f) X6 - X0
+
+ Byte 3
+- bit 7 Always 0
+- bits 6-0 = X13 - X7
++ bit 7 (0x80) Always 0
++ bits 6-0 (0x7f) X13 - X7
+
+ Byte 4
+- bit 7 Always 0
+- bits 6-0 = Y6 - Y0
++ bit 7 (0x80) Always 0
++ bits 6-0 (0x7f) Y6 - Y0
+
+ Byte 5
+- bit 7 Always 0
+- bits 6-0 = Y13 - Y7
++ bit 7 (0x80) Always 0
++ bits 6-0 (0x7f) Y13 - Y7
+ */
++ for (loop=0;loop+FPIT_PACKET_SIZE<=priv->fpitIndex;loop++) {
++ if (!(priv->fpitData[loop] & PHASING_BIT)) continue; /* we don't have a start bit yet */
+
+ x = (int) (priv->fpitData[loop + 1] & 0x7f) + ((int) (priv->fpitData[loop + 2] & 0x7f) << 7);
+ y = (int) (priv->fpitData[loop + 3] & 0x7f) + ((int) (priv->fpitData[loop + 4] & 0x7f) << 7);
+@@ -256,7 +243,7 @@ static void xf86FpitReadInput(LocalDevic
+ xf86FpitConvert(local, 0, 2, x, y, 0, 0, 0, 0, &conv_x, &conv_y);
+ xf86XInputSetScreen(local, priv->screen_no, conv_x, conv_y);
+
+- /* coordonates are ready we can send events */
++ /* coordinates are ready we can send events */
+
+ if (prox!=priv->fpitOldProximity) /* proximity changed */
+ if (!is_core_pointer) xf86PostProximityEvent(device, prox, 0, 2, x, y);
+@@ -268,9 +255,7 @@ static void xf86FpitReadInput(LocalDevic
+ /*
+ For passive pen (Stylistic 3400, et al.):
+ sw1 = 1 if pen is moving
+- sw1 = 0 if pen is not moving
+- sw2 = 0 if pen is contacting the pad
+- sw2 = 1 if pen was lifted from the pad
++ sw2 = 1 if pen was lifted from the pad / isn't in contact
+ sw3 = 1 if right mouse-button icon was chosen
+ */
+ /* convert the pen button bits to actual mouse buttons */
+@@ -378,7 +363,7 @@ static Bool xf86FpitControl(DeviceIntPtr
+ * screen to fit one meter.
+ */
+ if (InitValuatorClassDeviceStruct(dev, 2, xf86GetMotionEvents, local->history_size, Absolute) == FALSE) {
+- ErrorF("Unable to allocate Elographics touchscreen ValuatorClassDeviceStruct\n");
++ ErrorF("Unable to allocate Fpit touchscreen ValuatorClassDeviceStruct\n");
+ return !Success;
+ } else {
+ InitValuatorAxisStruct(dev, 0, priv->fpitMinX, priv->fpitMaxX, 9500, 0 /* min_res */ ,
+@@ -542,13 +527,13 @@ static InputInfoPtr xf86FpitInit(InputDr
+ xf86Msg(X_CONFIG, "FPIT device name: %s\n", local->name);
+ priv->screen_no = xf86SetIntOption(local->options, "ScreenNo", 0);
+ xf86Msg(X_CONFIG, "Fpit associated screen: %d\n", priv->screen_no);
+- priv->fpitMaxX = xf86SetIntOption(local->options, "MaximumXPosition", 4100);
++ priv->fpitMaxX = xf86SetIntOption(local->options, "MaximumXPosition", FPIT_MAX_X);
+ xf86Msg(X_CONFIG, "FPIT maximum x position: %d\n", priv->fpitMaxX);
+- priv->fpitMinX = xf86SetIntOption(local->options, "MinimumXPosition", 0);
++ priv->fpitMinX = xf86SetIntOption(local->options, "MinimumXPosition", FPIT_MIN_X);
+ xf86Msg(X_CONFIG, "FPIT minimum x position: %d\n", priv->fpitMinX);
+- priv->fpitMaxY = xf86SetIntOption(local->options, "MaximumYPosition", 4100);
++ priv->fpitMaxY = xf86SetIntOption(local->options, "MaximumYPosition", FPIT_MAX_Y);
+ xf86Msg(X_CONFIG, "FPIT maximum y position: %d\n", priv->fpitMaxY);
+- priv->fpitMinY = xf86SetIntOption(local->options, "MinimumYPosition", 0);
++ priv->fpitMinY = xf86SetIntOption(local->options, "MinimumYPosition", FPIT_MIN_Y);
+ xf86Msg(X_CONFIG, "FPIT minimum y position: %d\n", priv->fpitMinY);
+ priv->fpitInvX = xf86SetBoolOption(local->options, "InvertX", 0);
+ priv->fpitInvY = xf86SetBoolOption(local->options, "InvertY", 0);
diff --git a/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update2.diff b/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update2.diff
new file mode 100644
index 000000000000..120db6e4b533
--- /dev/null
+++ b/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update2.diff
@@ -0,0 +1,30 @@
+commit 979c283a6ecb1ba718790a147b3e910a106cb473
+Author: Justin Blanchard <justinb04@aim.com>
+Date: Tue Jan 30 20:13:52 2007 -0500
+
+ update from Justin Blanchard - part 2
+
+ * Fix a bug that prevents active-pen users from right-clicking while hovering.
+ * Bug was introduced with passive pen support; fix is simple and has been
+ recommended in forums since Oct 2006
+ (http://ubuntuforums.org/showpost.php?p=1620646&postcount=15).
+ For some reason I don't see a bug report for the issue.
+
+diff --git a/src/xf86Fpit.c b/src/xf86Fpit.c
+index d0b9fe3..636d6d0 100644
+--- a/src/xf86Fpit.c
++++ b/src/xf86Fpit.c
+@@ -262,11 +262,9 @@ static void xf86FpitReadInput(LocalDevic
+ if (buttons & SW2) buttons=0; /* the pen was lifted, so no buttons are pressed */
+ else if (buttons & SW3) buttons=SW3; /* the "right mouse" button was pressed, so send down event */
+ else if (prox) buttons=SW1; /* the "left mouse" button was pressed and we are not hovering, so send down event */
+- else buttons=0; /* We are in hover mode, so no buttons */
+- }
+- else { /* the active pen's buttons map directly to the mouse buttons */
+- if (!prox) buttons=0; /* We are in hover mode, so no buttons */
++ else buttons=0; /* We are in hover mode, so not left-clicking. */
+ }
++ /* the active pen's buttons map directly to the mouse buttons. Right-click may happen even in hover mode. */
+
+ /* DBG(2, ErrorF("%02d/%02d Prox=%d SW:%x Buttons:%x->%x (%d, %d)\n",
+ loop,priv->fpitIndex,prox,priv->fpitData[loop]&BUTTON_BITS,priv->fpitOldButtons,buttons,x,y));*/
diff --git a/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update3.diff b/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update3.diff
new file mode 100644
index 000000000000..a232a9d8631e
--- /dev/null
+++ b/x11-drivers/xf86-input-fpit/files/xf86-input-fpit-update3.diff
@@ -0,0 +1,355 @@
+commit cb6adfe32f929e57eedcab189e9f359fc9e970ab
+Author: Justin Blanchard <justinb04@aim.com>
+Date: Tue Jan 30 20:15:50 2007 -0500
+
+ update from Justin Blanchard - part 3
+
+ * Adds support for detecting/responding to screen resize and rotate events
+ (i.e., fixing bug 3421 for FPIT users). This corrects both cursor-related and
+ extended events.
+ * The fix is disabled unless the user adds 'Option "TrackRandR"' to the
+ InputDevice section. This is to avoid breaking setups where some nightmarish
+ workaround was already in place.
+ * Use of RRGetRotation may break driver under XFree86. If this is a problem I
+ think xf86GetRotation can be used instead.
+
+diff --git a/man/fpit.man b/man/fpit.man
+index 4964dbe..1809d2b 100644
+--- a/man/fpit.man
++++ b/man/fpit.man
+@@ -80,6 +80,7 @@ Swap the X and Y axis (after inversions)
+ .B Option \fI"Rotate"\fP \fI"CWW"\fP
+ Manipulate the invert and swap options to match screen
+ rotations. (Will behave strangely if combined with invert or swap options.)
++New users should consider the \fI"TrackRandR"\fP option instead.
+ .TP 4
+ .B Option \fI"DeviceName"\fP \fI"name"\fP
+ .B Option \fI"DeviceName"\fP \fI"name"\fP
+@@ -101,6 +102,9 @@ changes the serial link speed.
+ .TP 4
+ .B Option \fI"Passive"\fP
+ decodes the passive pen.
++.B Option \fI"TrackRandR"\fP
++automatically keeps the cursor synchronized with the pen's position, even when
++the screen is resized or rotated. (Recommended for tablet PC's.)
+ .RE
+
+ Example, for Stylistic LT setup is:
+@@ -109,6 +113,7 @@ Example, for Stylistic LT setup is:
+ .BI " Identifier \*q" mouse0 \*q
+ .B " Driver \*qfpit\*q"
+ .BI " Option \*qDevice\*q \*q"/dev/ttyS3 \*q
++.BI " # Option \*qTrackRandR\*q"
+ .B EndSection
+ .fi
+
+@@ -124,6 +129,7 @@ And for other Stylistic devices try:
+ .BI " Option \*qMinimumXPosition\*q \*q"130 \*q
+ .BI " Option \*qMinimumYPosition\*q \*q"0 \*q
+ .BI " Option \*qInvertY\*q"
++.BI " # Option \*qTrackRandR\*q"
+ .B EndSection
+ .fi
+
+@@ -140,6 +146,7 @@ For Stylistic 3400:
+ .BI " Option \*qMinimumYPosition\*q \*q"0 \*q
+ .BI " Option \*qPassive\*q"
+ .BI " Option \*qSendCoreEvents\*q"
++.BI " # Option \*qTrackRandR\*q"
+ .B EndSection
+ .fi
+
+diff --git a/readme.txt b/readme.txt
+index 075c52e..3e6051c 100644
+--- a/readme.txt
++++ b/readme.txt
+@@ -78,6 +78,9 @@ Section "InputDevice"
+ Option "InvertY"
+ # For a passive pen, e.g. Stylistic 3400
+ Option "Passive"
++ # To make the touchscreen respond automatically to
++ # resolution changes and screen rotation:
++ Option "TrackRandR"
+ EndSection
+
+ 6. Remember to add this Input Device to the server description (Near the end of the file.)
+@@ -142,8 +145,6 @@ Bugs and Needed Work:
+
+ (See above)
+
+-X rotation (Portrait mode is not supported). -- I plan to add this soon.
+-
+ Adjusting the constants in the XF86Config(-4) is teedious and requires
+ multiple restarts of the X Window system. -- Somebody PLEASE write a
+ calibration program !
+diff --git a/src/xf86Fpit.c b/src/xf86Fpit.c
+index 636d6d0..99d8bdb 100644
+--- a/src/xf86Fpit.c
++++ b/src/xf86Fpit.c
+@@ -66,6 +66,7 @@
+ # include <xf86_OSproc.h>
+ # include <xf86Xinput.h>
+ # include <exevents.h>
++# include <randrstr.h>
+
+ # include <xf86Module.h>
+
+@@ -98,6 +99,20 @@
+ /*
+ ***************************************************************************
+ *
++ * Screen orientation descriptors.
++ *
++ ***************************************************************************
++ */
++
++typedef enum {
++ FPIT_INVERT_X = 0x01,
++ FPIT_INVERT_Y = 0x02,
++ FPIT_THEN_SWAP_XY = 0x04
++} FpitOrientation;
++
++/*
++ ***************************************************************************
++ *
+ * Device private records.
+ *
+ ***************************************************************************
+@@ -106,6 +121,7 @@ typedef struct {
+ char *fpitDev; /* device file name */
+ int screen_width;
+ int screen_height;
++ Rotation screen_rotation;
+ int screen_no;
+ int fpitOldX; /* previous X position */
+ int fpitOldY; /* previous Y position */
+@@ -115,12 +131,14 @@ typedef struct {
+ int fpitMinY; /* min Y value */
+ int fpitMaxX; /* max X value */
+ int fpitMaxY; /* max Y value */
+- int fpitInvX; /* Invert X axis */
+- int fpitInvY; /* Invert Y axis */
+ int fpitIndex; /* number of bytes read */
+ unsigned char fpitData[BUFFER_SIZE]; /* data read on the device */
+- int fpitSwapXY; /* swap X and Y values */
++ FpitOrientation fpitBaseOrientation; /* read from X config */
++ FpitOrientation fpitTotalOrientation; /* above + RandR */
+ int fpitPassive; /* translate passive buttons */
++ int fpitTrackRandR; /* check for, react to screen rotate/resize */
++ /* XXX when this last option is unset, we provide "compatibly stupid"
++ * behavior. */
+ } FpitPrivateRec, *FpitPrivatePtr;
+
+
+@@ -139,21 +157,73 @@ typedef struct {
+ static Bool xf86FpitConvert(LocalDevicePtr local, int first, int num, int v0, int v1, int v2, int v3, int v4, int v5, int *x, int *y)
+ {
+ FpitPrivatePtr priv = (FpitPrivatePtr) local->private;
++ AxisInfoPtr axes = local->dev->valuator->axes;
+ if (first != 0 || num != 2) {
+ return FALSE;
+ }
+
+- if (priv->fpitSwapXY != 0) {
+- *x = xf86ScaleAxis(v1, 0, priv->screen_width, priv->fpitMinY, priv->fpitMaxY);
+- *y = xf86ScaleAxis(v0, 0, priv->screen_height, priv->fpitMinX, priv->fpitMaxX);
+- } else {
+- *x = xf86ScaleAxis(v0, 0, priv->screen_width, priv->fpitMinX, priv->fpitMaxX);
+- *y = xf86ScaleAxis(v1, 0, priv->screen_height, priv->fpitMinY, priv->fpitMaxY);
+- }
++ *x = xf86ScaleAxis(v0, 0, priv->screen_width, axes[0].min_value, axes[0].max_value);
++ *y = xf86ScaleAxis(v1, 0, priv->screen_height, axes[1].min_value, axes[1].max_value);
++
+ return TRUE;
+ }
+
+ /*
++ ***************************************************************************
++ *
++ * xf86FpitSetUpAxes --
++ * Based on current screen resolution and, if RandR support is enabled,
++ * current rotation state, set up the XInput axes and orientation info.
++ *
++ ***************************************************************************
++ */
++
++static void xf86FpitSetUpAxes(DeviceIntPtr dev, FpitPrivatePtr priv)
++{
++ /*
++ * Device reports motions on 2 axes in absolute coordinates.
++ * Axes min and max values are reported in raw coordinates.
++ * Resolution is computed roughly by the difference between
++ * max and min values scaled from the approximate size of the
++ * screen to fit one meter.
++ */
++ int quarter_turns;
++
++ priv->screen_width = screenInfo.screens[priv->screen_no]->width;
++ priv->screen_height = screenInfo.screens[priv->screen_no]->height;
++
++ priv->fpitTotalOrientation = priv->fpitBaseOrientation;
++ if (!priv->fpitTrackRandR)
++ return;
++
++ /* now apply transforms specified by RandR:
++ * slightly complicated because invertX/Y and swapXY don't commute. */
++ priv->screen_rotation = RRGetRotation(screenInfo.screens[priv->screen_no]);
++ quarter_turns = (
++ (priv->screen_rotation & RR_Rotate_90 ? 1 : 0) +
++ (priv->screen_rotation & RR_Rotate_180 ? 2 : 0) +
++ (priv->screen_rotation & RR_Rotate_270 ? 3 : 0) ) % 4;
++ if (quarter_turns / 2 != 0)
++ priv->fpitTotalOrientation ^= FPIT_INVERT_X | FPIT_INVERT_Y;
++ if (quarter_turns % 2 != 0) {
++ priv->fpitTotalOrientation ^=
++ (priv->fpitTotalOrientation & FPIT_THEN_SWAP_XY ? FPIT_INVERT_X : FPIT_INVERT_Y)
++ | FPIT_THEN_SWAP_XY;
++ }
++
++ if (priv->fpitTotalOrientation & FPIT_THEN_SWAP_XY) {
++ InitValuatorAxisStruct(dev, 1, priv->fpitMinX, priv->fpitMaxX, 9500, 0 /* min_res */ ,
++ 9500 /* max_res */ );
++ InitValuatorAxisStruct(dev, 0, priv->fpitMinY, priv->fpitMaxY, 10500, 0 /* min_res */ ,
++ 10500 /* max_res */ );
++ } else {
++ InitValuatorAxisStruct(dev, 0, priv->fpitMinX, priv->fpitMaxX, 9500, 0 /* min_res */ ,
++ 9500 /* max_res */ );
++ InitValuatorAxisStruct(dev, 1, priv->fpitMinY, priv->fpitMaxY, 10500, 0 /* min_res */ ,
++ 10500 /* max_res */ );
++ }
++}
++/*
+ ** xf86FpitReadInput
+ ** Reads from the Fpit and posts any new events to the server.
+ */
+@@ -166,6 +236,13 @@ static void xf86FpitReadInput(LocalDevic
+ DeviceIntPtr device;
+ int conv_x, conv_y;
+
++ if (priv->fpitTrackRandR && (
++ priv->screen_width != screenInfo.screens[priv->screen_no]->width ||
++ priv->screen_height != screenInfo.screens[priv->screen_no]->height ||
++ priv->screen_rotation != RRGetRotation(screenInfo.screens[priv->screen_no])
++ ))
++ xf86FpitSetUpAxes(local->dev, priv);
++
+ do { /* keep reading blocks until there are no more */
+
+ /* Read data into buffer */
+@@ -230,11 +307,15 @@ static void xf86FpitReadInput(LocalDevic
+
+ x = (int) (priv->fpitData[loop + 1] & 0x7f) + ((int) (priv->fpitData[loop + 2] & 0x7f) << 7);
+ y = (int) (priv->fpitData[loop + 3] & 0x7f) + ((int) (priv->fpitData[loop + 4] & 0x7f) << 7);
+- /* Add in any offsets */
+- if (priv->fpitInvX)
++ /* Adjust to orientation */
++ if (priv->fpitTotalOrientation & FPIT_INVERT_X)
+ x = priv->fpitMaxX - x + priv->fpitMinX;
+- if (priv->fpitInvY)
++ if (priv->fpitTotalOrientation & FPIT_INVERT_Y)
+ y = priv->fpitMaxY - y + priv->fpitMinY;
++ if (priv->fpitTotalOrientation & FPIT_THEN_SWAP_XY) {
++ int z = x; x = y; y = z;
++ }
++
+ prox = (priv->fpitData[loop] & PROXIMITY_BIT) ? 0 : 1;
+ buttons = (priv->fpitData[loop] & BUTTON_BITS);
+ device = local->dev;
+@@ -334,8 +415,6 @@ static Bool xf86FpitControl(DeviceIntPtr
+ if (priv->screen_no >= screenInfo.numScreens || priv->screen_no < 0) {
+ priv->screen_no = 0;
+ }
+- priv->screen_width = screenInfo.screens[priv->screen_no]->width;
+- priv->screen_height = screenInfo.screens[priv->screen_no]->height;
+ /*
+ * Device reports button press for up to 3 buttons.
+ */
+@@ -353,22 +432,11 @@ static Bool xf86FpitControl(DeviceIntPtr
+ ErrorF("Unable to allocate PtrFeedBackClassDeviceStruct\n");
+ }
+
+- /*
+- * Device reports motions on 2 axes in absolute coordinates.
+- * Axes min and max values are reported in raw coordinates.
+- * Resolution is computed roughly by the difference between
+- * max and min values scaled from the approximate size of the
+- * screen to fit one meter.
+- */
+ if (InitValuatorClassDeviceStruct(dev, 2, xf86GetMotionEvents, local->history_size, Absolute) == FALSE) {
+ ErrorF("Unable to allocate Fpit touchscreen ValuatorClassDeviceStruct\n");
+ return !Success;
+- } else {
+- InitValuatorAxisStruct(dev, 0, priv->fpitMinX, priv->fpitMaxX, 9500, 0 /* min_res */ ,
+- 9500 /* max_res */ );
+- InitValuatorAxisStruct(dev, 1, priv->fpitMinY, priv->fpitMaxY, 10500, 0 /* min_res */ ,
+- 10500 /* max_res */ );
+ }
++ xf86FpitSetUpAxes(dev, priv);
+
+ if (InitFocusClassDeviceStruct(dev) == FALSE) {
+ ErrorF("Unable to allocate Fpit touchscreen FocusClassDeviceStruct\n");
+@@ -451,6 +519,7 @@ static LocalDevicePtr xf86FpitAllocate(I
+ priv->screen_no = 0;
+ priv->screen_width = -1;
+ priv->screen_height = -1;
++ priv->screen_rotation = RR_Rotate_0;
+ priv->fpitMinX = FPIT_MIN_X;
+ priv->fpitMaxX = FPIT_MAX_X;
+ priv->fpitMinY = FPIT_MIN_Y;
+@@ -459,7 +528,6 @@ static LocalDevicePtr xf86FpitAllocate(I
+ priv->fpitOldButtons = 0;
+ priv->fpitOldProximity = 0;
+ priv->fpitIndex = 0;
+- priv->fpitSwapXY = 0;
+ priv->fpitPassive = 0;
+ local->name = XI_TOUCHSCREEN;
+ local->flags = 0 /* XI86_NO_OPEN_ON_INIT */ ;
+@@ -533,29 +601,33 @@ static InputInfoPtr xf86FpitInit(InputDr
+ xf86Msg(X_CONFIG, "FPIT maximum y position: %d\n", priv->fpitMaxY);
+ priv->fpitMinY = xf86SetIntOption(local->options, "MinimumYPosition", FPIT_MIN_Y);
+ xf86Msg(X_CONFIG, "FPIT minimum y position: %d\n", priv->fpitMinY);
+- priv->fpitInvX = xf86SetBoolOption(local->options, "InvertX", 0);
+- priv->fpitInvY = xf86SetBoolOption(local->options, "InvertY", 0);
+- priv->fpitSwapXY = xf86SetBoolOption(local->options, "SwapXY", 0);
++
++ priv->fpitBaseOrientation = 0;
++ if (xf86SetBoolOption(local->options, "InvertX", 0))
++ priv->fpitBaseOrientation |= FPIT_INVERT_X;
++ if (xf86SetBoolOption(local->options, "InvertY", 0))
++ priv->fpitBaseOrientation |= FPIT_INVERT_Y;
++ if (xf86SetBoolOption(local->options, "SwapXY", 0))
++ priv->fpitBaseOrientation |= FPIT_THEN_SWAP_XY;
+ priv->fpitPassive = xf86SetBoolOption(local->options, "Passive", 0);
++ priv->fpitTrackRandR = xf86SetBoolOption(local->options, "TrackRandR", 0);
++ /* XXX "Rotate" option provides compatibly stupid behavior. JEB. */
+ str = xf86SetStrOption(local->options, "Rotate", 0);
+- if (!xf86NameCmp(str, "CW")) {
+- priv->fpitInvX = 1;
+- priv->fpitInvY = 1;
+- priv->fpitSwapXY = 1;
+- } else if (!xf86NameCmp(str, "CCW")) {
+- priv->fpitInvX = 0;
+- priv->fpitInvY = 0;
+- priv->fpitSwapXY = 1;
+- }
+- xf86Msg(X_CONFIG, "FPIT invert X axis: %s\n", priv->fpitInvX ? "Yes" : "No");
+- xf86Msg(X_CONFIG, "FPIT invert Y axis: %s\n", priv->fpitInvY ? "Yes" : "No");
+- xf86Msg(X_CONFIG, "FPIT swap X and Y axis: %s\n", priv->fpitSwapXY ? "Yes" : "No");
++ if (!xf86NameCmp(str, "CW"))
++ priv->fpitBaseOrientation |= FPIT_INVERT_X | FPIT_INVERT_Y | FPIT_THEN_SWAP_XY;
++ else if (!xf86NameCmp(str, "CCW"))
++ priv->fpitBaseOrientation |= FPIT_THEN_SWAP_XY;
++ xf86Msg(X_CONFIG, "FPIT invert X axis: %s\n", priv->fpitBaseOrientation & FPIT_INVERT_X ? "Yes" : "No");
++ xf86Msg(X_CONFIG, "FPIT invert Y axis: %s\n", priv->fpitBaseOrientation & FPIT_INVERT_Y ? "Yes" : "No");
++ xf86Msg(X_CONFIG, "FPIT swap X and Y axis: %s\n", priv->fpitBaseOrientation & FPIT_THEN_SWAP_XY ? "Yes" : "No");
+ xf86Msg(X_CONFIG, "FPIT Passive button mode: %s\n", priv->fpitPassive ? "Yes" : "No");
++ xf86Msg(X_CONFIG, "FPIT RandR tracking: %s\n", priv->fpitTrackRandR ? "Yes" : "No");
+ /* mark the device configured */
+ local->flags |= XI86_CONFIGURED;
+ return local;
+ }
+
++
+ _X_EXPORT InputDriverRec FPIT = {
+ 1, /* driver version */
+ "fpit", /* driver name */
diff --git a/x11-drivers/xf86-input-fpit/xf86-input-fpit-1.1.0-r1.ebuild b/x11-drivers/xf86-input-fpit/xf86-input-fpit-1.1.0-r1.ebuild
new file mode 100644
index 000000000000..b3397e5c213f
--- /dev/null
+++ b/x11-drivers/xf86-input-fpit/xf86-input-fpit-1.1.0-r1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-drivers/xf86-input-fpit/xf86-input-fpit-1.1.0-r1.ebuild,v 1.1 2007/05/13 17:47:22 joshuabaergen Exp $
+
+# Must be before x-modular eclass is inherited
+#SNAPSHOT="yes"
+
+inherit x-modular
+
+DESCRIPTION="Fujitsu Stylistic input driver"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
+RDEPEND=">=x11-base/xorg-server-1.0.99"
+DEPEND="${RDEPEND}
+ x11-proto/inputproto
+ x11-proto/randrproto
+ x11-proto/xproto"
+
+PATCHES="${FILESDIR}/${PN}-update1.diff
+ ${FILESDIR}/${PN}-update2.diff
+ ${FILESDIR}/${PN}-update3.diff"