diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-10-07 06:49:34 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-10-07 06:49:34 +0200 |
commit | 8046234275b686380321ae6279cc9993456c29b4 (patch) | |
tree | ad189ea0d2fb83d026a78c3b83abb02023c6dfc7 /sys/src/cmd/aux/kbdfs | |
parent | 8aeddcf5bb503282e837080146d2e5ad4a225015 (diff) |
kbdfs: implement keyboard mouse buttons with /dev/mousein
Diffstat (limited to 'sys/src/cmd/aux/kbdfs')
-rw-r--r-- | sys/src/cmd/aux/kbdfs/kbdfs.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/src/cmd/aux/kbdfs/kbdfs.c b/sys/src/cmd/aux/kbdfs/kbdfs.c index 8b125db59..323b23a54 100644 --- a/sys/src/cmd/aux/kbdfs/kbdfs.c +++ b/sys/src/cmd/aux/kbdfs/kbdfs.c @@ -93,6 +93,7 @@ int scanfd; int ledsfd; int consfd; int mctlfd; +int msinfd; int notefd; int kbdopen; @@ -354,13 +355,24 @@ keyproc(void *) { Rune rb[Nscan+1]; Key key; - int i, nb; + int i, nb, mouseb; char *s; threadsetname("keyproc"); nb = 0; + mouseb = 0; while(recv(keychan, &key) > 0){ + if(msinfd >= 0 && key.r >= Kmouse+1 && key.r <= Kmouse+5){ + i = 1<<(key.r-(Kmouse+1)); + if(key.down) + mouseb |= i; + else + mouseb &= ~i; + fprint(msinfd, "m%11d %11d %11d", 0, 0, mouseb); + continue; /* ignored when mapped to mouse button */ + } + rb[0] = 0; for(i=0; i<nb && rb[i+1] != key.b; i++) ; @@ -898,7 +910,7 @@ kbmapwrite(Req *req) else goto Badarg; }else if(*lp == 'M' && ('1' <= lp[1] && lp[1] <= '5')) - r = 0xF900+lp[1]-'0'; + r = Kmouse+lp[1]-'0'; else if(*lp>='0' && *lp<='9') /* includes 0x... */ r = strtoul(lp, &lp, 0); else @@ -1386,6 +1398,7 @@ threadmain(int argc, char** argv) scanfd = eopen("/dev/scancode", OREAD); ledsfd = eopen("/dev/leds", OWRITE); mctlfd = eopen("/dev/mousectl", OWRITE); + msinfd = eopen("/dev/mousein", OWRITE); if(*argv) consfd = eopen(*argv, OREAD); |