summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-10-25 02:05:44 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-10-25 02:05:44 +0200
commitc38cd508057ab0abda846ed13786d56d627db7e2 (patch)
tree11a540f2c176dcb08b9e28bef65a13176c494628 /sys
parent88486c75292e2138ebe861ca0130503c21d2f110 (diff)
rio: dont serve a kbd file per window when we didnt got one from the environment
9vx doesnt provide a /dev/kbd file and rio faking one up causes problems with vncv. (issue #223)
Diffstat (limited to 'sys')
-rw-r--r--sys/src/cmd/rio/dat.h1
-rw-r--r--sys/src/cmd/rio/fsys.c2
-rw-r--r--sys/src/cmd/rio/rio.c3
3 files changed, 6 insertions, 0 deletions
diff --git a/sys/src/cmd/rio/dat.h b/sys/src/cmd/rio/dat.h
index 45159323d..6fba1af49 100644
--- a/sys/src/cmd/rio/dat.h
+++ b/sys/src/cmd/rio/dat.h
@@ -337,6 +337,7 @@ Window *wkeyboard; /* window of simulated keyboard */
int nwindow;
int snarffd;
int gotscreen;
+int servekbd;
Window *input;
QLock all; /* BUG */
Filsys *filsys;
diff --git a/sys/src/cmd/rio/fsys.c b/sys/src/cmd/rio/fsys.c
index b0ae83b5e..94a35442f 100644
--- a/sys/src/cmd/rio/fsys.c
+++ b/sys/src/cmd/rio/fsys.c
@@ -365,6 +365,8 @@ skipdir(char *name)
return 1;
if(gotscreen && strcmp(name, "screen")==0)
return 1;
+ if(!servekbd && strcmp(name, "kbd")==0)
+ return 1;
return 0;
}
diff --git a/sys/src/cmd/rio/rio.c b/sys/src/cmd/rio/rio.c
index 26b9b227d..5d7fe2e91 100644
--- a/sys/src/cmd/rio/rio.c
+++ b/sys/src/cmd/rio/rio.c
@@ -1340,6 +1340,9 @@ kbdproc(void *arg)
if((kfd = open("/dev/kbd", OREAD)) >= 0){
close(fd);
+ /* only serve a kbd file per window when we got one */
+ servekbd = 1;
+
/* read kbd state */
while((n = read(kfd, buf, sizeof(buf))) > 0)
chanprint(c, "%.*s", n, buf);