<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I am developing under a PPC embedded system running 2.6.30.2 Linux, xserver from debian distribution of 7.3+19, xf86-input-mouse 1.3.0. I have a custom board that I am sending Microsoft mouse 3 byte protocol through a pipe to the input of xserver via the mouse driver. I was able to make small movements, all positive, but if I moved negative, the mouse would jump a large amount in the positive direction. I checked out from git and built the mouse driver and turned on debug to find out and it is not accepting negative numbers correctly in the case of PROT_MS. By changing the cast on lines 1304/1305 in mouse.c from (char) to (signed char), I fixed the problem. I don't know if this exists on other (non PPC) platforms.  I also noticed the potential for the same problem in a few more places. I am using gcc-4.3.<div><br></div><div>The source I have is from:</div><div><div><font face="Verdana" size="2">xf86-input-mouse-1.4.0-13-gf292f23</font></div><div><font class="Apple-style-span" face="Verdana"><span class="Apple-style-span" style="font-size: small;"><br></span></font></div><div><span class="Apple-style-span" style="font-size: small;"><span class="Apple-style-span" style="font-size: medium; "><div><font face="Verdana" size="2">diff --git a/src/mouse.c b/src/mouse.c<br>index aff2512..b59a138 100644<br>--- a/src/mouse.c<br>+++ b/src/mouse.c<br>@@ -1301,8 +1301,8 @@ MouseReadInput(InputInfoPtr pInfo)<br>                buttons = (pMse->lastButtons & 2)<br>                        | ((int)(pBuf[0] & 0x20) >> 3)<br>                        | ((int)(pBuf[0] & 0x10) >> 4);<br>-           dx = (char)(((pBuf[0] & 0x03) << 6) | (pBuf[1] & 0x3F));<br>-           dy = (char)(((pBuf[0] & 0x0C) << 4) | (pBuf[2] & 0x3F));<br>+           dx = (signed char)(((pBuf[0] & 0x03) << 6) | (pBuf[1] & 0x3F));<br>+           dy = (signed char)(((pBuf[0] & 0x0C) << 4) | (pBuf[2] & 0x3F));<br>            break;</font></div><div><font face="Verdana" size="2">        case PROT_GLIDE:        /* ALPS GlidePoint */</font></div></span></span></div><div>Donald Kayser<br><div><br></div><div><br></div></div></div></body></html>