Xorg 7.2 and FreeBSD 6.2-p5 VMWARE vmmouse problem

Sam Lawrance boris at brooknet.com.au
Wed Jan 9 00:41:57 PST 2008


On 09/01/2008, at 10:31 AM, Bob Finch wrote:

> On 10/10/2007, at 17:00:22, Sam Lawrance wrote:
>> On 10/07/2007, at 11:53 AM, Webster, Andrew wrote:
>
>>> Howdy,
>>>
>>>
>>>
>>> I was successfully able to get Xorg upgraded to 7.2 by just
>>> installing them from scratch as opposed to trying to upgrading an
>>> existing system, BUT I’ve run into a problem…
>>>
>>>
>>>
>>> While running VMWare Server 1.0.3 with FreeBSD 6.2-p5 and Xorg 7.2,
>>> the mouse pointer behaves very oddly.
>>>
>>> The pointer appears in the wrong place on the screen for where the
>>> system actually thinks that it is.
>>>
>>> I’m using the vmmouse driver part of the Xorg system, as the
>>> regular mouse driver doesn’t appear to work at all, unless some
>>> settings are amiss.
>>>
>>> I really like the vmmouse drive because you can move the pointer in/
>>> out of the window as you do with regular windows guest OSes.
>>>
>>>
>>>
>>> Has anyone experienced similar problems and/ or know of a fix for
>>> this?
>>>
>>
>> Andrew,
>>
>> I just set up VMWare Fusion with FreeBSD and have a problem that
>> might be related.  Ascii art time:
>> _____________
>> |_|         |
>> |           |
>> |           |
>> |___________|
>>
>> The pointer appears normally on the screen.  However, clicking around
>> the screen does not work except in a small area in the top left
>> corner.  Moving the mouse within this tiny corner seems to scale up
>> and operate on the entire screen.  Eg. if I click and drag across the
>> tiny corner, I can see the selection appear across the entire  
>> desktop.
>>
>> Is this similar to your issue?  Did you find a resolution?
>
> Sam,
>
> I ran into this problem on FreeBSD 7.0 RC1 with Xorg 7.3 using the
> VMWare mouse driver (vmmouse).
>
> Apparently, X server 1.4.0 in Xorg 7.3 no longer calls the  
> conversion_proc
> function in the mouse driver.  The VMWare mouse driver depends on that
> call to scale the mouse coordiates to the screen size.
>
> As a workaround, I fetched the x11-drivers/xf86-input-vmmouse port and
> patched src/vmmouse.c by hand before installing it:
>
> bob polaris[9]: diff -u orig/xf86-input-vmmouse-12.4.3/src/ 
> vmmouse.c xf86-input-vmmouse-12.4.3/src/vmmouse.c
> --- orig/xf86-input-vmmouse-12.4.3/src/vmmouse.c	2007-09-25  
> 16:11:47.000000000 -0700
> +++ xf86-input-vmmouse-12.4.3/src/vmmouse.c	2008-01-08  
> 14:58:59.000000000 -0800
> @@ -964,8 +964,11 @@
>     VMMOUSE_INPUT_DATA  vmmouseInput;
>     int ps2Buttons = 0;
>     int numPackets;
> +   VMMousePrivPtr mPriv;
> +   double factorX, factorY;
>
>     pMse = pInfo->private;
> +   mPriv = pMse->mousePriv;
>     while((numPackets = VMMouseClient_GetInput(&vmmouseInput))){
>        if (numPackets == VMMOUSE_ERROR) {
>           VMMouseClient_Disable();
> @@ -990,6 +993,13 @@
>        dy = vmmouseInput.Y;
>        dz = (char)vmmouseInput.Z;
>        dw = 0;
> +
> +      /* X server 1.4.0 does not call VMMouseConvertProc() so we  
> scale coordinates here */
> +      factorX = ((double) screenInfo.screens[mPriv->screenNum]- 
> >width) / (double) 65535;
> +      factorY = ((double) screenInfo.screens[mPriv->screenNum]- 
> >height) / (double) 65535;
> +      dx = dx * factorX + 0.5;
> +      dy = dy * factorY + 0.5;
> +
>        /* post an event */
>        pMse->PostEvent(pInfo, buttons, dx, dy, dz, dw);
>     }

Oh wow, I owe you a beer!

Any idea why this does not affect everyone using vmware?




More information about the freebsd-questions mailing list