]> git.lizzy.rs Git - plan9front.git/commitdiff
devmouse: exclude sroll-wheel buttons from differential button handling
authorcinap_lenrek <cinap_lenrek@felloff.net>
Wed, 25 Dec 2013 15:52:55 +0000 (16:52 +0100)
committercinap_lenrek <cinap_lenrek@felloff.net>
Wed, 25 Dec 2013 15:52:55 +0000 (16:52 +0100)
preventing wheel buttons 4 and 5 fron getting stuck
with multiple input devices.

sys/src/9/port/devmouse.c

index f361dcb08c80f3a3a85f4518f7c012ff378efbb3..14db40ecf80e0e17eca0c7ae9e124a23ffaa72da 100644 (file)
@@ -374,7 +374,7 @@ mousewrite(Chan *c, void *va, long n, vlong)
        Cmdbuf *cb;
        Cmdtab *ct;
        char buf[64];
-       int b, msec;
+       int b, z, msec;
        Mousestate *m;
 
        p = va;
@@ -456,6 +456,11 @@ mousewrite(Chan *c, void *va, long n, vlong)
                msec = strtol(p, &p, 0);
                if(msec == 0)
                        msec = TK2MS(MACHP(0)->ticks);
+
+               /* exclude wheel */
+               z = b & (8|16);
+               b ^= z;
+
                m = (Mousestate*)c->aux;
                m->xy = pt;
                m->msec = msec;
@@ -463,6 +468,11 @@ mousewrite(Chan *c, void *va, long n, vlong)
                m->buttons ^= b;
                mouseinbuttons = (m->buttons & b) | (mouseinbuttons & ~b);
                b = mouse.buttons & ~b;
+
+               /* include wheel */
+               b &= ~(8|16);
+               b ^= z;
+
                if(buf[0] == 'A')
                        absmousetrack(pt.x, pt.y, b, msec);
                else