After trying to compose music with my Tablet Display, I soon began to realize that there was something 'off' about how the drivers functioned for non-Art Programs. For me it was trying to use Finale 2010, Sibelius 7, or Notion 3/4 without having fight the Manufacturer's driver.

My Dad bought me a Fujitsu Lifebook T902 as a gift for chasing my dreams and going to music school. It was a huge affirmation to me, because I'm married with three kids (fourth is on the way!). I remember getting frustrated with the tablet's performance in Sibelius & and a random Qt program I wrote. When I unloaded the driver, I expected the stylus to start performing in relative mode. To my surprise, it didn't. But I did notice that the cursor changed from an arrow to a cross-hair. I didn't know what to make of it at the time.

One day, I tried to use my tablet with NVIDIA's Mosaic Technology. It creates one logical monitor out of 2+ monitors of the same resolution. I had two monitors, and Wacom's driver worked just fine with NVIDIA's Mosaic Technology while the monitors were in landscape. (3200x1200) I could select between two physically different screens. When I configured the two screens for Portrait mode (I can see and edit a full score in landscape) the tablet driver could only detect the one logical screen. After writing up a thorough analysis of the situation, Wacom replied that this was too hard to support.

I ran into the "Tablet as a secondary monitor & Tablet Input Panel only shows on the Primary Monitor" when I bought a 30" monitor. I had avoided the issue by just using the Cintiq as my primary screen, even though I had a 1920x1200 Monitor. I called Wacom to explain the issue, and I was told that the "Tablet has two connections, one for the tablet, and one for the video signal. It's just a display with a Tablet interface." That's a great explanation about how the Cintiq works. So I explained that those two sources need to be associated together in Windows, and that I couldn't. He asked me to write something up for him, and so I did. What I found out was mind boggling.

I had been working on writing an HID mini-driver for Creative's Prodikeys MIDI USB Keyboard. I had been looking up all of the Usage Pages and Usages in the HID Usage Table (HUT) just to see what they encompassed. I was fascinated when I came across the Digitizer Page (0xD), because everything that was related to a stylus/EMR device, I noticed something similar in the WinTab32 API. I also found these two definitions:
  • Usage 0x1 - Digitizer: A device that measures absolute spatial position, typically in two or more dimensions. This is a generic usage; several specialized types of digitizers are distinguished by their attributes.
  • Usage 0x2 - Pen: A digitizer with an integrated display that allows use of a stylus. The system must ensure that the sensed stylus position and the display representations of that position are the same. A pen digitizer has enough time and space resolution for handwriting input. A digitizer that may or may not be in an integrated display application should use the more generic Digitizer collection usage.

I was curious what my Cintiq used for its device descriptor, and so I unloaded my Cintiq drivers, and looked at the HID Report Descriptor (using USBLyzer). It turns out that the Cintiq has only two collections that it naturally reports: a Mouse collection (UP:0, U:1), and a Generic Digitizer collection (UP:D, U:1). On top of that, the Cintiq’s report descriptor is void of any stylus positioning data. Take a look for yourself: DTK-2100 Baked in Report Descriptor

Intrigued, I reload the Wacom driver and looked in the device manager to see what the devices were reported. There was a mouse, a Digitizer Collection, a Pen Collection and a Vendor Defined collection. It seemed that Wacom was serious when they called that their driver the WacomHIDRouter. I tried setting the primary tablet again with my Cintiq as the primary screen, and noticed I still couldn't set it. And that's when it hit me: Microsoft is following the HID Usage Tables by only allowing a D2 device (Integrated Tablet and Display) to set the Tablet PC display--it won't matter for a digitizing device that doesn’t have an integrated display.

That made me a little annoyed, but I was more annoyed when I purchased an Intuos4 Small to see what Intuos4 Customers had available (Intuos4 and Cintiq 21UX g2 are the same 'family') and noticed that not only were there more options available, a lot of the options for the Cintiq that had questionable relevance made sense for the Intuos. At this point, in my opinion, I realized the Cintiq is just an Intuos with a screen added to it.

However, it actually isn't. The Cintiq can't use the Lens Cursor (cross-hair is transparent), or mouse cursor. When the Lens Cursor is brought into proximity, its cursor ID and serial number are transmitted just fine, however, the tablet reports the location information as a mouse cursor. The buttons are not detected either, so the Cintiqs are using a ‘disabled’ version of the Intuos Digitizer. Another interesting thing I found is that when my 21UX (DTK-2100) had a mouse or lens cursor within its proximity, the 21UX would actually lock up, and not transmit anymore information until I cycled the power. If you're wondering how I found out about the Lens Cursor w/ Cintiqs, I also have a 24HD Touch. The Intuos4 Large has an active area of 12.8"x8". The 24HD has an active area of 20.4" x 12.8". Yes, you read that right, the 24HD's active area height is the same as the width of Intuos4 L's active area; however, the 24HD cannot use the Lens cursor. If it were simply blocked by software from Wacom, that would be one thing, however, the hardware is physically different from that of the Intuos.

Where am I going with this? The HID Usage Table states that if a digitizer may or may not be integrated into it should be assigned the generic Digitizer usage. This would make sense if Wacom was exporting the digitizers to other companies to use. However, my Fujitsu T902 is actually using a Wacom Digitizer (Touch and Pen) and it identifies itself as a Pen Digitizer. When Wacom manufactures these Display Tablets, they know that this digitizer is going into a Cintiq. When they loaded the descriptor into the Cintiq they know that VID 0x56A and PID 0xCC is going to be a Cintiq 21UX (DTK-2100), and that 0xF8 is going to be a 24HD. My point is that they know this is going to be an integrated pen tablet display, and yet they act like it's not going to be. If there is any question about whether it should be a generic digitizer, just try to remove the digitizer interface from inside your Cintiq, and use it like an Intuos. Oh wait, you can't.

There is, however, a 'good' reason for them to use the generic digitizer usage. One of the big things that Wacom likes let people do is change screens. When using the D1 collection, Microsoft Windows automatically maps the entire screen to the digitizer. This allows Wacom to force the input to certain regions and make it line up on the screen. It's sort of clever, but it would work better if they actually routed the input into the D2 Collection on their driver instead of leaving it as a D1. Also, their calibration only ever has 4 points, which is terrible at getting data for their digitizers. When using Windows's Calibration, and adding more points, I was able to get accurate input all the time—even at the corners of the display.

After determining all of this, I looked at the Wacom Engineering Page (Developer Relations), and noticed that on the Windows Page they had this written:
  • Currently, Wacom ships a higher-end, professional tablet series called Intuos and a consumer tablet series named Bamboo. Wacom's web site at http://www.wacom.com describes in detail the models that Wacom currently sells.

Notice there is no mention (in that statement) about the Cintiq. As a matter of fact, the only time "Cintiq" appears is when Wacom mentions that it is not capable of Dual-Track cursors. At this point, my perception became that the Intuos is given better treatment than the Cintiq. The Intuos 5L is approx $500. (Intuos 4XL is $789). The Cintiqs start at $999 (12WX & 13HD were/are that price when bought new). A lot of things I've noticed about the Cintiq driver actually made sense when considering the Cintiq the 'afterthought'. The Cintiq & Intuos have a 'precision' mode you can enable. That makes great sense for the Intuos since the whole tablet is mapped to the screen by default. However, when using this on the Cintiq, this is pretty counter-productive. Zooming in would actually be more effective than 'precision' mode. The whole reason for buying a Cintiq is to work directly on screen, and by using precision mode, I am now interacting with the Cintiq as if it were an Intuos Tablet.

As I was writing this driver, I also noticed something quite disconcerting. I was having a hard time getting my first driver to read in the coordinates, until I realized that it was in MSB Format! (Big Endian). If you don’t know what that means, take a look at Wikipedia before continuing on.

Okay, so the tablets are transmitting data in big endian format. The USB HID Specification states:
  • 5.8 Format of Multibyte Numeric Values: Multibyte numeric values in reports are represented in little-endian format, with the least significant byte at the lowest address. The Logical Minimum and Logical Maximum values identify the range of values that will be found in a report. If Logical Minimum and Logical Maximum are both positive values then a sign bit is unnecessary in the report field and the contents of a field can be assumed to be an unsigned value. Otherwise, all integer values are signed values represented in 2’s complement format. Floating point values are not allowed. The least significant bit in a value is stored in bit 0, the next more significant in bit 1 and so on up to the size of the value.

Well, that basically means that none of the Wacom devices geared toward professionals are actually HID/USB compliant for their purchased function/feature. (Intuos & Cintiq).

Recently, a company that does Apple software development hired me, and a lot of these seemingly nonsensical design features suddenly made sense. Creative professionals generally target Apple platforms, Apple only provides a basic tablet interface (D1) and Apple doesn’t really have a diverse infrastructure to support Pen & Touch on the desktops. After all, that’s what iOS is for. (Note: Apple does have event support for Tablet & Touch events on OS X).

I also noticed on my Windows Machine that the icon that is used to represent application specific settings before the application is actually used is the generic Mac (OSX/Cocoa) icon for an Application that didn’t load an image into its XIB/NIB!

Microsoft has had tablet information integrated closer to its positioning/cursor core with each OS since XP TabletPC Edition. Windows 8 made it a first class device by allowing developers to access the information from the pen tablets without having to make OLE calls. I can use Windows messages (WM_POINTERXXX), get all the positioning information I need from my stylus—as long as it’s reported correctly. You don’t need WinTab on Window’s for Cintiqs, but everyone thinks they do because no one wants to trust Microsoft, when Wacom’s drivers are doing a much greater disservice to all of its Windows clients.

Now, that is my opinion based on what I’ve seen, and it is just that: My Opinion. But it is based evidence acquired by using my device.

http://www.engadget.com/video/5min/518080367
A Quote from the CEO of Wacom:
“The day of hardware is over—you have to have good application support!”
It starts, Mr. CEO, with well written drivers.

3 March 2014 - Update:
After checking to make sure my rotation report was working correctly, I found out it wasn't. So I did some digging to see what Wacom's driver did. Here's a snippet of it:

07 20 E4 40 EB 39 9A 03 00 00 00 00 F8 11 78 05 8D 10 DC 62 8C 73 04 48 E1 4D 80 24
07 20 F8 40 B0 39 9A 03 00 00 00 00 F8 11 78 05 8D 10 DC 62 AC 58 04 48 E1 4D 80 24
07 20 03 41 9D 39 8E 03 00 00 00 00 94 11 78 05 EC 10 B8 62 AC 58 04 48 E1 4D 80 24
07 20 04 41 81 39 8E 03 00 00 00 00 94 11 78 05 EC 10 B8 62 AC 58 04 48 E1 4D 80 24
07 20 04 41 43 39 82 03 00 00 00 00 94 11 78 05 EC 10 B8 62 AC 58 04 48 E1 4D 80 24


Here is an analysis of the report packets:

WacomACTUALInputReport.png

An interesting discovery here is that Wacom is limiting the reported input of the tablets to 0x7FFF. I know this because I actually ran into this problem myself. The 21UX digitizer can detect 5080 lines per inch, and this means that it can detect 2000 lines per centimeter, or 2 points per millimeter (Asia does a lot of things by mm. They, by and large, follow SI well). But, for the sake of simplicity, the Cintiq transmits the location halved ( X >> 1) which is easy to reverse. So, my 21UX outputs an X MAXIMUM value of approximately 0xA8E8 which is 43.240cm. When I (finally) generated a working report descriptor, it reported an unsigned value for the X Max, but when I was dragging my cursor across the Cintiq, I noticed my cursor disappeared and my selection box was still there, but it now filled from where my stylus started to drag and ended in the opposite direction. It was at the same spot, so I measured the location. it came up to around 32.5cm and some change (I was using a tape measure after all.) So I thought, 32.5 ... 32.5... 32.5... 32---32768!!! I clicked on the desktop and noticed the input 'surface waves' happened at the right spot, but somewhere in the cursor input stack, it was expecting a signed value, and took the cursor to wrong location! I messed around with a few things, but found that if I have the X and Y report size set to 32-bits, everything works properly. All that to say if your screen has a dimension larger than 32.767 centimeters, you aren't getting all of the resolution after all. Actually, doesn't matter what tablet you have, it all gets scaled up or down to the reported maximum of 0x7FFF. So, that Intuos4 Small? Yep, still reports the same size max value. This is how Wacom can use one driver for EVERY tablet they produce. Generally, the only time anything specific about a tablet is reported, is when you are using the WinTab interface.

Another interesting thing to note is that when are using a Cintiq, every display that you attach in addition to that Cintiq decreases the amount of tablet input mapped to that screen. For instance, if you have 21UX attached as the only display, it's entire reported digitizer range will be mapped to just that screen (0x7FFF by 0x7FFF). However, remember that Windows maps the entire virtual desktop to the input of a External Pen Digitizer (which is how Cintiqs report their information). So If I add a 30" WQXGA (2560x1600), I lose some fidelity. No big deal right? Well, that's until I add 2 UXGA displays in portrait to flank the 30", in addition to my Cintiq (positioned below the 30" display). After crunching a few numbers, only 22% of the reported X range and about 44% of my Y range is allocated to my Cintiq. When I select which display I should use with my Cintiq, Wacom forces the input from my digitizer to the values that Windows has allocated for my display.

So, now I know why it was so 'Hard' to make the Cintiqs work with multi-Display technology.

To be honest, I initially limited my tablet driver to 0x7FFF and 0x5FFF as well, but as soon as I wanted to integrate Pan & Scan functionality, I stopped and figured out how to use of all of my Cintiq's bits without having to scale the input. There are times when you need to scale the input, but that should not be default behavior.

Last edited Jan 4, 2015 at 5:17 AM by DigitalExegete, version 28