shithub: riscv

Download patch

ref: c38cd508057ab0abda846ed13786d56d627db7e2
parent: 88486c75292e2138ebe861ca0130503c21d2f110
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Oct 24 22:05:44 EDT 2014

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)

--- a/sys/src/cmd/rio/dat.h
+++ b/sys/src/cmd/rio/dat.h
@@ -337,6 +337,7 @@
 int		nwindow;
 int		snarffd;
 int		gotscreen;
+int		servekbd;
 Window	*input;
 QLock	all;			/* BUG */
 Filsys	*filsys;
--- a/sys/src/cmd/rio/fsys.c
+++ b/sys/src/cmd/rio/fsys.c
@@ -365,6 +365,8 @@
 		return 1;
 	if(gotscreen && strcmp(name, "screen")==0)
 		return 1;
+	if(!servekbd && strcmp(name, "kbd")==0)
+		return 1;
 	return 0;
 }
 
--- a/sys/src/cmd/rio/rio.c
+++ b/sys/src/cmd/rio/rio.c
@@ -1340,6 +1340,9 @@
 	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);