CHANGES

- 0.3 - Created based off of scanner & INSTALL from the original touchscreen
  driver on freshmeat (http://freshmeat.net/projects/3mtouchscreendriver)
- Amended for linux-2.4.18, then 2.4.19

- 0.5 - Complete rewrite using Linux Input in 2.6.3
   Unfortunately no calibration support at this time

- 1.4 - Multiple changes to support the EXII 5000UC and house cleaning
   Changed reset from standard USB dev reset to vendor reset
   Changed data sent to host from compensated to raw coordinates
   Eliminated vendor/product module params
   Performed multiple successful tests with an EXII-5010UC

SUPPORTED HARDWARE:

        All controllers have the Vendor: 0x0596 & Product: 0x0001


        Controller Description          Part Number
        ------------------------------------------------------

        USB Capacitive - Pearl Case     14-205  (Discontinued)
        USB Capacitive - Black Case     14-124  (Discontinued)
        USB Capacitive - No Case        14-206  (Discontinued)

        USB Capacitive - Pearl Case     EXII-5010UC
        USB Capacitive - Black Case     EXII-5030UC
        USB Capacitive - No Case        EXII-5050UC

DRIVER NOTES:

Installation is simple, you only need to add Linux Input, Linux USB, and the 
driver to the kernel.  The driver can also be optionally built as a module.

This driver appears to be one of possible 2 Linux USB Input Touchscreen
drivers.  Although 3M produces a binary only driver available for
download, I persist in updating this driver since I would like to use the
touchscreen for embedded apps using QTEmbedded, DirectFB, etc. So I feel the
logical choice is to use Linux Input.

Currently there is no way to calibrate the device via this driver.  Even if
the device could be calibrated, the driver pulls to raw coordinate data from
the controller.  This means calibration must be performed within the
userspace.

The controller screen resolution is now 0 to 16384 for both X and Y reporting
the raw touch data.  This is the same for the old and new capacitive USB
controllers.

Perhaps at some point an abstract function will be placed into evdev so 
generic functions like calibrations, resets, and vendor information can be 
requested from the userspace (And the drivers would handle the vendor specific
tasks).

TODO:

Implement a control urb again to handle requests to and from the device
such as calibration, etc once/if it becomes available.

DISCLAIMER:

I am not a MicroTouch/3M employee, nor have I ever been.  3M does not support 
this driver!  If you want touch drivers only supported within X, please go to:

http://www.3m.com/3MTouchSystems/

THANKS:

A huge thank you to 3M Touch Systems for the EXII-5010UC controllers for
testing!
