我尝试使用getch()无济于事。我在Rasbian linux上使用geany ide和gcc编译器。我已经安装了ncurses库,并且正在使用它。
int input(){
int in;
in = getch();
printf("%i", in);
if(in == 'w'){
return 1;
}
else if(in == 's'){
return 0;
}
else{
return 3;
}
}
为了getch()
工作,您需要在程序开始时初始化ncurses。这是通过至少调用initscr()
并禁用行缓冲来实现的cbreak()
。在cbreak手册页中:
通常,tty驱动程序会缓冲键入的字符,直到键入换行符或回车符为止。cbreak例程禁用行缓冲和擦除/杀死字符处理(中断和流控制字符不受影响),使用户键入的字符可立即用于程序。Nocbreak例程使终端返回正常(煮熟)模式。
最初,终端可以处于或不处于cbreak模式,因为该模式是继承的;因此,程序应显式调用cbreak或nocbreak。大多数使用curses的交互式程序都会设置cbreak模式。请注意,cbreak会覆盖raw。
或者,或者cbreak()
,禁用行缓冲的另一种方法是通过使用设置“原始模式” raw()
。
有关读取ncurses密钥的完整示例,请参见例如
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/keys.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句