Disable terminal flow control

This opens up C-o, C-q and C-s for key bindings without C-v.
weechat-hashes
Curtis McEnroe 2019-02-22 23:31:33 -05:00
parent 200842aa64
commit facc3aa9a0
No known key found for this signature in database
GPG Key ID: CEA2F97ADCFCD77C
3 changed files with 13 additions and 0 deletions

1
chat.h
View File

@ -145,6 +145,7 @@ enum TermEvent {
TermPasteEnd, TermPasteEnd,
}; };
void termInit(void); void termInit(void);
void termNoFlow(void);
void termTitle(const char *title); void termTitle(const char *title);
void termMode(enum TermMode mode, bool set); void termMode(enum TermMode mode, bool set);
enum TermEvent termEvent(char ch); enum TermEvent termEvent(char ch);

11
term.c
View File

@ -18,6 +18,8 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <termios.h>
#include <unistd.h>
#include "chat.h" #include "chat.h"
@ -28,6 +30,15 @@ void termInit(void) {
xterm = term && !strncmp(term, "xterm", 5); 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) { void termTitle(const char *title) {
if (!xterm) return; if (!xterm) return;
printf("\33]0;%s\33\\", title); printf("\33]0;%s\33\\", title);

1
ui.c
View File

@ -189,6 +189,7 @@ void uiInit(void) {
cbreak(); cbreak();
noecho(); noecho();
termInit(); termInit();
termNoFlow();
colorInit(); colorInit();
ui.status = newwin(1, COLS, 0, 0); ui.status = newwin(1, COLS, 0, 0);
ui.input = newpad(1, 512); ui.input = newpad(1, 512);