diff --git a/exec/dorkit/jsexec_console.js b/exec/dorkit/jsexec_console.js
index fe8f65c658e077fd564d63ae89c7e78412b01f3e..3fb9c00ec4a290b31711430f202a492029789daa 100644
--- a/exec/dorkit/jsexec_console.js
+++ b/exec/dorkit/jsexec_console.js
@@ -1,8 +1,7 @@
 load("ansi_console.js");
 
 dk.console.remote_io.print = function(string) {
-	stdout.write(string);
-	stdout.flush();
+	stdout.raw_write(string);
 };
 
 var jsexec_input_queue = load(true, "jsexec_input.js");
diff --git a/exec/dorkit/jsexec_input.js b/exec/dorkit/jsexec_input.js
index 2b7d549037f57ff6157951d22a8dfa724e51b9b8..940f0568ec238198713e31bb3fedb18911eea19a 100644
--- a/exec/dorkit/jsexec_input.js
+++ b/exec/dorkit/jsexec_input.js
@@ -7,6 +7,13 @@ var k;
 while(!js.terminated) {
 	if (parent_queue.poll(0))
 		break;
-	k = stdin.read(1);
+	if (system.platform == 'Win32')
+		k = stdin.raw_read(1);
+	else {
+		if (socket_select([stdin.descriptor], 0.1).length == 1)
+			k = stdin.raw_read(1);
+		else
+			k = undefined;
+	}
 	ai.add(k);
 }