[plt-scheme] Non-blocking single character read in DrScheme?
I am looking to read a single character from the keyboard in DrScheme.
According to some stuff I saw on the web and in the manual that
read-string-avail!* was supposed to be completely non-blocking. But,
in DrScheme v207 nothing is read until I press "Enter". (In MzScheme
things are a bit messier since the first call to my routine returns
immediately, presumably having read the most recent line terminator
typed to the repl loop. Then subsequent calls wait for a line
terminator...)
Anyway, the following does _not_ immediately return the next character
from the keyboard. So I need to ask the experts: How do I read a
single character in non-blocking mode from DrScheme v207?
(define try-to-read-char-nonblocking-doesnt-work
(let ((s (make-string 1 #\X)))
(lambda ()
(define (get-char)
(if (= 0 (read-string-avail!* s))
(get-char) ;should pause a bit
(string-ref s 0)))
(get-char))))
Thanks for your help.
-- Allyn Dimock