diff options
-rw-r--r-- | chat.h | 1 | ||||
-rw-r--r-- | term.c | 11 | ||||
-rw-r--r-- | ui.c | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/chat.h b/chat.h index b07aa42..afb32ef 100644 --- a/chat.h +++ b/chat.h @@ -145,6 +145,7 @@ enum TermEvent { TermPasteEnd, }; void termInit(void); +void termNoFlow(void); void termTitle(const char *title); void termMode(enum TermMode mode, bool set); enum TermEvent termEvent(char ch); diff --git a/term.c b/term.c index 75380ea..fea68ad 100644 --- a/term.c +++ b/term.c @@ -18,6 +18,8 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <termios.h> +#include <unistd.h> #include "chat.h" @@ -28,6 +30,15 @@ void termInit(void) { xterm = term && !strncmp(term, "xterm", 5); } +void termNoFlow(void) { + struct termios attr; + int error = tcgetattr(STDIN_FILENO, &attr); + if (error) return; + attr.c_iflag &= ~IXON; + attr.c_cc[VDISCARD] = _POSIX_VDISABLE; + tcsetattr(STDIN_FILENO, TCSANOW, &attr); +} + void termTitle(const char *title) { if (!xterm) return; printf("\33]0;%s\33\\", title); diff --git a/ui.c b/ui.c index 9a83bfc..4db7e02 100644 --- a/ui.c +++ b/ui.c @@ -189,6 +189,7 @@ void uiInit(void) { cbreak(); noecho(); termInit(); + termNoFlow(); colorInit(); ui.status = newwin(1, COLS, 0, 0); ui.input = newpad(1, 512); |