diff --git a/src/conio/ansi_cio.c b/src/conio/ansi_cio.c
index 14bcf21f0b3c062ecce0e73caac8bea383663190..f239a446c09c66aba253007776dfbf4288bed972 100644
--- a/src/conio/ansi_cio.c
+++ b/src/conio/ansi_cio.c
@@ -385,8 +385,10 @@ static void ansi_keythread(void *params)
 	_beginthread(ansi_keyparse,1024,NULL);
 
 	for(;;) {
-		if(!ansi_raw_inch)
-			ansi_raw_inch=fgetc(stdin);
+		if(!ansi_raw_inch) {
+			if(read(fileno(stdin),&ansi_raw_inch,1)!=1)
+				ansi_raw_inch=0;
+		}
 		else
 			SLEEP(1);
 	}