我想输出每按x秒按下的最后一个按键的ASCII码。每x秒以不同的输出显示东西
作为例子:
如果我按下一个(97),该终端应显示97每x秒。当我现在按w(119)时,程序现在应该打印119而不是97. 到目前为止,我的程序只是打印我按下的第一个键。
以下是主要的,另一个方法:
int main(int argc, char const *argv[]){
printf("Hello World!");
while(1){
movePlayer();
fflush(stdout);
sleep(1);
}
return 0;
}
void movePlayer(){
system("/bin/stty raw");
int input = getchar(); //support_readkey(1000);
//fprintf(stdout, "\033[2J");
//fprintf(stdout, "\033[1;1H");
printf("\b%d",input);
system("/bin/stty cooked");
}
编辑:
随着测试的一点点我现在已经解决了我的问题的方法
int read_the_key(int timeout_ms) {
struct timeval tv = { 0L, timeout_ms * 1000L };
fd_set fds;
FD_ZERO(&fds);
FD_SET(0, &fds);
int r = select(1, &fds, NULL, NULL, &tv);
if (!r) return 0;
return getchar();
}
这是因为'getchar'等待一个字符;你必须使用'read'来代替。 –