Date: Wed, 25 Jun 1997 12:29:58 -0400 (EDT) From: Tim Vanderhoek <hoek@hwcn.org> To: MARK SAYER <MSAYER@cuscal.com.au> Cc: "'freebsd-hackers@freebsd.org'" <freebsd-hackers@FreeBSD.ORG> Subject: RE: BSD io Message-ID: <Pine.GSO.3.96.970625113624.11321B-100000@james.freenet.hamilton.on.ca> In-Reply-To: <199706250208.TAA23288@hub.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 25 Jun 1997, MARK SAYER wrote:
> I have been looking for this for ages. I resorted to using ncurses, but
> then I was stuck with using ncurses window management (yuk). So, I tried
> the code below and it doesn't seem to work as promised. I just want the
> program to trap 1 keypress and continue execution.
Ok, that's what it will do... Alternatively, you twiddle it such
that getchar() returns immediately regardless of wether there's
input available or not (although I don't know what return value
it uses in the latter case).
> #include <termios.h>
> #include <stdio.h>
>
> struct termios old, new;
>
> main()
> {
> char c;
Since I see J'oerg read this, I'm surprised he didn't beat-up on
you for not making this an int c;... :) (It's better as an int,
of course)
> tcgetattr (fileno(stdin), &old); new = old;
>
> new.c_iflag &=~(ICANON|ECHO);
It doesn't help that you changed the above from
new.c_lflag &=
to
new.c_iflag &=
...
> tcsetattr (fileno(stdin), TCSANOW, &new);
>
> c = getc(stdin);
>
> tcsetattr (fileno(stdin), TCSANOW, &old);
> }
> All it seems to do is stop trapping my CR key??
That's because c_iflag controls, what you used, is for input
flags, but c_lflag is for local flags, what I used in the code
you tried to copy. :)
Additionally, there're also c_cflags, c_oflags for control and
ouput options, respectively. termios(4) lists all the flags.
Various /usr/include/* files also describe some.
> 168: {9} ./a.out
>
> a^M^M^M^Mò
Disabling IEXTEN won't really solve your problem. Just change
c_iflags to c_lflags...
> Any ideas?
Yes. See above.
--
Outnumbered? Maybe. Outspoken? Never!
tIM...HOEk
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.3.96.970625113624.11321B-100000>
