Re: HID input dealing with multiple collections?

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

 



On Mon, Sep 9, 2013 at 4:01 PM, Breton M. Saunders <bms20@xxxxxxxxxxx> wrote:
> On 09/09/13 14:12, Benjamin Tissoires wrote:
>>
>> Hi,
>>
>> On Mon, Sep 9, 2013 at 2:56 PM, Breton M. Saunders <bms20@xxxxxxxxxxx>
>> wrote:
>>>
>>> Hello,
>>>
>>>    I've written a USB device which supports multiple input devices:
>>>      * A touch surface digitizer (following Microsoft's specification)
>>>      * A pen surface digitizer
>>>      * A mouse emulator
>>>
>>>    In windows each of these interfaces are exposed as a separate top
>>> level
>>> collection, e.g.:
>>>    Usage_Page(Generic Desktop)
>>>    Usage(Mouse)
>>>    Collection(Application)
>>>         ...
>>>    End_Collection
>>>    Usage_Page(Digitzer)
>>>    Usage(Touch_Screen)
>>>    Collection(Application)
>>>       ...
>>>    End_Collection
>>>    Usage(Digitizer)
>>>    Usage(Pen)
>>>    Collection(Application)
>>>       ...
>>>    End_Collection
>>>
>>>    Now this descriptor works well in Windows; all reporting channels are
>>> exposed correctly as hid devices and mouse/multitouch/pen input all works
>>> correctly as expected.  In linux, however, this is not the case.  What I
>>> see
>>> is that if I drop out the touch/pen functionality then the mouse support
>>> works correctly.  Likewise, if I drop any pair of other top level
>>> collections such that I have exactly one top level collection the system
>>> works correctly.
>>>
>>>    Am I missing something here - as in: Have I made an error in my usage
>>> of
>>> top level collections, or is linux-input's hid support incapable of
>>> dealing
>>> with multiple top level collections?
>>
>> If it works under Windows, there are huge chances that your report
>> descriptor is good.
>>
>> However, under Linux, we use the report IDs to split (if required) the
>> different inputs.
>> The good thing for you is that if I understand correctly, the device
>> you are talking about should be handled through hid-multitouch. Since
>> kernel v3.10, we have introduced the support of devices showing both a
>> digitizer and a pen (they will show up as two input devices).
>>
>> I would encourage you to test a 3.10 kernel, and/or send me some
>> traces of your devices by using hid-replay[1]. This way I will be able
>> to test your device on my laptop, and eventually figure out any
>> problem.
>>
>> Cheers,
>
> Hi Benjamin,
>
>   Thanks for the quick reply.
>
>   3.10 is a no-go for me; I need to get this working on a vanilla (or
> upgraded) version of Ubuntu 12.04; so something more like kernel version
> 3.2.  (Unfortunately, its what people are using in the field).

You can still try to use my backport available here:
https://github.com/bentiss/hid-multitouch

it _should_ work on a 3.2. You only have to add your VID/PID in
hid-multitouch to make it work.

>
>   I will, however, install a more modern kernel to test against; esp. since
> I note your HID-replay tool requires 3.6 to test with.

well, it requires the module uhid, which is available in 3.6, but also
in my backport :)
run "modprobe uhid_compat" and run hid-replay against the
/dev/hidraw-compatN device.

Anyway, if this is too much of a pain, just send me the report
descriptor in hexadecimal (and some hexadecimal captures of your
events), I'll do the formatting myself.

>
>   Would the correct approach here be to implement a composite USB device and
> have separate USB interfaces for mouse, touch and pen for compatibility with
> older kernel revisions?

I would say no because I don't know what would be the behavior of
Windows. But if you don't care about Windows and if this solution
works, it's entirely up to you.

Cheers,
Benjamin
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux