Subject: [patch] X misparses the EXPS/2 mouse protocol.
Package: xserver-xfree86
Severity: normal

To make a long story short, X is wrong in how it parses the wheel data
for EXPS/2 protocol mice.

0xF and 0x1 are used to indicate the first wheel, and 0xE and 0x2 for
the second wheel.
(Yes, I have real hardware which generates this.)

diff -ur build-tree/xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c 
build-tree.mine/xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c
--- xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c  2001-12-19 
11:05:22.000000000 -0500
+++ xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c  2002-10-26 
18:56:12.000000000 -0400
@@ -1423,7 +1423,12 @@
                      (pBuf[3] & 0x20) >> 1;        /* button 5 */
            dx = (pBuf[0] & 0x10) ?    pBuf[1]-256  :  pBuf[1];
            dy = (pBuf[0] & 0x20) ?  -(pBuf[2]-256) : -pBuf[2];
-           dz = (pBuf[3] & 0x08) ? (pBuf[3] & 0x0f) - 16 : (pBuf[3] & 0x0f);
+           switch (pBuf[3] & 0x0F) {
+               case 0x01: dz = 1; break;
+               case 0x0f: dz = -1; break;
+               case 0x02: dw = 1; break;
+               case 0x0e: dw = -1; break;
+           }
            break;
 
        case PROT_MMPS2:        /* MouseMan+ PS/2 */

-- 
        1024D/E65A7801 Zephaniah E. Hull <[EMAIL PROTECTED]>
           92ED 94E4 B1E6 3624 226D  5727 4453 008B E65A 7801
            CCs of replies from mailing lists are requested.

It's also your right to f*ck up your own version of Linux, but you're
not getting close to mine.

                Linus

Attachment: pgpkGHbtq35EA.pgp
Description: PGP signature

Reply via email to