William T. Jones
This site is great, and it's awesome to see the open source community help out. However, I have to point out that the Windows "How Wacom tablets work" isn't correct.
Here's the gist of what it is (at least for the Intuos and Cintiq lines):
When you buy a USB Wacom tablet, Wacom has two collections pre-loaded: a mouse and a Generic Digitizer collection. In the digitizer collection, all the usages, max, mins, etc., are blanked out. This is why Windows doesn't do anything: it doesn't know how to handle the data. The Wacom drivers come in as middleware to do MSB conversion and reporting, and other things.
This use of 'Generic Digitizer' causes a few issues for Cintiq users: Wacom seems to be using the HID Usage Page: 0xD and HID Usage: 0x1 for all intuos/cintiq lines. However, Cintiqs should be pre-loaded with the HID Usage Page: 0xD and Usage: 0x2 (Pen Usage for displays with integrated digitizers). This means that your Cintiq isn't properly treated as a 'TabletPC' but a monitor and a tablet. Since windows doesn't receive an input report from a collection with UP:D, U:2, it doesn't allow you to change your TabletPC Screen. This causes the familiar complaint of "I can't open the Tablet PC Input Panel when the Cintiq is not the primary screen!" Interestingly enough, the HID Usage Table specifications states that any technology that may or may not be integrated with a display should use the Generic Usage 0x1. The only problem is that When you look at the HID Descriptor, the Tablet Model Number (PTK-440, DTK-2100, etc.) and, of course, Product IDs are different. So, it is known beforehand that this technology is going into a integrated display.
I determined this by unloading my Wacom software and then using USBlyzer to check out the DTK-2100's Report Descriptors. To verify that users don't actually need the Wacom drivers on windows, I made a lightweight HID driver for the DTK-2100, and my Wacom stylus worked fine. I'm still implementing the ExpressKeys / Touchstrips. However, a MSB mismatch require the use of a driver to do byteswapping. (Unless I missed something in the USB HID Usage Table Spec)
Another thing I have noticed: I have a Fujitsu Lifebook T902 with a Wacom Digitizer & Touch Screen, and it runs with or without the Wacom software (different line, obviously), and it was about $2500 for the whole system. Unfortunately, for those who have the Cintiq line of monitors (12WX, 21UX [DTK & DTZ], etc.) their integrated digitizers are dependent on the drivers, and only works in mouse mode otherwise. This makes sense for the Intuos, since there is nothing to look at, but doesn't make sense for the Cintiq. A mouse is never included with the Cintiq, so why does it load up in mouse mode? With a price tag of $3400, it's disappointing that the Cintiq has less built-in capability than my Tablet PC. Let's be honest, a incredibly small user base is going NOT use the Wacom drivers (read: Me). The issue is though, that the Fujitsu T902 has a trackpad and a keyboard, but it still gets to use the digitizer by default.
To be fair, TabletPC digitizer input reports are submitted in little endian, while the Cintiqs/Intuos are input in Big Endian. The Cintiq/Intuos products have to have MSB conversion for windows to properly read the information.
Just to recap, the issue is with the on baord Intuos/Cintiq Report Descriptor, not the Windows HID subsystem.
Thanks for this maintaining linuxwacom, it was a invaluable resource when I was programming the Windows Wacom HID driver!