All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: William Sherman <shermanw@indiana.edu>
Cc: linux-kernel@vger.kernel.org,
	Linux Input <linux-input@vger.kernel.org>,
	Jiri Kosina <jkosina@suse.cz>
Subject: Re: usbhid: HP LD4200tm touchscreen ALMOST works
Date: Mon, 1 Nov 2010 14:14:57 -0700	[thread overview]
Message-ID: <20101101211456.GA30692@core.coreip.homeip.net> (raw)
In-Reply-To: <4CC61731.1080100@indiana.edu>

On Mon, Oct 25, 2010 at 07:48:01PM -0400, William Sherman wrote:
> Hello,
> 
> I'm looking to dig into the usbhid driver code to get me the last
> mile and get my HP LD4200tm touchscreen working on my Linux system.
> [NOTE: I posted about this elsewhere, but as I think about it more,
> this is more of a linux-kernel issue than anything else, so I'm
> reprising that note here.]
> 

I think you'll have better luck on linux-input...

> So, in first connecting the HP touchscreen (with touchscreen hardware
> from Nexio) to the Linux system (running Ubuntu 10.10 -- 2.6.35-22 generic)
> things were looking up, as the unit almost worked right out of the box
> as a plug-and-play device.  Unfortunately, that last mile needs to be
> addressed in order for the unit to work in a useful way.  I think I've
> narrowed down the problem to the usbhid driver, as I'll explain in a
> moment, and while I expect I have the ability to debug and fix the issue,
> this would be my first dive into Linux driver coding, so I could probably
> use a pointer as to what steps are necessary to get the proper kernel
> sources, compile the needed parts and restart the system (hopefully
> just restart X-windows) to test my edits (especially since Ubuntu tends
> to not include a not of the necessary components).
> 
> I've collected gobs of data on what udev, hidraw, evtest and X-windows
> report, but before I get to any of that, here's the executive summary:
> 
> Plugging the HP LD4200tm into a Ubuntu 10.10 system will cause the
> device to be recognized, create a usbhid device, create an event device,
> activate the evdev driver for Xorg, and put it on the list of X's inputs.
> So far, so good.
> 
> Touching the device causes the mouse pointer to jump to that location,
> even better.
> 
> But when I'm touching the screen, what happens is that the system
> generates a continuous stream of button presses/releases -- as if
> I moved the mouse to a particular location and then went crazy
> tapping on the mouse button.  This is the part that makes the system
> unusable.
> 
> One more data point is that if I touch the screen with a second
> finger, the button barrage stops, and it will now gracefully report
> the movement of the first finger.
> 
> So all I need to do is modify the driver for this device's protocol
> to not send all the unnecessary release/press events.
> 
> 
> Here is the data that leads me to believe the issue is at the usbhid
> layer:
> 
> 
> 1) Running "evtest /dev/input/event4" reveals that the button barrage
> is already occurring at the HID event layer.
> 
> 2) Watching the raw data on /dev/usb/hiddev2 does report a stream of
> data as the touchscreen is touched (and no data when it's not touched),
> looking at the output suggests that the device is only reporting touch/
> release events when the screen is actually touched or released.  And of
> course, even if the device were reporting things poorly, I figure the
> usbhid driver could be written to overcome this.
> 
> Fortunately, the data seems to be a constant 14-byte stride, so I
> wrote a simple awk script ("nexio") to reformat the data as I was
> figuring out the raw protocol.  Here's a sample of the reformatted
> data, followed by my estimation of the protocol:
>         % sudo xxd -c 14 -g 1 /dev/hidraw2 | nexio
>         0000000: 01 03 01 12d8 3357  02 02 15e1 1f71  01
>         000000e: 01 03 01 12cc 332a  02 02 15e1 1f71  01
>         000001c: 01 03 01 12de 3335  00 02 15e1 1f71  01
>         000002a: 01 03 01 12f4 3346  00 02 15e1 1f71  01
>         0000038: 01 03 01 1304 3352  00 02 15e1 1f71  01
>         0000046: 01 03 01 130c 3358  00 02 15e1 1f71  01
>         [... (next I stop touching the screen, and then touch it again)]
>         00009a0: 01 03 01 12d8 3357  00 02 15e1 1f71  01
>         00009ae: 01 03 01 12d8 3357  00 02 15e1 1f71  01
>         00009bc: 01 02 01 12d8 3357  00 02 15e1 1f71  01
>         00009ca: 01 03 01 10af 3681  02 02 15e1 1f71  01
>         00009d8: 01 03 01 10a5 3651  02 02 15e1 1f71  01
>         00009e6: 01 03 01 10b7 3654  00 02 15e1 1f71  01
>         [... (next is a multi-touch event)]
>         0000c78: 01 03 01 1019 3627  00 02 15e1 1f71  01
>         0000c86: 01 03 01 1019 3627  00 02 15e1 1f71  01
>         0000c94: 01 00 01 100b 35f8  00 02 1585 3110  00
>         0000ca2: 01 00 01 100e 3604  00 02 158a 311b  00
>         0000cb0: 01 00 01 1013 3615  00 02 1591 312b  00
>         0000cbe: 01 00 01 1017 3622  00 02 1596 3136  00
>         0000ccc: 01 00 01 1019 3628  00 02 1598 313c  00
>         0000cda: 01 00 01 1019 3629  00 02 1599 313d  00
>         0000ce8: 01 03 01 1019 3629  03 02 1598 313d  02
>         0000cf6: 01 03 01 1019 3628  03 02 1598 313c  02
>         0000d04: 01 03 01 1019 3627  03 02 1598 313b  02
>         0000d12: 01 03 01 1018 3627  03 02 1597 313a  02
>         [... (next I release both fingers -- not quite simultaneously)]
>         0000df2: 01 03 01 1019 3627  03 02 1598 3132  02
>         0000e00: 01 03 01 1019 3627  03 02 1598 3132  02
>         0000e0e: 01 03 01 1019 3627  02 02 1598 3132  01
>         0000e1c: 01 03 01 1019 3626  02 02 1598 3132  01
>         0000e2a: 01 03 01 1019 3626  00 02 1598 3132  01
>         0000e38: 01 03 01 1019 3626  00 02 1598 3132  01
>         0000e46: 01 03 01 1019 3626  00 02 1598 3132  01
>         0000e54: 01 03 01 1019 3626  00 02 1598 3132  01
>         0000e62: 01 03 01 1019 3625  00 02 1598 3132  01
>         0000e70: 01 02 01 1019 3625  00 02 1598 3132  01
> 
> Decoding the above:
> - column 1: just a reprint of the xxd byte count
> - column 2: always 01 -- probably a data packet sync byte
> - column 3: usually 03 (which means an on-going touch event)
> 		- 02 seems to indicate a touch-release event
> 		- 00 seems to indicate a transition to a dual-touch event
> - column 4: always 01 -- probably an indicator that the next two
> 		words are the X/Y values for touch #1
> - column 5: value of X location of touch #1
> - column 6: value of Y location of touch #1
> - column 7: usually 00
> 		- 02 seems to mean initiation of a single-touch event
> 		- 03 seems to indicate an on-going dual-touch event
> - column 8: always 02 -- probably an indicator that the next two
> 		words are the X/Y values for touch #2
> - column 9: value of X location of touch #2
> - column 10:value of Y location of touch #2
> - column 11: usually 01 or 02 representing the number of contact points
> 		- will be 00 when transitioning from single to dual
> 		  contact touch event
> 
> The rest of this email is a sample of some of the data that I've
> collected about what the system reports.  I think this should be
> sufficient to get across all necessary information, but I have
> more if warrented.
> 
>         % xinput list --short 10
>         Nexio Touch Device.   HID Multi-Touch           id=10
> [slave  pointer  (2)]
>         % xinput test 10
>         motion a[0]=15177 a[1]=5581 a[2]=15479 a[3]=7829 a[4]=0 a[5]=0
>         motion a[6]=0 a[7]=0 a[8]=0 a[9]=0 a[10]=0
>         button press   1
>         button release 1
>         button press   1
>         button release 1
>         button press   1
>         button release 1
>         button press   1
>         button release 1
>         button press   1
>         button release 1
>         button press   1
>         button release 1
>         [...]
> 
> So you can see that at first contact the location of the touch is reported,
> but then there is the continual stream of button press/release.
> 
> Here is the output from "evtest" from a single finger interaction:
>     % sudo evtest /dev/input/event4
>     Input driver version is 1.0.1
>     Input device ID: bus 0x3 vendor 0x1870 product 0x100 version 0x111
>     Input device name: "Nexio Touch Device.   HID Multi-Touch"
>     Supported events:
>       Event type 0 (Sync)
>       Event type 1 (Key)
>         Event code 272 (LeftBtn)
>         Event code 273 (RightBtn)
>         Event code 274 (MiddleBtn)
>         Event code 320 (ToolPen)
>         Event code 321 (ToolRubber)
>         Event code 322 (ToolBrush)
>         Event code 330 (Touch)
>       Event type 3 (Absolute)
>         Event code 0 (X)
>           Value  15129
>           Min        0
>           Max    16383
>         Event code 1 (Y)
>           Value   6425
>           Min        0
>           Max    16383
>         Event code 2 (Z)
>           Value  14859
>           Min        0
>           Max    16383
>         Event code 3 (Rx)
>           Value   7160
>           Min        0
>           Max    16383
>         Event code 4 (Ry)
>           Value      0
>           Min        0
>           Max    32767
>         Event code 5 (Rz)
>           Value      0
>           Min        0
>           Max    32767
>         Event code 6 (Throttle)
>           Value      0
>           Min        0
>           Max    16383
>         Event code 7 (Rudder)
>           Value      0
>           Min        0
>           Max    16383
>         Event code 40 (Misc)
>           Value      1
>           Min        0
>           Max        1
>         Event code 41 (?)
>           Value      2
>           Min        0
>           Max        1
>         Event code 42 (?)
>           Value      1
>           Min        0
>           Max        2
>       Event type 4 (Misc)
>         Event code 4 (ScanCode)
>     Testing ... (interrupt to exit)
>     Event: time 1287784276.760109, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784276.760112, type 1 (Key), code 330 (Touch), value 1
>     Event: time 1287784276.760119, type 3 (Absolute), code 0 (X),
> value 14976
>     Event: time 1287784276.760122, type 3 (Absolute), code 1 (Y),
> value 7291
>     Event: time 1287784276.760125, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784276.760127, type 1 (Key), code 330 (Touch), value 0
>     Event: time 1287784276.760130, type 1 (Key), code 321
> (ToolRubber), value 1
>     Event: time 1287784276.760139, -------------- Report Sync ------------
>     Event: time 1287784276.773107, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784276.773111, type 1 (Key), code 330 (Touch), value 1
>     Event: time 1287784276.773117, type 3 (Absolute), code 0 (X),
> value 14925
>     Event: time 1287784276.773120, type 3 (Absolute), code 1 (Y),
> value 7266
>     Event: time 1287784276.773123, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784276.773124, type 1 (Key), code 330 (Touch), value 0
>     Event: time 1287784276.773135, -------------- Report Sync ------------
>     Event: time 1287784276.785094, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784276.785099, type 1 (Key), code 330 (Touch), value 1
>     Event: time 1287784276.785105, type 3 (Absolute), code 0 (X),
> value 14937
>     Event: time 1287784276.785108, type 3 (Absolute), code 1 (Y),
> value 7269
>     Event: time 1287784276.785112, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784276.785113, type 1 (Key), code 330 (Touch), value 0
>     Event: time 1287784276.785116, type 1 (Key), code 321
> (ToolRubber), value 0
>     Event: time 1287784276.785125, -------------- Report Sync ------------
>     ^C
> 
> And here is the output of "evtest" from when I touched the screen with
> two fingers:
>     % sudo evtest /dev/input/event4
>     Input driver version is 1.0.1
>     Input device ID: bus 0x3 vendor 0x1870 product 0x100 version 0x111
>     Input device name: "Nexio Touch Device.   HID Multi-Touch"
>     Supported events:
>       Event type 0 (Sync)
>       Event type 1 (Key)
>         Event code 272 (LeftBtn)
>         Event code 273 (RightBtn)
>         Event code 274 (MiddleBtn)
>         Event code 320 (ToolPen)
>         Event code 321 (ToolRubber)
>         Event code 322 (ToolBrush)
>         Event code 330 (Touch)
>       Event type 3 (Absolute)
>         Event code 0 (X)
>           Value  14937
>           Min        0
>           Max    16383
>         Event code 1 (Y)
>           Value   7269
>           Min        0
>           Max    16383
>         Event code 2 (Z)
>           Value  14859
>           Min        0
>           Max    16383
>         Event code 3 (Rx)
>           Value   7160
>           Min        0
>           Max    16383
>         Event code 4 (Ry)
>           Value      0
>           Min        0
>           Max    32767
>         Event code 5 (Rz)
>           Value      0
>           Min        0
>           Max    32767
>         Event code 6 (Throttle)
>           Value      0
>           Min        0
>           Max    16383
>         Event code 7 (Rudder)
>           Value      0
>           Min        0
>           Max    16383
>         Event code 40 (Misc)
>           Value      1
>           Min        0
>           Max        1
>         Event code 41 (?)
>           Value      2
>           Min        0
>           Max        1
>         Event code 42 (?)
>           Value      1
>           Min        0
>           Max        2
>       Event type 4 (Misc)
>         Event code 4 (ScanCode)
>     Testing ... (interrupt to exit)
>     Event: time 1287784360.966997, type 1 (Key), code 320 (ToolPen),
> value 0
>     Event: time 1287784360.967004, type 3 (Absolute), code 0 (X),
> value 14717
>     Event: time 1287784360.967006, type 3 (Absolute), code 1 (Y),
> value 6211
>     Event: time 1287784360.967014, type 3 (Absolute), code 2 (Z),
> value 15680
>     Event: time 1287784360.967016, type 3 (Absolute), code 3 (Rx),
> value 6211
>     Event: time 1287784360.967019, type 3 (Absolute), code 42 (?), value 0
>     Event: time 1287784360.967020, -------------- Report Sync ------------
>     Event: time 1287784360.979997, type 3 (Absolute), code 0 (X),
> value 14667
>     Event: time 1287784360.980001, type 3 (Absolute), code 1 (Y),
> value 6189
>     Event: time 1287784360.980008, type 3 (Absolute), code 2 (Z),
> value 15626
>     Event: time 1287784360.980011, type 3 (Absolute), code 3 (Rx),
> value 6189
>     Event: time 1287784360.980014, -------------- Report Sync ------------
>     Event: time 1287784360.992997, type 3 (Absolute), code 0 (X),
> value 14684
>     Event: time 1287784360.993000, type 3 (Absolute), code 1 (Y),
> value 6195
>     Event: time 1287784360.993008, type 3 (Absolute), code 2 (Z),
> value 15640
>     Event: time 1287784360.993011, type 3 (Absolute), code 3 (Rx),
> value 6195
>     Event: time 1287784360.993014, -------------- Report Sync ------------
>     Event: time 1287784361.005998, type 3 (Absolute), code 0 (X),
> value 14715
>     Event: time 1287784361.006001, type 3 (Absolute), code 1 (Y),
> value 6220
>     Event: time 1287784361.006008, type 3 (Absolute), code 2 (Z),
> value 15660
>     Event: time 1287784361.006011, type 3 (Absolute), code 3 (Rx),
> value 6220
>     Event: time 1287784361.006014, -------------- Report Sync ------------
>     Event: time 1287784361.018000, type 3 (Absolute), code 0 (X),
> value 14745
>     Event: time 1287784361.018004, type 3 (Absolute), code 1 (Y),
> value 6278
>     Event: time 1287784361.018012, type 3 (Absolute), code 2 (Z),
> value 15674
>     Event: time 1287784361.018014, type 3 (Absolute), code 3 (Rx),
> value 6278
>     Event: time 1287784361.018017, -------------- Report Sync ------------
>     Event: time 1287784361.030997, type 3 (Absolute), code 0 (X),
> value 14767
>     Event: time 1287784361.031000, type 3 (Absolute), code 1 (Y),
> value 6358
>     Event: time 1287784361.031008, type 3 (Absolute), code 2 (Z),
> value 15680
>     Event: time 1287784361.031010, type 3 (Absolute), code 3 (Rx),
> value 6358
>     Event: time 1287784361.031013, -------------- Report Sync ------------
>     Event: time 1287784361.043996, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784361.043999, type 1 (Key), code 330 (Touch), value 1
>     Event: time 1287784361.044001, type 1 (Key), code 320 (ToolPen),
> value 1
>     Event: time 1287784361.044006, type 3 (Absolute), code 0 (X),
> value 14777
>     Event: time 1287784361.044008, type 3 (Absolute), code 1 (Y),
> value 6451
>     Event: time 1287784361.044012, type 1 (Key), code 321
> (ToolRubber), value 1
>     Event: time 1287784361.044016, type 3 (Absolute), code 2 (Z),
> value 15682
>     Event: time 1287784361.044019, type 3 (Absolute), code 3 (Rx),
> value 6451
>     Event: time 1287784361.044021, type 3 (Absolute), code 42 (?), value 2
>     Event: time 1287784361.044023, -------------- Report Sync ------------
>     Event: time 1287784361.057000, type 3 (Absolute), code 0 (X),
> value 14779
>     Event: time 1287784361.057004, type 3 (Absolute), code 1 (Y),
> value 6546
>     Event: time 1287784361.057012, type 3 (Absolute), code 3 (Rx),
> value 6546
>     Event: time 1287784361.057016, -------------- Report Sync ------------
>     Event: time 1287784361.069998, type 3 (Absolute), code 0 (X),
> value 14778
>     Event: time 1287784361.070001, type 3 (Absolute), code 1 (Y),
> value 6640
>     Event: time 1287784361.070009, type 3 (Absolute), code 2 (Z),
> value 15681
>     Event: time 1287784361.070011, type 3 (Absolute), code 3 (Rx),
> value 6640
>     Event: time 1287784361.070014, -------------- Report Sync ------------
>     Event: time 1287784361.081989, type 3 (Absolute), code 0 (X),
> value 14776
>     Event: time 1287784361.081992, type 3 (Absolute), code 1 (Y),
> value 6733
>     Event: time 1287784361.082000, type 3 (Absolute), code 2 (Z),
> value 15680
>     Event: time 1287784361.082002, type 3 (Absolute), code 3 (Rx),
> value 6733
>     Event: time 1287784361.082005, -------------- Report Sync ------------
>     Event: time 1287784361.094987, type 3 (Absolute), code 0 (X),
> value 14775
>     Event: time 1287784361.094990, type 3 (Absolute), code 1 (Y),
> value 6832
>     Event: time 1287784361.094998, type 3 (Absolute), code 2 (Z),
> value 15679
>     Event: time 1287784361.095000, type 3 (Absolute), code 3 (Rx),
> value 6832
>     Event: time 1287784361.095004, -------------- Report Sync ------------
>     Event: time 1287784361.107986, type 3 (Absolute), code 0 (X),
> value 14774
>     Event: time 1287784361.107990, type 3 (Absolute), code 1 (Y),
> value 6939
>     Event: time 1287784361.107999, type 3 (Absolute), code 3 (Rx),
> value 6939
>     Event: time 1287784361.108002, -------------- Report Sync ------------
>     Event: time 1287784361.121001, type 3 (Absolute), code 1 (Y),
> value 7042
>     Event: time 1287784361.121011, type 3 (Absolute), code 3 (Rx),
> value 7042
>     Event: time 1287784361.121014, -------------- Report Sync ------------
>     Event: time 1287784361.132987, type 3 (Absolute), code 0 (X),
> value 14779
>     Event: time 1287784361.132991, type 3 (Absolute), code 1 (Y),
> value 7138
>     Event: time 1287784361.132999, type 3 (Absolute), code 3 (Rx),
> value 7138
>     Event: time 1287784361.133003, -------------- Report Sync ------------
>     Event: time 1287784361.145998, type 3 (Absolute), code 0 (X),
> value 14794
>     Event: time 1287784361.146001, type 3 (Absolute), code 1 (Y),
> value 7221
>     Event: time 1287784361.146010, type 3 (Absolute), code 3 (Rx),
> value 7221
>     Event: time 1287784361.146014, -------------- Report Sync ------------
>     Event: time 1287784361.158999, type 3 (Absolute), code 0 (X),
> value 14815
>     Event: time 1287784361.159003, type 3 (Absolute), code 1 (Y),
> value 7284
>     Event: time 1287784361.159010, type 3 (Absolute), code 2 (Z),
> value 15684
>     Event: time 1287784361.159012, type 3 (Absolute), code 3 (Rx),
> value 7284
>     Event: time 1287784361.159016, -------------- Report Sync ------------
>     Event: time 1287784361.183994, type 4 (Misc), code 4 (ScanCode),
> value d0042
>     Event: time 1287784361.183996, type 1 (Key), code 330 (Touch), value 0
>     Event: time 1287784361.184014, -------------- Report Sync ------------
>     ^C
> 
> So you can see that the location of both fingers is reported for the
> multi-touch operation (with one finger reported as X & Y, and the
> second finger as Z & Rx).  But with one finger, it's a bunch of button
> presses and then nearly instantaneous releases.
> 
> 
> And one final bit of information.  Here is the relevant information from
> the udev.log:
>     -----------------------------
>     UDEV  [1287664208.316717] add
> /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/event4
> (input)
>     UDEV_LOG=3
>     ACTION=add
> 
> DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/event4
>     SUBSYSTEM=input
>     DEVNAME=/dev/input/event4
>     SEQNUM=1272
>     ID_INPUT=1
>     ID_INPUT_TABLET=1
>     ID_VENDOR=Nexio_Touch_Device.
>     ID_VENDOR_ENC=Nexio\x20Touch\x20Device.\x20\x20
>     ID_VENDOR_ID=1870
>     ID_MODEL=HID_Multi-Touch
>     ID_MODEL_ENC=HID\x20Multi-Touch
>     ID_MODEL_ID=0100
>     ID_REVISION=0006
>     ID_SERIAL=Nexio_Touch_Device._HID_Multi-Touch
>     ID_TYPE=hid
>     ID_BUS=usb
>     ID_USB_INTERFACES=:030000:
>     ID_USB_INTERFACE_NUM=00
>     ID_USB_DRIVER=usbhid
>     ID_PATH=pci-0000:00:1d.2-usb-0:2:1.0
>     MAJOR=13
>     MINOR=68
>     DEVLINKS=/dev/char/13:68
> /dev/input/by-id/usb-Nexio_Touch_Device._HID_Multi-Touch-event-mouse
> /dev/input/by-path/pci-0000:00:1d.2-usb-0:2:1.0-event-mouse
> 
>     UDEV  [1287664208.316759] add
> /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/mouse1
> (input)
>     UDEV_LOG=3
>     ACTION=add
> 
> DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4/mouse1
>     SUBSYSTEM=input
>     DEVNAME=/dev/input/mouse1
>     SEQNUM=1273
>     ID_INPUT=1
>     ID_INPUT_TABLET=1
>     ID_VENDOR=Nexio_Touch_Device.
>     ID_VENDOR_ENC=Nexio\x20Touch\x20Device.\x20\x20
>     ID_VENDOR_ID=1870
>     ID_MODEL=HID_Multi-Touch
>     ID_MODEL_ENC=HID\x20Multi-Touch
>     ID_MODEL_ID=0100
>     ID_REVISION=0006
>     ID_SERIAL=Nexio_Touch_Device._HID_Multi-Touch
>     ID_TYPE=hid
>     ID_BUS=usb
>     ID_USB_INTERFACES=:030000:
>     ID_USB_INTERFACE_NUM=00
>     ID_USB_DRIVER=usbhid
>     ID_PATH=pci-0000:00:1d.2-usb-0:2:1.0
>     MAJOR=13
>     MINOR=33
>     DEVLINKS=/dev/char/13:33
> /dev/input/by-id/usb-Nexio_Touch_Device._HID_Multi-Touch-mouse
> /dev/input/by-path/pci-0000:00:1d.2-usb-0:2:1.0-mouse
>     -----------------------------
> 
> And if that isn't enough info, I'm happy to provide more.
> 
> 
>     Thanks for whatever suggestions you can provide,
>     Bill
> 
> -- 
> Bill Sherman
> Sr. Technology Advisor
> Advanced Visualization Lab
> Pervasive Technology Inst
> Indiana University
> shermanw@indiana.edu
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Dmitry

  reply	other threads:[~2010-11-01 21:15 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-25 23:48 usbhid: HP LD4200tm touchscreen ALMOST works William Sherman
2010-11-01 21:14 ` Dmitry Torokhov [this message]
2010-11-01 21:22   ` Jiri Kosina
2010-11-02 13:46     ` William Sherman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101101211456.GA30692@core.coreip.homeip.net \
    --to=dmitry.torokhov@gmail.com \
    --cc=jkosina@suse.cz \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shermanw@indiana.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.