Disable terminal flow control
This opens up C-o, C-q and C-s for key bindings without C-v.
Esse commit está contido em:
pai
200842aa64
commit
facc3aa9a0
1
chat.h
1
chat.h
@ -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
11
term.c
@ -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
1
ui.c
@ -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);
|
||||||
|
Carregando…
x
Referência em uma nova issue
Block a user