struct termios tmp;
tmp.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
tmp.c_oflag |= (ONLCR);
tmp.c_cflag |= (CS8);
tmp.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
tmp.c_cc[VMIN] = 1;
tmp.c_cc[VTIME] = 0;
tcsetattr(fd, TCSADRAIN, &tmp);
#include <termios.h>
// хранилище дефолтного состояния
static struct termios stored_termios;
// Отключить эхо-вывод и буферизацию ввода
void set_keypress (void)
{
tcgetattr(0, & stored_termios);
struct termios new_termios = stored_termios;
new_termios.c_lflag &= ~(ECHO | ICANON);
new_termios.c_cc[VMIN] = 1;
new_termios.c_cc[VTIME] = 0;
tcsetattr(0, TCSANOW, & new_termios);
}
// Восстановление дефолтного состояния
void reset_keypress (void)
{
tcsetattr(0, TCSANOW, & stored_termios);
}