#include <termios.h>
#include <unistd.h>
void set_terminal_icanon(char on)
{
static struct termios t;
tcgetattr(STDIN_FILENO, &t);
if (on)
{
t.c_lflag |= ICANON;
}
else
{
t.c_lflag &= ~(ICANON);
}
tcsetattr(STDIN_FILENO, TCSANOW, &t);
}
void set_terminal_echo(char on)
{
static struct termios t;
tcgetattr(STDIN_FILENO, &t);
if (on)
{
t.c_lflag |= ECHO;
}
else
{
t.c_lflag &= ~(ECHO);
}
tcsetattr(STDIN_FILENO, TCSANOW, &t);
}
void set_terminal_to_polling_mode()
{
static struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_cc[VTIME] = 0;
t.c_cc[VMIN] = 0;
tcsetattr(STDIN_FILENO, TCSANOW, &t);
}
void set_terminal_to_blocking_mode()
{
static struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_cc[VTIME] = 0;
t.c_cc[VMIN] = 1;
tcsetattr(STDIN_FILENO, TCSANOW, &t);
} |