Gregor Richards wrote: > Attached is a patch that makes linuxwacom-0.7.7-6 work with MultiTouch > input. > > The main problem with supporting MultiTouch on the new X60 Tablets is > that the MultiTouch input is only 5 bytes long, as opposed to the 9 > bytes of most ISDV4 messages. > > To make this work, I had to hack up wcmISDV4.c to allow 5 or 9 byte > messages, depending on the message header (first byte), and of course > add support for the new messages. > > Furthermore, it doesn't calibrate the new input automatically - I > calibrated it manually /in code/. This works for me, and will even > probably work on other X60 Tablets, but won't work in the future. > > A few issues: > * The driver is desperate to drag instead of just click. I don't know > how to change that sensitivity. > * I believe this could cause problem with more "pure" ISDV4 tablets, > but can't test that. > > Please don't import this patch yet - it's just a proof of concept :) > > - Gregor Richards > > ------------------------------------------------------------------------ > > diff -ru linuxwacom-0.7.7-6/src/xdrv/wcmISDV4.c > linuxwacom-0.7.7-6-multitouch/src/xdrv/wcmISDV4.c > --- linuxwacom-0.7.7-6/src/xdrv/wcmISDV4.c 2007-02-20 17:21:02.000000000 > -0800 > +++ linuxwacom-0.7.7-6-multitouch/src/xdrv/wcmISDV4.c 2007-03-24 > 01:01:48.000000000 -0700 > @@ -107,7 +107,9 @@ > > /* set parameters */ > common->wcmProtocolLevel = 4; > - common->wcmPktLength = 9; /* length of a packet */ > + common->wcmPktLength = 5; /* length of a packet */ > + /* most packets are 9 bytes long, > + * some are only 5 */ > common->wcmResolX = 2540; /* tablet X resolution in points/inch */ > common->wcmResolY = 2540; /* tablet Y resolution in points/inch */ > common->wcmTPCButton = 1; /* Tablet PC buttons on by default */ > @@ -209,9 +211,27 @@ > { > WacomDeviceState* last = &common->wcmChannel[0].valid.state; > WacomDeviceState* ds; > - int n, cur_type; > + int n, cur_type, ismt; > + ismt = 0; > > - if ((n = xf86WcmSerialValidate(common,data)) > 0) > + /* determine the type of message */ > + if (data[0] & 0x10) > + { > + ismt = 1; > + } > + else > + { > + common->wcmPktLength = 9; > + if (common->buffer + common->bufpos - data < 9) > + { > + /* we can't handle this yet */ > + return 0; > + } > + } > + > + n = xf86WcmSerialValidate(common,data); > + common->wcmPktLength = 5; > + if (n > 0) > { > return n; > } > @@ -225,6 +245,21 @@ > ds = &common->wcmChannel[0].work; > RESET_RELATIVE(*ds); > > + if (ismt) > + { > + /* MultiTouch input is comparably simple */ > + ds->proximity = (data[0] & 0x20); > + ds->x = (((((int)data[1]) << 7) | ((int)data[2])) - 18) * > common->wcmMaxX / 926; > + ds->y = (((((int)data[3]) << 7) | ((int)data[4])) - 51) * > common->wcmMaxY / 934; > + ds->pressure = (data[0] & 0x01) * common->wcmMaxZ; > + ds->buttons = 1; > + ds->device_id = STYLUS_DEVICE_ID; > + DBG(8, ErrorF("isdv4Parse MultiTouch %x p=%d\n", data[0], > ds->pressure)); > + xf86WcmEvent(common,0,ds); > + return 5; > + } > + > + > ds->proximity = (data[0] & 0x20); > > /* x and y in "normal" orientetion (wide length is X) */ > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > ------------------------------------------------------------------------ > > _______________________________________________ > Linuxwacom-discuss mailing list > Linuxwacom-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxwacom-discuss > Oops - discovered another problem.
When using the pen, it will accept both the proper pen input and the pressure input that the pen creates incidentally. They conflict a bit. Whoops :) - Gregor Richards ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Linuxwacom-discuss mailing list Linuxwacom-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-discuss