我需要在控制台Objective-C应用程序中按键盘按键而不按“Enter”按钮
此代码仅在我按“Enter”
后才会读取按下的键码int key;
key=getchar();
NSLog(@"%i", key);
我需要这样的东西,但不要按'Enter'。 我怎么能这样做?
答案 0 :(得分:2)
默认情况下,控制台处于“规范”模式,该模式对输入执行加载处理,并且在遇到新行之前不会将其传递给进程的打开文件描述符。您希望将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()
和tcsetattr()
返回的错误。)