diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-08-10 07:59:54 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-08-10 07:59:54 +0200 |
commit | f887f713207d40d1d3269b1e1bc29dc53697ab85 (patch) | |
tree | b9bb1184d89872623b6d0754a75e2851d4c2bc81 /sys/src/cmd/nusb/kb/kb.c | |
parent | dfe6118e302d63d21251aa18fb1d12e15bcbe482 (diff) |
nusb/kb: only send to mousein when mouse state actually changes
Diffstat (limited to 'sys/src/cmd/nusb/kb/kb.c')
-rw-r--r-- | sys/src/cmd/nusb/kb/kb.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/src/cmd/nusb/kb/kb.c b/sys/src/cmd/nusb/kb/kb.c index 4961a169b..4fb32178e 100644 --- a/sys/src/cmd/nusb/kb/kb.c +++ b/sys/src/cmd/nusb/kb/kb.c @@ -460,6 +460,7 @@ ptrwork(void* a) char err[ERRMAX]; char mbuf[80]; int c, b, nerrs; + int lastx, lasty, lastb; KDev* f = a; Ptr p; @@ -467,6 +468,7 @@ ptrwork(void* a) sethipri(); memset(&p, 0, sizeof(p)); + lastx = lasty = lastb = 0; nerrs = 0; for(;;){ @@ -508,7 +510,14 @@ ptrwork(void* a) if(p.z != 0) b |= (p.z > 0) ? 8 : 16; - seprint(mbuf, mbuf+sizeof(mbuf), "m%11d %11d %11d", p.x, p.y, b); + if(lastx == p.x && lasty == p.y && lastb == b) + continue; + + lastx = p.x; + lasty = p.y; + lastb = b; + + seprint(mbuf, mbuf+sizeof(mbuf), "m%11d %11d %11d", lastx, lasty, lastb); if(write(f->infd, mbuf, strlen(mbuf)) < 0) kbfatal(f, "mousein i/o"); } |