[Openmcl-devel] CCL, ncurses, and raw mode
R. Matthew Emerson
rme at acm.org
Mon Mar 12 11:55:44 PDT 2018
> On Mar 12, 2018, at 11:15 AM, Ron Garret <ron at flownet.com> wrote:
>
> I’m trying to use libncurses in ccl and it’s mostly working, except that I can’t turn on raw mode i.e. the mode where ctrl-C and ctrl-Z are delivered to the Lisp process as normal characters rather than as OS signals. I can get this to work in C so I know that libncurses is doing the right thing. Do any of you CCL-internals gurus have any idea what CCL is doing to thwart raw mode, and what I can do to unthwart it?
>
> (I’m not posting code because my current code has a ton of dependencies and creating a standalone demo of the problem would be a fair amount of work, so I thought I’d start by seeing if anyone just knows the answer offhand.)
>
I don't recall anything in CCL itself that would be preventing you from putting the tty into raw mode.
There's some code in ccl:library;pty.lisp to manipulate tty modes, and it might be worth a look. Here's a brief example:
$ ccl
Clozure Common Lisp Version 1.11.5/v1.11.5 (DarwinX8664)
? (require 'pty)
PTY
("PTY")
? (ccl::set-tty-raw 0)
T
;;; here I type "(read-char)" (without pressing return), and then
;;; type ctrl-C
?
#\ETX
?
Normally you'd wrap the usage of raw mode by saving/restoring the tty modes via #_tcgetattr/#_tcsetattr.
Typing "stty sane" followed by ctrl-J will make your terminal somewhat usable again after leaving it in raw mode.
More information about the Openmcl-devel
mailing list