set ~ICRNL with termios.c_iflag #303

pull/312/head
nick black 5 years ago
parent 99b79cbf4f
commit 77432ee1c5
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -319,6 +319,9 @@ handle_ncinput(notcurses* nc, ncinput* ni){
}
char32_t r = handle_input(nc, ni);
// ctrl (*without* alt) + letter maps to [1..26], and is independent of shift
// FIXME need to distinguish between:
// - Enter and ^J
// - Tab and ^I
bool ctrl = r > 0 && r <= 26;
if(ctrl){
r += 'A' - 1;

@ -840,8 +840,10 @@ notcurses* notcurses_init(const notcurses_options* opts, FILE* outfp){
// see termios(3). disabling ECHO and ICANON means input will not be echoed
// to the screen, input is made available without enter-based buffering, and
// line editing is disabled. since we have not gone into raw mode, ctrl+c
// etc. still have their typical effects.
// etc. still have their typical effects. ICRNL maps return to 13 (Ctrl+M)
// instead of 10 (Ctrl+J).
modtermios.c_lflag &= (~ECHO & ~ICANON);
modtermios.c_iflag &= (~ICRNL);
if(tcsetattr(ret->ttyfd, TCSANOW, &modtermios)){
fprintf(stderr, "Error disabling echo / canonical on %d (%s)\n",
ret->ttyfd, strerror(errno));

Loading…
Cancel
Save