diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-08-10 08:47:43 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-08-10 08:47:43 +0200 |
commit | bfe852b3a29799c8810c735acbeba907f02881f2 (patch) | |
tree | 3ac873a26ce634f7d6f9fac625dbbb62af7308d1 | |
parent | 2012ba4d03039597b4eb7ad2174949ab666105f1 (diff) | |
download | plan9front-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.c | 7 |
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"); |