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

Reply via email to