From owner-freebsd-questions@FreeBSD.ORG Fri Apr 20 21:03:00 2012 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C51B91065672 for ; Fri, 20 Apr 2012 21:03:00 +0000 (UTC) (envelope-from rfg@tristatelogic.com) Received: from outgoing.tristatelogic.com (segfault.tristatelogic.com [69.62.255.118]) by mx1.freebsd.org (Postfix) with ESMTP id 858458FC12 for ; Fri, 20 Apr 2012 21:02:59 +0000 (UTC) Received: from segfault-nmh-helo.tristatelogic.com (localhost [127.0.0.1]) by segfault.tristatelogic.com (Postfix) with ESMTP id 0301D50828; Fri, 20 Apr 2012 14:02:59 -0700 (PDT) To: Polytropon In-Reply-To: <20120420004050.9b3f1a3a.freebsd@edvax.de> Date: Fri, 20 Apr 2012 14:02:59 -0700 Message-ID: <13188.1334955779@tristatelogic.com> From: "Ronald F. Guilmette" Cc: freebsd-questions@freebsd.org Subject: Re: Changing psm (mouse) resolution? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Apr 2012 21:03:00 -0000 In message <20120420004050.9b3f1a3a.freebsd@edvax.de>, Polytropon wrote: >On Thu, 19 Apr 2012 14:25:48 -0700, Ronald F. Guilmette wrote: >> >> >> The man page for the psm driver says: >> >> ... The current resolution can be changed at runtime. >> >> Unfortunately, it fails to mention any sort of command line utility >> that would provide this functionality. >... >> Is there a command line utility that provides this functionality? Or do >> I need to write one from scratch, using the ioctl calls that are documented >> in the man page? > >See "man moused" for details, especially the -r option >should be useful. You can combine it with -f for testing. According >to the manpage, something like > > # moused -f -r 300 -a 2.0 -p /dev/psm0 -t ps/2 First, thanks to both Polytropon and Dan Nelson for replying with relevant information. Unfortunately, even though I now know about the -r option for moused, this has not been enough to resolve the problem I am having, and I'm going to need to delve into this more deeply. Here is the problem in a nutshell: My old mouse was (is) a relatively ancient Logitech M-BJ69. This is a wired mouse. It works great and I have been using it for many years. But it was getting long in the tooth (and I never mich liked the wire, which somehow always got tangled) so recently I acquired I new Logitech MX600 wireless mose. (This is actually an older model now, but still much newer than my M-BJ69. I got the MX600 specifically because the specs for it seemed to indicate that it would work also with a DVI+PS/2 KVM I have here, and also with my old Windows 2000 system.) My new MX600 does indeed ``work'' (for some value of ``work'') on both my Freebsd 8.2 system and also on my Win 2000 system, and also with my KVM. The problem however is that its sensitivity is (by my mesurement) at least 3x what my old mouse... the one that I am accustomed to using... had. So when I move the MX600 just a little, the mouse cursor flys all of the way across my screen. For me, this makes my brand new MX600 unusable. And given that I just purchased it, I am disappointed, as you might imagine. OK, so since Polytropon and Dan Nelson were kind enough to respond the other day, I have now added the following to my /etc/rc.conf file and then rebooted: moused_flags="-r low" This apparently made no difference at all in the behavior of the mouse, so I am now greatly disheartened. But I would still very much like to solve this problem, and I would like to receive suggestions as to how to proceed. First however, allow me to provide one data point which is relevant to all this... On Windows, Logitech supplies a small program called "SetPoint" which allows a user of one of their mice to adjust the sensitivity aka "resolution" (or what Logitech calls "pointer speed") of the currently connected mouse. Although I can't yet get this program to work properly on Windows 2000, I have a Windows 7 system where it does work, and I've tried hooking up my new MX600 to that (Win 7) system and then running Logitech's SetPoint program. The interesting thing is that SetPoint provides a slider in the user interface that allows the user to adjust the "pointer speed". I have just now checked, and there are a grand total of 11 different positions along this slider which the user can select when the MX600 is connected to the system in question. The only point I am getting at is that in an ideal Universe, even under FreeBSD a user would be able to select any one of these same 11 resolution values for the currently attached mouse. I am dissuaded from thinking that FreeBSD currently supports selection of any one of those different resolution levels by the code I am looking at within /usr/src/sys/dev/atkbdc/psm.c: ... if (mode.resolution >= 200) mode.resolution = MOUSE_RES_HIGH; else if (mode.resolution >= 100) mode.resolution = MOUSE_RES_MEDIUMHIGH; else if (mode.resolution >= 50) mode.resolution = MOUSE_RES_MEDIUMLOW; else if (mode.resolution > 0) mode.resolution = MOUSE_RES_LOW; ... In that same hypothetical ideal Universe, it would also be quite Nice to be able to adjust the mouse sensitivity level EVEN while running X, whereas given that (under FreeBSD) the mouse resolution is fixed at moused invocation time, it seems that it is not possible to adjust this value AT ALL, ever, except, effectively, at boot time. (Yes, I did try writing a small program that would make an ioctl() to change the resolution on the fly, but apparently, once moused has gotten ahold of the device file, one cannot even open it again in preparation for making the ioctl() call. I see that moused supports SIGHUP reinitialization. Given that it already supports THAT, it is really a cryin' shame that there ain't no such thing as /etc/moused.conf wherein it could pick up new operating parameters on the fly.) So anyway, as I've said, I would really like to get this new mouse working properly. It seems clear from the code above (supporting only 4 levels of resolution, rather than, say, 11) that there is some Logitech-specific protocol stuff that nobody ever got 'round to implementing, and that this additional protocol stuff is what I need in order to get this mouse working the way I want. (Well, that's the way it looks anyway, but what do I know?) I am guessing that if I really want to get to the bottom of this, I may need to communicate directly with whoever is the current maintainer of the psm driver. The problem is that even though I am looking at the psm.c source file, I can't quite make out who that might me. Can any of you kind folks help me out here? All I need is an e-mail address for the current psm maintainer and I guess I can take it from there. Regards, rfg P.S. I have a "support" question pending with Logitech about the issue of SetPoint not being able to see the MX600 at all under Windows 2000. (They may elect not to even bother answering that since the MX600 model has been declared End-Of-Life by them. Sigh.) However when and if they ever respond, you can bet your booty that I also intend to ask them what the exact (dpi) _numbers_ are that correspond to those 11 separate sensitivities that can be set for the MX600 under Win 7. Knowing those numbers may perhaps help me in my efforts to persuade moused/psm to Do The Right Thing. (Then again, maybe not.) P.P.S. Assuming that the vendor is one of those pucker ass ones that refuses to give out protocol specifics to the open source community, how does one go about reverse engineering the protocol for a USB device like this? What I mean to ask is: Is there already an established methodology (hardware+software) whereby one can easily and inexpensively eavesdrop on a set of USB transactions? You know, like between Mr. J. Random Mouse and Windoze?