cvs commit: src/sys/sys mouse.h src/sys/dev/usb ums.c usbhid.h

Julian Elischer julian at elischer.org
Sun Dec 12 16:12:36 PST 2004


Ian Dowse wrote:
> In message <20041212133752.GE68019 at tuatara.fishballoon.org>, Scott Mitchell wri
> tes:
> 
>>On Sun, Dec 12, 2004 at 12:23:05PM +0000, Ceri Davies wrote:
>>
>>>On Sat, Dec 11, 2004 at 10:39:10PM -0700, Scott Long wrote:
>>>
>>>>Julian Elischer wrote:
>>>>
>>>>> Add support for USB Microsoft Intellimouse
>>>>> 
>>>>> PR:             kern/70607
>>>>> Submitted by:   Matt Wright <matt at consultmatt.co.uk>
>>>>> MFC after:      1 week
>>>>
>>>>What 'support' does this add?
>>>
>>>They have another axis on the wheel: you can tilt it from left to right.
>>>
>>>Ceri
>>
>>Apart from that, the device in question (wireless Intellimouse 2.0) didn't
>>work as any kind of mouse without this patch.
>>
>>	Scott
> 
> 
> As pointed out in the PR though, it doesn't seem necessary to change
> struct mousestatus and the MOUSE_GETSTATUS ioctl API just to make
> the device work. All other mouse drivers in the tree will need to
> be updated to initialise the new `dt' field. There's also one part
> of the patch that looks as if it could easily break other devices:
> 
>  	ibuf = sc->sc_ibuf;
>  	if (sc->sc_iid) {
> -		if (*ibuf++ != sc->sc_iid)
> -			return;
> +		ibuf++;
>  	}
>  
> +	/* The M$ Wireless Intellimouse 2.0 sends 1 extra leading byte of
> +	 * data compared to most USB mice. This byte frequently switches
> +	 * from 0x01 (usual state) to 0x02. I assume it is to allow
> +	 * extra, non-standard, reporting (say battery-life). However
> +	 * at the same time it generates a left-click message on the button
> +	 * byte which causes spurious left-click's where there shouldn't be.
> +	 * This should sort that. */
> +	if ((sc->sc_ibuf != ibuf) && (sc->sc_ibuf[0] == 0x02)) 
> +		return;
> +
>  	dx =  hid_get_data(ibuf, &sc->sc_loc_x);
>  	dy = -hid_get_data(ibuf, &sc->sc_loc_y);
>  	dz = -hid_get_data(ibuf, &sc->sc_loc_z);
> 
> BTW, Anish Mistry has been looking at porting a more recent version
> of NetBSD's HID fremework to FreeBSD, which I believe may fix the
> real bugs that the above code just tries to work around.
> 
> Ian

Yeah I had a quick exchange with Anish.
I'm trying to make a small dent on teh HUGE pile of USB PRs we've grown.
if you have any thoughts about this, let me know and we can sort it out quickly.



More information about the cvs-all mailing list