Forum

Tablet Plugin

Here’s the first release of my Tablet plugin, which adds advanced graphics tablet support to vvvv.

Features:

  • Position, pressure, proximity and tilt sensing
  • Tool ID (physical/“unique” ID to be supported in a future version)
  • Configurable # of button pins
  • Enable or disable tablet’s mouse function

Limitations/known bugs:

  • No ExpressKeys, Touch Strips, or Dual Track (Wacom extensions)
  • Having more than one Tablet node causes problems
  • No support for multiple tablets

The plugin uses VBTablet .NET as its interface to the Wintab driver. It was tested only on a Wacom Intuos3 - Tablets from other manufacturers may produce unexpected values or behavior.

Feedback/suggestions/sourceforge upload access will be much appreciated :)

vvvvTablet_r1.zip (51.9 kB)

You’ve made my day!

Haven’t had time to do much testing but it seems to work fine with my first generation Intous.

This has been my most wanted plugin :)

Here’s the first release of my Tablet plugin, which adds advanced graphics tablet support to vvvv.

Features:

  • Position, pressure, proximity and tilt sensing
  • Tool ID (physical/“unique” ID to be supported in a future version)
  • Configurable # of button pins
  • Enable or disable tablet’s mouse function

Limitations/known bugs:

  • No ExpressKeys, Touch Strips, or Dual Track (Wacom extensions)
  • Having more than one Tablet node causes problems
  • No support for multiple tablets

The plugin uses VBTablet .NET as its interface to the Wintab driver. It was tested only on a Wacom Intuos3 - Tablets from other manufacturers may produce unexpected values or behavior.

Feedback/suggestions/sourceforge upload access will be much appreciated :)

helo moti, great job.

i don’t have the time to check this right now but will do so with my old wacom hopefully at the end of next week.

in the meanwhile as you said you have troubles with some coding…do you know:
http://www.codeproject.com/KB/cs/USB_HID.aspx
and
http://www.lvr.com/hidpage.htm#basics

just two other pages with c# code for accessing hid devices. maybe those help.

Thank you moti for this marvellous plugin!

I also just tested it on Wacom Intuos 1 and so far it works great.
Does the eraser do anything? I can’t test it as my pen got dropped.
I especially like the way you can still use the mouse.
Right now I have an enormous grin on my face :oP

That’s great to hear. You’re looking for the Cursor pin - my tablet returns 1 for the regular stylus tip, 2 for the eraser etc. Also, the next version will have a Physical ID pin - a unique number associated with the physical stylus/mouse/whatever being used.

works perfectly out of the box with my brandnew wacom bamboo fun - x, y, penpressure, buttons 1 + 2 and the rubber tip. thanks a lot moti!

helo moti,

sory for being so late on this. i can now say it works great.
only one thing i noted: why did you use the gui-template instead of the non-gui-template?

for sourceforge upload access you need to create a user account on sourceforge and tell me, so i can sign you in. tell me here or on ##vvvv on irc.freenode.net

thanks for your work so far!

I used the GUI template because the tablet driver needs a window handle… So a hidden empty window from being a GUI plugin did the trick.

My sf.net username is motiz88.

You’re welcome - vvvv is fun to work with, inside and out :)

ok, you now have write access. please put your code into the plugins\c#\Devices\Tablet

ah, the windowhandle…hm. couldn’t you then just create a hidden window within the plugin, instead of using the plugins window, because plugin-windows can be made visible via a rightclick on the plugin, thats not such a beautiful sight then in this case.

thanks for the plug - i used it with a 5x4 wizardpen genius tablet, and it works perfectly! i’ve only used the x,y and pressure so far…

While I wrap up the new & improved version to put on sf.net, a design question:

Given that the number of buttons readable at any moment is not fixed (change from a 5-button puck to the 3-button stylus, or invert it and get a 1-button eraser), which alternative would be a better default for handling buttons?

  1. Current behavior: One output pin per button, with a config pin to manually set the number of buttons (we don’t want to be creating/destroying pins dynamically other than with a config pin).
  2. New behavior: One output pin for all the buttons, giving a spread of button states that sizes automatically to fit.

I prefer #2 now that I’ve implemented it, and I put in a config pin to switch modes, but which behavior should be the default? Also:

  • Does it make sense to support using both modes side-by-side?
  • Does it make sense to support #1 at all, seeing that it is basically equivalent to #2 + breaking up the spread using e.g. Stallone?

helo moti,

ad #2) “giving a spread of button states that sizes automatically to fit.”
not sure if i understand this correctly. do you get an information per cursor, how many buttons it has? with my intuos it seems that the pen has 3 buttons and when turning it around to the rubber, it has only one button (=pressure). so turning the pen around would change the spreadcount?

anyway i think i am in favor of #2 without the option for #1

Yes, you got it.

I’ll go ahead and leave only #2 in, then.

hei moti,

thanks for your code. noted two things:
the PluginInterface and Utils project in the main solution are ‘wrongly’ linked. note that you should not have the \trunk directory checked out with your working directory. you should checkout PluginInterfaces, Utils … separately to work with. i know this is a little inconvenient (for 1 minute), but it would be nice if you could correct it so it fits with the rest of the code.

one day we should think about restructuring the repo to allow working on a complete checkout.

also please rename the your helppatch to Tablet (Devices) help.v4p (helppatches will load like this with beta>18)

Greta job, it works.
I will try some graphical patches with that great patch.
Thanks a lot ! I begin a workshop with a graffiti drawer!
I send you some stuff, when it works great.