我有这样的东西:
keypad(stdscr, TRUE);
nodelay(stdscr, TRUE);
char key;
while(1)
{
usleep(80000);
// ...Program related code...
// Key Listener
key = getch();
switch (key)
{
case 'a':
// a related code
break;
case 'b':
// b related code
break;
}
}
然而,我注意到了一些奇怪的行为,如果我以足够快的速度(比节拍速率快(按下a
和b
键,它们似乎会被getch((缓冲,就像接下来的每一次节拍一样,程序将继续处理这些a
和b
按压,直到缓冲区赶上为止。因此,如果您按住其中一个键,那么在您松开该键很长一段时间后,它将继续由getch((处理。
我只想在每个刻度上对一个键进行采样和处理。我不希望getch异步缓冲按键。有没有办法清除缓冲区,或者禁用getch的额外缓冲区,使其只存储最后一个按下的字符?
您似乎在寻找int flushinp(void)