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 */