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 <fcntl.h>
|
||||
#include <sys/wait.h>
|
||||
#include <termios.h>
|
||||
|
||||
#include "calcurse.h"
|
||||
|
||||
@ -1077,12 +1078,21 @@ child_wait (int *pfdin, int *pfdout, int pid)
|
||||
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);
|
||||
fputs (_("Press any key to continue..."), stdout);
|
||||
fflush (stdout);
|
||||
fgetc (stdin);
|
||||
fflush (stdin);
|
||||
fputs ("\r\n", stdout);
|
||||
|
||||
tcsetattr (STDIN_FILENO, TCSAFLUSH, &t_attr_old);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user