可能重复:
如何避免使用任何 getchar() 按下回车键
我需要在控制台 Objective-C 应用程序中按下键盘键而不按“Enter”按钮
此代码仅在我按“Enter”后才读取按键代码
int key;
key=getchar();
NSLog(@"%i", key);
我需要这样的东西,但不按“Enter”。我怎样才能做到这一点?
可能重复:
如何避免使用任何 getchar() 按下回车键
我需要在控制台 Objective-C 应用程序中按下键盘键而不按“Enter”按钮
此代码仅在我按“Enter”后才读取按键代码
int key;
key=getchar();
NSLog(@"%i", key);
我需要这样的东西,但不按“Enter”。我怎样才能做到这一点?
默认情况下,控制台处于“规范”模式,它对输入进行大量处理,并且在遇到新行之前不会将其传递给进程的打开文件描述符。您想stdin
进入“非规范”模式,以获取到达时的字节:
#include <termios.h>
struct termios terminal_info;
tcgetattr(STDIN_FILENO, &terminal_info);
terminal_info.c_lflag &= ~ICANON;
tcsetattr(STDIN_FILENO, TCSANOW, terminal_info);
(您也应该检查tcgetattr()
and返回的错误tcsetattr()
。)