From 061fb347502bd0b98f4587cfdce6612808d0c989 Mon Sep 17 00:00:00 2001 From: LemonBoy <thatlemon@gmail.com> Date: Wed, 16 Sep 2015 15:31:51 +0200 Subject: [PATCH] Modify the terminal initialization sequence We disable the ICRNL flag to make Enter independent from ^J from the keybinding point of view since the former will now send ^M, leaving the user free to remap ^J without trapping itself into the irssi session because of a broken Enter key. Also disable the software flow control because we don't expect anyone to run irssi over a serial console; we gain some more freedom by having ^Q and ^S freely mappable by the user. --- src/fe-text/terminfo-core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c index 6339e6f4..60927f1a 100644 --- a/src/fe-text/terminfo-core.c +++ b/src/fe-text/terminfo-core.c @@ -502,6 +502,9 @@ static void terminfo_input_init(TERM_REC *term) memcpy(&term->tio, &term->old_tio, sizeof(term->tio)); term->tio.c_lflag &= ~(ICANON | ECHO); /* CBREAK, no ECHO */ + /* Disable the ICRNL flag to disambiguate ^J and Enter, also disable the + * software flow control to leave ^Q and ^S ready to be bound */ + term->tio.c_iflag &= ~(ICRNL | IXON | IXOFF); term->tio.c_cc[VMIN] = 1; /* read() is satisfied after 1 char */ term->tio.c_cc[VTIME] = 0; /* No timer */