[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cbreak+echo+nl: carriage return but no newline
From: |
G. Branden Robinson |
Subject: |
Re: cbreak+echo+nl: carriage return but no newline |
Date: |
Tue, 12 Mar 2024 17:38:03 -0500 |
Hi Thomas,
At 2024-03-12T18:11:40-0400, Thomas Dickey wrote:
> ...that "echoed" should remind the reader that text gets to the screen
> by "addch" or something equivalent.
That's why part of my pending revision said this...
getch(3x):
• curses writes any other ch to the window, as with
wechochar(3X).
It seemed useful to call out wechochar() specifically since it's getting
called and doing a refresh() without my involvement.
while (TRUE) {
ch = getch();
(void) napms(50);
}
With a preceding cbreak() and echo(), this loop is a perfectly useful,
if dumb, typewriter.
> There probably are similar cases in other manpages...
Well, that's what ya have me around for.
> either way, the test program returns ^J from getch for me for either
> key...
Same here; my example was cut down from a slightly more elaborate one
that reported the keycode. I get back code 10 reliably no matter
whether I press Return, ^M, or ^J. But only ^J echoes as a line feed.
I guess the thing I missed that is that the semantics of the carriage
return keystroke were honored before the translation of its keycode
value. I think I may have assumed that nl() and nonl() were
manipulating the terminal state in the same way that "stty -ocrnl" does.
(Or do I mean "stty -icrnl"?)
So all nl() and nonl() do is convert the keycode reported by wgetch()?
...huh, wow, yes, it seems so.
Reading through the layers of preprocessor macros and OS/2 support,
that's what I'm seeing in ncurses/base/lib_nl.c:54-88 and
ncurses/base/lib_getch.c:650-651.
What is this feature _for_? Disparate terminal behavior in the '80s,
similar to the "backspace/delete is ^H! no, it's ^?" we endured much
more recently?
BTW some of my pending changes are not small.
$ COLUMNS=72 git diff --stat
man/curs_add_wch.3x | 26 +-
man/curs_addch.3x | 431 +++++++++++++++---------
man/curs_get_wch.3x | 35 +-
man/curs_getch.3x | 768 +++++++++++++++++++++++++++---------------
man/man_db.renames.in | 7 +
5 files changed, 820 insertions(+), 447 deletions(-)
The _wch ones will probably get bigger (synchronization).
Regards,
Branden
signature.asc
Description: PGP signature
Re: cbreak+echo+nl: carriage return but no newline, G. Branden Robinson, 2024/03/25