[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openmcl-devel
Subject:    Re: [Openmcl-devel] Quick Query...
From:       Gary Byers <gb () clozure ! com>
Date:       2004-11-11 14:55:14
Message-ID: 20041111073630.X53615 () clozure ! com
[Download RAW message or body]



On Thu, 11 Nov 2004, Doug Philips wrote:

> Hey all,
> I'm at a loss for where to look to find out
> how I can do non-blocking I/O, esp. how I can put "stdin" (the keyboard) into \
> unbuffered/raw mode (from the command line, I'm not interested in writing GUI code, \
> just not having to wait for a return/enter to get character input)... having \
> grunged over the docs and having been unable to formulate a google query with \
> useful results... Can anyone give me a quick URL, pointer, ? Thanks,
> Doug
> 

There's some code for manipulating TTY modes in "ccl:library;pty.lisp".

? (require "PTY")

? (ccl::disable-tty-local-modes 0 #$ICANON)
T

will turn off "input canonicalization" on file descriptor 0, which is
at least part of what you need to do here.  (That basically turns off
the line-buffering/line-editing that the OS does.)


(Of course, that only has an effect if the file descriptor is a TTY/PTY
device.)

If the #$ICANON mode is disabled, you can do things like:

? (progn (read-char) (read-char))
a
#\a

(where the first READ-CHAR consumes the newline, which isn't really
necessary to make the reader happy anymore.)  So, you can do:

? (read-char)
#\Space

(where there's a space after the close-paren) without having to type
a newline.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic