tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Driver for Wacom Intuos pen devices

Dear Ryo,

On 2019-10-29, Ryo ONODERA wrote:
> Hi,
> Yorick Hardy <> writes:
> > Dear tech-kern,
> >
> > Please find a patch below for a new uintuos driver for two Wacom
> > Intuos tablets (the Art CTH490 and Intuos M).  The Intuos M also
> > has a bluetooth mode which I have not looked at.
> >
> > Linux has extensive support for the Wacom devices, but (in my
> > opinion) the code is so tangled that it was much easier to work
> > back from the reports and watching how they changed in response to
> > physical events.
> >
> > This means that the Wacom tablet features are not all supported,
> > but all of the pen features are supported (so it is actually a "pen
> > driver", rather than a "tablet driver").
> >
> > I am quite confident that the larger CTH690 should also work,
> > but I have no device to test with.
> Your uintuos(4) driver is very attractive.
> Does your uintuos(4) support pen pressure and tilt?

It supports pressure, but does not support tilt (I am not sure that the
supported devices report tilt - but I can look into it).

We have a problem that wscons only supports x, y, z and w so to support
tilt might require changes to wscons (we need more "axes"). I am
willing to work on this if it is the best way forward.

> I am using Wacom pen tablets with Oshima-san's xf86-input-usbtablet.

This looks great! Can we import the driver into xsrc? The only
limitation I see is that the /dev/uhid? node needs to be known before
X starts (no dynamic connection of the device).

With wscons, we can have a wsmux dedicated to the tablet and X does
not need devices to be connected before starting.

The exact node can be determined by iterating through all of the /dev/uhid?
nodes looking for the right report id (for Art CTH490 and Intuos M), something

 for (i=0, uhid=-1; i<50 && uhid==-1; ++i) {
   sprintf(devname, "/dev/uhid%d", i);
   j = open(devname, O_RDONLY);
   if (j != -1) {
     if(ioctl(j, USB_GET_DEVICEINFO, &udi) != -1 &&
        udi.udi_vendorNo == 0x056a &&
        udi.udi_productNo == 0x033c) {
       if(ioctl(j, USB_GET_REPORT_ID, &rid) != -1 && rid == 16) {
         uhid = j;
   if (uhid == -1) {
   } else {
     fprintf(stderr, "opened %s\n", devname);

So the "Device" option in xorg.conf could be made optional?

> I need pressure and tilt support for pkgsrc/graphics/gimp.
> Thank you.

Understood! Based on the xf86-input-usbtablet, I can have a look
at extending wscons and xf86-input-ws to support tilt also,
do you have an XD-0912-U to test with?

(I take a very long time to do the driver work, so it might
take quite a while before it is ready.)

> -- 
> Ryo ONODERA //
> PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

Kind regards,

Yorick Hardy

Home | Main Index | Thread Index | Old Index