Ok, Here are my plans for wintab work.
If Aric's pach is considered ready to go into CVS, then I can start working on this in the following areas:
Painter support. I beleive there are some problems getting Painter to work with wintab. This is my priority.
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 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.
Comments/questions welcome. -Rob.
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.
http://crossover.codeweavers.com/docs/office/html/troubleshooting.html#PHOTO...
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 photoshop.
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.
thanks -aric