User Tools

Site Tools


wiki:pach_for_vmmouse_of_freebsd7_xorg_7.3

If you installed freebsd 7.0 in the vmware server, you will found the pointer always appears in the wrong place on the screen, actually is the right bottom corner of screen when you try to run X. A guy gave the patch to fix the problem, I copied it.

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);
  }

the original url, http://www.nabble.com/Re:-Xorg-7.2-and-FreeBSD-6.2-p5-VMWARE-vmmouse-problem-td14702419.html

wiki/pach_for_vmmouse_of_freebsd7_xorg_7.3.txt · Last modified: 2008/12/01 03:17 by mirnshi