src/utils.c: Disable canonical mode in press_any_key()
Use tcsetattr() to disable canonical mode in press_any_key() before waiting for a key press. This makes sure that input is available immediately (instead of line by line). Also, disable echoing until a key is pressed. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
6c11b8985c
commit
47c52ae7bb
10
src/utils.c
10
src/utils.c
@ -44,6 +44,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <termios.h>
|
||||||
|
|
||||||
#include "calcurse.h"
|
#include "calcurse.h"
|
||||||
|
|
||||||
@ -1077,12 +1078,21 @@ child_wait (int *pfdin, int *pfdout, int pid)
|
|||||||
void
|
void
|
||||||
press_any_key (void)
|
press_any_key (void)
|
||||||
{
|
{
|
||||||
|
struct termios t_attr_old, t_attr;
|
||||||
|
|
||||||
|
tcgetattr (STDIN_FILENO, &t_attr_old);
|
||||||
|
memcpy (&t_attr, &t_attr_old, sizeof (struct termios));
|
||||||
|
t_attr.c_lflag &= ~(ICANON | ECHO | ECHONL);
|
||||||
|
tcsetattr (STDIN_FILENO, TCSAFLUSH, &t_attr);
|
||||||
|
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
fputs (_("Press any key to continue..."), stdout);
|
fputs (_("Press any key to continue..."), stdout);
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
fgetc (stdin);
|
fgetc (stdin);
|
||||||
fflush (stdin);
|
fflush (stdin);
|
||||||
fputs ("\r\n", stdout);
|
fputs ("\r\n", stdout);
|
||||||
|
|
||||||
|
tcsetattr (STDIN_FILENO, TCSAFLUSH, &t_attr_old);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user