Disable terminal flow control
This opens up C-o, C-q and C-s for key bindings without C-v.master
parent
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);
|
||||||
|
|
Loading…
Reference in New Issue