To speed your testing out, here is an alternative to try. In case this is a non-wacom digitizer or even if is a wacom digitizer but you'd like to use it in HID-compliant mode they sometimes have, you can try to get HID core to work with it in correct mode.
As I mentioned in earlier email, the issue is that a mouse and a digitizer is being combined into a single input device. You can add a "quirk" to hid-core for your device that will break them into 2 devices. To do this, revert all your wacom_wac changes and your hid-core changes. Instead edit the file linux/drivers/hid/usbhid/hid-quirks.c. Copy&paste a line that has the HID_QUIRK_MULTI_INPUT and replace its VID/PID with your digitizer values. Here is an example of such lines. { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, This HID-compliant device will not work with xf86-input-wacom though. You will also need to revert and xorg.conf files so that the device is correctly matched to xf86-input-evdev. Chris On Mon, Jan 2, 2012 at 11:10 AM, Chris Bagwell <ch...@cnpbagwell.com> wrote: > On Mon, Jan 2, 2012 at 3:13 AM, Mike Rolland <none...@gmail.com> wrote: >> Ok, let's dance for all your demands. >> Nevertheless, there's no pen click or move events on screen in normal mode. >> >> ### kernel diff : >> >> Index: drivers/input/tablet/wacom.h >> =================================================================== >> --- drivers/input/tablet/wacom.h >> +++ drivers/input/tablet/wacom.h 2011-12-31 19:19:08.452177869 +0400 >> >> @@ -104,6 +104,7 @@ >> >> #define USB_VENDOR_ID_WACOM 0x056a >> #define USB_VENDOR_ID_LENOVO 0x17ef >> +#define USB_VENDOR_ID_ASUSTEK 0x0b05 >> >> >> >> struct wacom { >> Index: drivers/input/tablet/wacom_wac.c >> =================================================================== >> --- drivers/input/tablet/wacom_wac.c >> +++ drivers/input/tablet/wacom_wac.c 2011-12-31 12:31:10.224185924 +0400 >> @@ -1503,6 +1503,9 @@ >> static const struct wacom_features wacom_features_0x6004 = >> { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, >> 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; >> +static const struct wacom_features wacom_features_0x179F = >> + { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, >> >> + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; >> >> #define USB_DEVICE_WACOM(prod) \ >> USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ >> @@ -1517,6 +1520,10 @@ >> USB_DEVICE(USB_VENDOR_ID_LENOVO, prod), \ >> .driver_info = (kernel_ulong_t)&wacom_features_##prod >> >> +#define USB_DEVICE_ASUSTEK(prod) \ >> + USB_DEVICE(USB_VENDOR_ID_ASUSTEK, prod), \ >> >> + .driver_info = (kernel_ulong_t)&wacom_features_##prod >> + >> const struct usb_device_id wacom_ids[] = { >> { USB_DEVICE_WACOM(0x00) }, >> { USB_DEVICE_WACOM(0x10) }, >> @@ -1607,6 +1614,7 @@ >> { USB_DEVICE_WACOM(0xE6) }, >> { USB_DEVICE_WACOM(0x47) }, >> { USB_DEVICE_LENOVO(0x6004) }, >> + { USB_DEVICE_ASUSTEK(0x179F) }, >> { } >> }; >> MODULE_DEVICE_TABLE(usb, wacom_ids); >> >> ### xf86 diff : (I place back in wcwUSB to 2450, 2540 ) > > All of your X changes are not needed and could cause harm; especially > if you mismark it as a Protocol 5 device. I would remove them to be > safe. > > More info in case your interested on "protocol": > > http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=Wacom_Protocol_Overview > > >> >> Index: wcmUSB.c >> =================================================================== >> --- wcmUSB.c >> +++ wcmUSB.c 2012-01-02 01:03:03.050073315 +0400 >> @@ -284,7 +284,10 @@ >> { WALTOP_VENDOR_ID, 0x27, 80000, 80000, &usbGraphire3 }, >> { WALTOP_VENDOR_ID, 0x28, 80000, 80000, &usbGraphire3 }, >> { WALTOP_VENDOR_ID, 0x30, 80000, 80000, &usbGraphire4 }, >> - { WALTOP_VENDOR_ID, 0x31, 80000, 80000, &usbGraphire4 }, >> + /* WALTOP original strings */ >> + /*{ WALTOP_VENDOR_ID, 0x31, 80000, 80000, &usbGraphire4 }, */ >> + /* WALTOP exprimental strings (medio 85837) */ >> + { WALTOP_VENDOR_ID, 0x31, 200000, 200000, &usbIntuos4 }, >> { WALTOP_VENDOR_ID, 0x32, 100000, 100000, &usbBambooFun }, >> { WALTOP_VENDOR_ID, 0x33, 100000, 100000, &usbBambooFun }, >> { WALTOP_VENDOR_ID, 0x34, 80000, 80000, &usbBamboo1 }, >> @@ -308,10 +311,12 @@ >> { WALTOP_VENDOR_ID, 0x503, 200000, 200000, &usbIntuos4 }, >> >> /* N-Trig devices */ >> - { NTRIG_VENDOR_ID, 0x01, 44173, 36772, &usbTabletPC }, >> + { NTRIG_VENDOR_ID, 0x01, 44173, 36772, &usbTabletPC }, >> >> /* Add in Lenovo W700 Palmrest digitizer */ >> - { LENOVO_VENDOR_ID, 0x6004, 2540, 2540, &usbTabletPC } /* Pen-only */ >> + { LENOVO_VENDOR_ID, 0x6004, 2540, 2540, &usbTabletPC }, /* Pen-only */ >> + /* ASUSTek EeeNote digitizer (experimental) */ >> + { ASUSTEK_VENDOR_ID, 0x179f, 2540, 2540, &usbTabletPC } >> }; >> >> static Bool usbWcmInit(InputInfoPtr pInfo, char* id, float *version) >> Index: xf86Wacom.c >> =================================================================== >> --- xf86Wacom.c >> +++ xf86Wacom.c 2011-12-30 12:31:02.932275049 +0400 >> @@ -494,6 +494,7 @@ >> case WALTOP_VENDOR_ID: >> case HANWANG_VENDOR_ID: >> case LENOVO_VENDOR_ID: >> + case ASUSTEK_VENDOR_ID: >> return TRUE; >> default: >> break; >> Index: xf86WacomDefs.h >> =================================================================== >> --- xf86WacomDefs.h >> +++ xf86WacomDefs.h 2011-12-30 12:43:22.773258878 +0400 >> @@ -34,6 +34,7 @@ >> #define NTRIG_VENDOR_ID 0x1b96 >> #define HANWANG_VENDOR_ID 0x0b57 >> #define LENOVO_VENDOR_ID 0x17ef >> +#define ASUSTEK_VENDOR_ID 0x0b05 >> >> #define DEFAULT_SUPPRESS 2 /* default suppress */ >> #define MAX_SUPPRESS 100 /* max value of suppress */ >> >> ### evtest log : >> >> [root@hpm mike]# evtest /dev/input/event14 >> Input driver version is 1.0.1 >> Input device ID: bus 0x3 vendor 0xb05 product 0x179f version 0x129 >> Input device name: "ISD-V4 Pen" >> Supported events: >> Event type 0 (Sync) >> Event type 1 (Key) >> Event code 320 (ToolPen) >> Event code 321 (ToolRubber) >> Event code 330 (Touch) >> Event code 331 (Stylus) >> Event code 332 (Stylus2) >> Event type 3 (Absolute) >> Event code 0 (X) >> Value 0 >> Min 0 >> Max 12800 >> Fuzz 4 >> Event code 1 (Y) >> Value 0 >> Min 0 >> Max 8000 >> Fuzz 4 >> Event code 24 (Pressure) >> Value 0 >> Min 0 >> Max 255 >> Testing ... (interrupt to exit) >> >> Effectively, evtest doesn't report nothing when moving pen on tablet, but it >> does on console only mode. > > Can you send the output from console mode? Do the X/Y values seem to > make sense? For example, drawing from top of screen to bottom of > screen do you see mostly only Y axis change values linearly? > >> > >> >> ### lsusb with module unload : >> >> [root@hpm mike]# lsusb -vvv -d 0b05:179f >> > > OK. Good info in this lsusb. I'm not positive yet if this is a Wacom. > > Pros: It does use a Report ID of 2 for pen packets and has a Feature > Report #2 as well that wacom driver likes to control on "tablet PC's". > > Cons: My math comes up with only 5 bytes declared for pen packet while > wacom driver expects it to be size 8. > > Additional Pros: Sometimes thats what the Feature Report #2 is. It > turns on a more advanced Pen Packet mode which I guess could cause it > to become bigger than size reported by HID report... but I'm not sure > of this for Tablet PC's. > > Chris > >> >> Bus 002 Device 008: ID 0b05:179f ASUSTek Computer, Inc. >> Device Descriptor: >> bLength 18 >> bDescriptorType 1 >> bcdUSB 1.10 >> bDeviceClass 0 (Defined at Interface level) >> bDeviceSubClass 0 >> bDeviceProtocol 0 >> bMaxPacketSize0 16 >> idVendor 0x0b05 ASUSTek Computer, Inc. >> idProduct 0x179f >> bcdDevice 1.29 >> iManufacturer 1 ASUSTek Computer, Inc. >> iProduct 2 Eee Note Digitizer >> iSerial 3 1 >> bNumConfigurations 1 >> Configuration Descriptor: >> bLength 9 >> bDescriptorType 2 >> wTotalLength 34 >> bNumInterfaces 1 >> bConfigurationValue 1 >> iConfiguration 4 pen report data >> bmAttributes 0xc0 >> Self Powered >> MaxPower 2mA >> Interface Descriptor: >> bLength 9 >> bDescriptorType 4 >> bInterfaceNumber 0 >> bAlternateSetting 0 >> bNumEndpoints 1 >> bInterfaceClass 3 Human Interface Device >> bInterfaceSubClass 0 No Subclass >> bInterfaceProtocol 2 Mouse >> iInterface 4 pen report data >> HID Device Descriptor: >> bLength 9 >> bDescriptorType 33 >> bcdHID 1.10 >> bCountryCode 33 US >> bNumDescriptors 1 >> bDescriptorType 34 Report >> wDescriptorLength 201 >> Report Descriptor: (length is 201) >> Item(Global): Usage Page, data= [ 0x01 ] 1 >> Generic Desktop Controls >> Item(Local ): Usage, data= [ 0x02 ] 2 >> Mouse >> Item(Main ): Collection, data= [ 0x01 ] 1 >> Application >> Item(Global): Report ID, data= [ 0x01 ] 1 >> Item(Local ): Usage, data= [ 0x01 ] 1 >> Pointer >> Item(Main ): Collection, data= [ 0x00 ] 0 >> Physical >> Item(Global): Usage Page, data= [ 0x09 ] 9 >> Buttons >> Item(Local ): Usage Minimum, data= [ 0x01 ] 1 >> Button 1 (Primary) >> Item(Local ): Usage Maximum, data= [ 0x03 ] 3 >> Button 3 (Tertiary) >> Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> Item(Global): Logical Maximum, data= [ 0x01 ] 1 >> Item(Global): Report Count, data= [ 0x03 ] 3 >> Item(Global): Report Size, data= [ 0x01 ] 1 >> Item(Main ): Input, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Global): Report Size, data= [ 0x05 ] 5 >> Item(Main ): Input, data= [ 0x01 ] 1 >> Constant Array Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Global): Usage Page, data= [ 0x01 ] 1 >> Generic Desktop Controls >> Item(Local ): Usage, data= [ 0x30 ] 48 >> Direction-X >> Item(Local ): Usage, data= [ 0x31 ] 49 >> Direction-Y >> Item(Local ): Usage, data= [ 0x38 ] 56 >> Wheel >> Item(Global): Logical Minimum, data= [ 0x81 ] 129 >> Item(Global): Logical Maximum, data= [ 0x7f ] 127 >> Item(Global): Report Size, data= [ 0x08 ] 8 >> Item(Global): Report Count, data= [ 0x03 ] 3 >> Item(Main ): Input, data= [ 0x06 ] 6 >> Data Variable Relative No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Main ): End Collection, data=none >> Item(Main ): End Collection, data=none >> Item(Global): Usage Page, data= [ 0x0d ] 13 >> Digitizer >> Item(Local ): Usage, data= [ 0x01 ] 1 >> Digitizer >> Item(Main ): Collection, data= [ 0x01 ] 1 >> Application >> Item(Global): Report ID, data= [ 0x02 ] 2 >> Item(Main ): Collection, data= [ 0x00 ] 0 >> Physical >> Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 >> (null) >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Logical Minimum, data= [ 0x00 ] 0 >> Item(Global): Logical Maximum, data= [ 0xff ] 255 >> Item(Global): Report Size, data= [ 0x08 ] 8 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Input, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Global): Usage Page, data= [ 0x01 ] 1 >> Generic Desktop Controls >> Item(Local ): Usage, data= [ 0x30 ] 48 >> Direction-X >> Item(Global): Report Size, data= [ 0x10 ] 16 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Global): Push, data=none >> Item(Global): Unit Exponent, data= [ 0x0d ] 13 >> Unit Exponent: 13 >> Item(Global): Unit, data= [ 0x33 ] 51 >> System: English Linear, Unit: Inch^3 >> Item(Global): Physical Minimum, data= [ 0x00 ] 0 >> Item(Global): Physical Maximum, data= [ 0x58 0x19 ] 6488 >> Item(Global): Logical Maximum, data= [ 0x60 0x40 ] 16480 >> Item(Main ): Input, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x31 ] 49 >> Direction-Y >> Item(Global): Physical Maximum, data= [ 0x15 0x13 ] 4885 >> Item(Global): Logical Maximum, data= [ 0x7a 0x30 ] 12410 >> Item(Main ): Input, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Global): Pop, data=none >> Item(Global): Usage Page, data= [ 0x0d ] 13 >> Digitizer >> Item(Local ): Usage, data= [ 0x30 ] 48 >> Tip Pressure >> Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255 >> Item(Main ): Input, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 >> (null) >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Logical Maximum, data= [ 0xff ] 255 >> Item(Global): Report Size, data= [ 0x08 ] 8 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Input, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Main ): End Collection, data=none >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x02 ] 2 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x03 ] 3 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x04 ] 4 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x10 ] 16 >> Item(Global): Report Count, data= [ 0x02 ] 2 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x11 ] 17 >> Item(Global): Report Count, data= [ 0x10 ] 16 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x13 ] 19 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x20 ] 32 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Local ): Usage, data= [ 0x01 ] 1 >> (null) >> Item(Global): Report ID, data= [ 0x21 ] 33 >> Item(Global): Report Count, data= [ 0x01 ] 1 >> Item(Main ): Feature, data= [ 0x02 ] 2 >> Data Variable Absolute No_Wrap Linear >> Preferred_State No_Null_Position Non_Volatile >> Bitfield >> Item(Main ): End Collection, data=none >> >> Endpoint Descriptor: >> bLength 7 >> bDescriptorType 5 >> bEndpointAddress 0x81 EP 1 IN >> bmAttributes 3 >> Transfer Type Interrupt >> Synch Type None >> Usage Type Data >> wMaxPacketSize 0x0009 1x 9 bytes >> bInterval 4 >> Device Status: 0x0001 >> Self Powered >> ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel