Очистить буфер для клавиатуры

В функции boo() Я нажимаю клавишу, затем функцию doSthTimeConsuming() называется.

Теперь я нажимаю клавиши во время doSthTimeConsuming(),
Проблема в том, что ключи буферизуются и в следующей итерации boo() уже будет вход.

Могу ли я очистить или отключить буферизацию для клавиатуры в boo() первый?

void boo()
{
while(1)
{
c = getch();

switch(c)
...
break;
}
}

void doSthTimeConsuming()
{
usleep(1000000);
}

int main()
{
WINDOW* main_win = initscr();
cbreak();
noecho();
keypad(main_win, TRUE);

while(1)
{
boo();
doSthTimeConsuming();
}

return 0;
}

EDIT: Я нашел обходной путь, но я все еще ищу решение с очисткой буфера.

2

Решение

Для этого есть функция: flushinp()

http://pubs.opengroup.org/onlinepubs/007908799/xcurses/flushinp.html

3

Другие решения

Я решаю проблему, используя keypad(main_win, FALSE); после того, как ввод получен и включен keypad(main_win, TRUE); когда это нужно.

void boo()
{
keypad(main_win, TRUE);
while(1)
{
c = getch();

switch(c)
...
break;
}
keypad(main_win, FALSE);
}
0

По вопросам рекламы [email protected]