New plans for wintab work.

Aric Stewart aric at
Sun Apr 27 20:51:10 CDT 2003

Hi Rob,

Sorry for the delay before. I took friday off and have has a busy weekend.

> If Aric's pach is considered ready to go into CVS, then I can
> start working on this in the following areas:

Alexandre makes this call :)

> Painter support.
>     I beleive there are some problems getting Painter to work with    
>     wintab.
>     This is my priority.

This would be awesome. I banged my head against it for a while before 
moving on, where I am. It looks like it has to do with timing for the 
button messages and the information in the tablet packets. Under windows 
we receive a WM_LBUTTONDOWN message significantly before we seen any 
normal pressure or value in the pkButton field of the packet. Similarly 
the button up  come right when the pressure and pkButton field are cleared.

However under X, we get normal pressure until the threshold value before 
generating the Button event. additionally the button up can occurs while 
normal pressure is still around. I think this is confusing Painter 
because it gets caught inside of a IsButtonDown function and often gets 
very confused if the button is down or not.

> Additional configuration for wintab.
>     Aric's wintab reqires no configuration.
>     It is only targeted at Intuos tablets.
>     My implementation was to have a zero config default
>     for the intuos2 tablet, similar to Aric's.
>     Config could be provided where necessary to
>     modify how an intuos tablet is seen by wintab,
>     or to allow other tablet types to be used by wintab.
>     I could merge this work into Aric's implementation.
>     This would require significant re-factoring of Aric's
>     data structs to match the more generic data structs I
>     implemented.

I tried to keep the data structures as generic as possible. They are all 
taken directly from the wintab 1.1 api specification on the web. I tried 
the fill most of the structures as generically as possible based on 
information I can gleed from the drv_wacom.o implementation for XFree86-4

The areas where i had questions i did comparisons with the windows 
programs with the same intuos2 tablet i was working on under linux. So 
those areas may be a bit more specific.

I am pretty sure that most any other wacom tablets would work. I do not 
know if anyone has tested any other wintab devices but I would be very 
curious how they would work.

Sort of the biggest trick i had to play was with the cursor ID numbering.

If you look at these faqs i wrote up for CrossOver Office 2.0 you can see.

I was tempted to make the cursor IDs a value in a config file but 
thought it would just be best to try to avoid having to do much work in 
the config file.

> I may not have too much time to do work for the next 3 weeks,
> but I'd hope to make some progress on the painter side.

That would be great. I also hope that you find it works well for you and 

Other areas that are "less than perfect"

*) None of the manager functions are there.

*) All contexts are basically CXO_SYSTEM contexts. this means that the 
applications always get the mouse moves and button events for the 
tablet. This is find for Photoshop and painter because they both want 
CXO_SYSTEM contexts. But under windows you can have contexts where the 
application does not get the mouse events for the tablet. only the 
tablet messages.

*) nothing is implemented for relative mode packets. All the data is 
presented in absolute mode.

*) a number of things are not implemented such as tangent pressure, and 
other axis that the intous tablet does not have.

*) I am not particularly happy with the way that the packet data is 
communicated from the x11drv layer to the wintab32 layer. Also i think 
the way i handle the packet queues is sort of fast and sloppy.

Sorry again for the lack of communication before, I look forward to the 
improvements you can make.


More information about the wine-devel mailing list