summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-08-10 08:47:43 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-08-10 08:47:43 +0200
commitbfe852b3a29799c8810c735acbeba907f02881f2 (patch)
tree3ac873a26ce634f7d6f9fac625dbbb62af7308d1
parent2012ba4d03039597b4eb7ad2174949ab666105f1 (diff)
downloadplan9front-bfe852b3a29799c8810c735acbeba907f02881f2.tar.xz
nusb/kb: *really* only send to mousein when mouse state actually changes (zero detlas, same buttons)
-rw-r--r--sys/src/cmd/nusb/kb/kb.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/src/cmd/nusb/kb/kb.c b/sys/src/cmd/nusb/kb/kb.c
index 4961a169b..695dc9ec6 100644
--- a/sys/src/cmd/nusb/kb/kb.c
+++ b/sys/src/cmd/nusb/kb/kb.c
@@ -459,7 +459,7 @@ ptrwork(void* a)
{
char err[ERRMAX];
char mbuf[80];
- int c, b, nerrs;
+ int c, b, nerrs, lastb;
KDev* f = a;
Ptr p;
@@ -467,6 +467,7 @@ ptrwork(void* a)
sethipri();
memset(&p, 0, sizeof(p));
+ lastb = 0;
nerrs = 0;
for(;;){
@@ -508,6 +509,10 @@ ptrwork(void* a)
if(p.z != 0)
b |= (p.z > 0) ? 8 : 16;
+ if(p.x == 0 && p.y == 0 && p.z == 0 && b == lastb)
+ continue;
+ lastb = b;
+
seprint(mbuf, mbuf+sizeof(mbuf), "m%11d %11d %11d", p.x, p.y, b);
if(write(f->infd, mbuf, strlen(mbuf)) < 0)
kbfatal(f, "mousein i/o");