Thread (3 messages) 3 messages, 3 authors, 2011-05-20

Re: [PATCH] hid-multitouch: Add support for Lumio panels

From: Benjamin Tissoires <hidden>
Date: 2011-05-19 22:37:10
Also in: lkml

Possibly related (same subject, not in this thread)

Hi Peter,

your device presents Contact ID, Tip Switch, In Range and Confidence.
I would say that Win 7 would treat it as a multitouch screen, so this
might work with hid-multitouch. Please note that's the first time I
see a report descriptor with only one touch reported for a multitouch
screen.

For the configuration, the device may emulate a mouse by default, and
hid-multitouch is able to switch to the multitouch mode. You will
loose the right click, but it can be enabled in gnome at least
(accessibility settings).

Can you just replace in hid-ids.h:
- #define USB_DEVICE_ID_CRYSTALTOUCH  0x0006
+ #define USB_DEVICE_ID_CRYSTALTOUCH  0x0005

and see if it's working?
If you prefer, I can make a new patch, but I'll need to know which
kernel you are running (tree and branch). A 2.6.39 and above would be
great.

Cheers,
Benjamin

On Thu, May 19, 2011 at 23:16, Peter Korsgaard [off-list ref] wrote:
quoted
quoted
quoted
quoted
quoted
"Benjamin" == Benjamin Tissoires [off-list ref] writes:
 Benjamin> This patch enables support for Lumio optical devices.
 Benjamin> Signed-off-by: Benjamin Tissoires [off-list ref]

 Benjamin> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
 Benjamin> index 2e46eb2..a8c46b0 100644
 Benjamin> --- a/drivers/hid/hid-ids.h
 Benjamin> +++ b/drivers/hid/hid-ids.h
 Benjamin> @@ -411,6 +411,9 @@
 Benjamin>  #define USB_DEVICE_ID_DINOVO_MINI   0xc71f
 Benjamin>  #define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2  0xca03

 Benjamin> +#define USB_VENDOR_ID_LUMIO         0x202e
 Benjamin> +#define USB_DEVICE_ID_CRYSTALTOUCH  0x0006
 Benjamin> +

Does this require any special configuration of the touchscreen
controller? I have a 202e:0005 device which afaik normally doesn't send
any multi touch events.

HID descriptors:

Bus 001 Device 021: ID 202e:0005
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0
 bDeviceProtocol         0
 bMaxPacketSize0        64
 idVendor           0x202e
 idProduct          0x0005
 bcdDevice            2.00
 iManufacturer           1 LUMIO Inc
 iProduct                2 LUMIO CrystalTouch ver 1.1C
 iSerial                 0
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength          116
   bNumInterfaces          4
   bConfigurationValue     1
   iConfiguration          0
   bmAttributes         0x80
     (Bus Powered)
   MaxPower              500mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      0 No Subclass
     bInterfaceProtocol      0 None
     iInterface              0
       HID Device Descriptor:
         bLength                 9
         bDescriptorType        33
         bcdHID               1.10
         bCountryCode            0 Not supported
         bNumDescriptors         1
         bDescriptorType        34 Report
         wDescriptorLength      38
         Report Descriptor: (length is 38)
           Item(Global): Usage Page, data= [ 0xa0 0xff ] 65440
                           (null)
           Item(Local ): Usage, data= [ 0x05 ] 5
                           (null)
           Item(Main  ): Collection, data= [ 0x01 ] 1
                           Application
           Item(Local ): Usage, data= [ 0xa6 ] 166
                           (null)
           Item(Local ): Usage, data= [ 0xa7 ] 167
                           (null)
           Item(Global): Logical Minimum, data= [ 0x80 ] 128
           Item(Global): Logical Maximum, data= [ 0x7f ] 127
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Report Count, data= [ 0x40 ] 64
           Item(Main  ): Input, data= [ 0x02 ] 2
                           Data Variable Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Local ): Usage, data= [ 0x33 ] 51
                           (null)
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Report Count, data= [ 0x40 ] 64
           Item(Main  ): Output, data= [ 0x00 ] 0
                           Data Array Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Local ): Usage, data= [ 0x33 ] 51
                           (null)
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Report Count, data= [ 0x08 ] 8
           Item(Main  ): Feature, data= [ 0x00 ] 0
                           Data Array 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     0x0040  1x 64 bytes
       bInterval               2
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0040  1x 64 bytes
       bInterval               2
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        1
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      0 No Subclass
     bInterfaceProtocol      0 None
     iInterface              0
       HID Device Descriptor:
         bLength                 9
         bDescriptorType        33
         bcdHID               1.11
         bCountryCode            0 Not supported
         bNumDescriptors         1
         bDescriptorType        34 Report
         wDescriptorLength      64
         Report Descriptor: (length is 64)
           Item(Global): Usage Page, data= [ 0x01 ] 1
                           Generic Desktop Controls
           Item(Local ): Usage, data= [ 0x06 ] 6
                           Keyboard
           Item(Main  ): Collection, data= [ 0x01 ] 1
                           Application
           Item(Global): Usage Page, data= [ 0x07 ] 7
                           Keyboard
           Item(Local ): Usage Minimum, data= [ 0xe0 ] 224
                           Control Left
           Item(Local ): Usage Maximum, data= [ 0xe7 ] 231
                           GUI Right
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0x01 ] 1
           Item(Global): Report Size, data= [ 0x01 ] 1
           Item(Global): Report Count, data= [ 0x08 ] 8
           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= [ 0x08 ] 8
           Item(Main  ): Input, data= [ 0x03 ] 3
                           Constant Variable Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Report Count, data= [ 0x05 ] 5
           Item(Global): Report Size, data= [ 0x01 ] 1
           Item(Global): Report Count, data= [ 0x06 ] 6
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0x65 ] 101
           Item(Global): Usage Page, data= [ 0x07 ] 7
                           Keyboard
           Item(Local ): Usage Minimum, data= [ 0x00 ] 0
                           No Event
           Item(Local ): Usage Maximum, data= [ 0x65 ] 101
                           Keyboard Application (Windows Key for Win95 or Compose)
           Item(Main  ): Input, data= [ 0x00 ] 0
                           Data Array Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Usage Page, data= [ 0xa0 0xff ] 65440
                           (null)
           Item(Local ): Usage, data= [ 0xa5 ] 165
                           (null)
           Item(Global): Logical Minimum, data= [ 0x80 ] 128
           Item(Global): Logical Maximum, data= [ 0x7f ] 127
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Report Count, data= [ 0x08 ] 8
           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     0x86  EP 6 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0008  1x 8 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      0 No Subclass
     bInterfaceProtocol      0 None
     iInterface              0
       HID Device Descriptor:
         bLength                 9
         bDescriptorType        33
         bcdHID               1.11
         bCountryCode            0 Not supported
         bNumDescriptors         1
         bDescriptorType        34 Report
         wDescriptorLength      85
         Report Descriptor: (length is 85)
           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(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(Global): Logical Minimum, data= [ 0x00 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0xff 0x0f ] 4095
           Item(Global): Physical Minimum, data= [ 0x00 0x00 ] 0
           Item(Global): Physical Maximum, data= [ 0xff 0x7f ] 32767
           Item(Global): Unit, data= [ 0x00 0x00 ] 0
                           System: None, Unit: (None)
           Item(Global): Report Size, data= [ 0x10 ] 16
           Item(Global): Report Count, data= [ 0x02 ] 2
           Item(Main  ): Input, data= [ 0x62 ] 98
                           Data Variable Absolute No_Wrap Linear
                           No_Preferred_State Null_State Non_Volatile Bitfield
           Item(Global): Usage Page, data= [ 0x01 ] 1
                           Generic Desktop Controls
           Item(Local ): Usage, data= [ 0x88 ] 136
                           System Menu Exit
           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= [ 0x01 ] 1
           Item(Main  ): Input, data= [ 0x06 ] 6
                           Data Variable Relative No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Usage Page, data= [ 0xff ] 255
                           Vendor Specific
           Item(Local ): Usage, data= [ 0x02 ] 2
                           (null)
           Item(Global): Report Count, data= [ 0x02 ] 2
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Main  ): Input, data= [ 0x01 ] 1
                           Constant Array Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Main  ): End Collection, data=none
           Item(Main  ): End Collection, data=none
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x85  EP 5 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0008  1x 8 bytes
       bInterval               1
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        3
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      0 No Subclass
     bInterfaceProtocol      0 None
     iInterface              0
       HID Device Descriptor:
         bLength                 9
         bDescriptorType        33
         bcdHID               1.11
         bCountryCode            0 Not supported
         bNumDescriptors         1
         bDescriptorType        34 Report
         wDescriptorLength      89
         Report Descriptor: (length is 89)
           Item(Global): Usage Page, data= [ 0x0d ] 13
                           Digitizer
           Item(Local ): Usage, data= [ 0x04 ] 4
                           Touch Screen
           Item(Main  ): Collection, data= [ 0x01 ] 1
                           Application
           Item(Local ): Usage, data= [ 0x22 ] 34
                           Finger
           Item(Main  ): Collection, data= [ 0x00 ] 0
                           Physical
           Item(Local ): Usage, data= [ 0x42 ] 66
                           Tip Switch
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0x01 ] 1
           Item(Global): Report Size, data= [ 0x01 ] 1
           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): Report Count, data= [ 0x03 ] 3
           Item(Main  ): Input, data= [ 0x03 ] 3
                           Constant Variable Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Local ): Usage, data= [ 0x32 ] 50
                           In Range
           Item(Local ): Usage, data= [ 0x47 ] 71
                           Confidence
           Item(Global): Report Count, data= [ 0x02 ] 2
           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= [ 0x0a ] 10
           Item(Main  ): Input, data= [ 0x03 ] 3
                           Constant Variable Absolute No_Wrap Linear
                           Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Usage Page, data= [ 0x01 ] 1
                           Generic Desktop Controls
           Item(Global): Logical Maximum, data= [ 0xff 0x7f ] 32767
           Item(Global): Unit, data= [ 0x11 ] 17
                           System: SI Linear, Unit: Centimeter
           Item(Global): Unit Exponent, data= [ 0x0e ] 14
                           Unit Exponent: 14
           Item(Global): Physical Maximum, data= [ 0x5d 0x14 ] 5213
           Item(Global): Report Size, data= [ 0x10 ] 16
           Item(Global): Report Count, data= [ 0x01 ] 1
           Item(Local ): Usage, data= [ 0x30 ] 48
                           Direction-X
           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= [ 0x75 0x0b ] 2933
           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= [ 0x0d ] 13
                           Digitizer
           Item(Local ): Usage, data= [ 0x51 ] 81
                           Contact ID
           Item(Global): Report Size, data= [ 0x10 ] 16
           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(Local ): Usage, data= [ 0x55 ] 85
                           Maximum Contact Number
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0x08 ] 8
           Item(Global): Report Size, data= [ 0x08 ] 8
           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
           Item(Main  ): End Collection, data=none
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x87  EP 7 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0008  1x 8 bytes
       bInterval               1
Device Status:     0x0001
 Self Powered

--
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help