summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/kbdfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-10-07 06:49:34 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-10-07 06:49:34 +0200
commit8046234275b686380321ae6279cc9993456c29b4 (patch)
treead189ea0d2fb83d026a78c3b83abb02023c6dfc7 /sys/src/cmd/aux/kbdfs
parent8aeddcf5bb503282e837080146d2e5ad4a225015 (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.c17
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);