DragonFly BSD
DragonFly users List (threaded) for 2004-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Logitech USB Keyboard/Mouse problems and fix


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 8 Oct 2004 11:58:34 -0700 (PDT)

:Hello all,
:
:I recently installed DragonFlyBSD. At first I had trouble using my Logitech
:Desktop Pro keyboard/mouse combination. The problem is the wheel, which was
:not detected properly. Under Linux I can choose the IMPS/2 protocol, but
:that is not available on DragonFly. Attaching it on the USB port has other
:problems (mouse not working, keyboard ghosting characters). However, I did
:find a fix at http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dkern/63837.
:
:Would it be possible to incorporate this fix into DragonFlyBSD? I changed my
:copy of the source and installed the new kernel. The mouse is now
:recognized and works flawlessly. The keyboard still repeats some characters
:when typing fast. It is a big improvement though.
:
:If you know of some other fix, please let me know. Maybe someone knows a
:solution to the character repetition problem.
:
:Thanks,
:Roland

    The answer is, absolutely!  But that PR has two patches in it and I'm
    not sure which one you tried.  If you tried the first one could you
    please try the second one instead? (remove the first one and apply the
    second one).

    I've included the second patch again DFly for reference.

    I'd like to commit the second one if possible instead of the first one,
    as soon as you tell me it works!

					-Matt
					Matthew Dillon 
					<dillon@xxxxxxxxxxxxx>


Index: hid.c
===================================================================
RCS file: /cvs/src/sys/bus/usb/hid.c,v
retrieving revision 1.5
diff -u -r1.5 hid.c
--- hid.c	12 Mar 2004 03:43:06 -0000	1.5
+++ hid.c	8 Oct 2004 18:56:33 -0000
@@ -373,10 +373,12 @@
 	struct hid_item h;
 	int size, id;
 
+	h.report_ID = 0;
 	id = 0;
-	for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); )
-		if (h.report_ID != 0)
+	for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); ) {
+		if (h.report_ID != 0 && id == 0)
 			id = h.report_ID;
+	}
 	hid_end_parse(d);
 	size = h.loc.pos;
 	if (id != 0) {



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