/* Initialize new terminal i/o settings */
static struct termios old, new1;
void initTermios(int echo) {
tcgetattr(0, &old); /* grab old terminal i/o settings */
new1 = old; /* make new settings same as old settings */
new1.c_lflag &= ~ICANON; /* disable buffered i/o */
new1.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &new1); /* use these new terminal i/o settings now */
}
/* Restore old terminal i/o settings */
void resetTermios(void) {
tcsetattr(0, TCSANOW, &old);
}
我怎样才能获得箭头键作为输入(可能作为单个字符),当前代码适用于我需要的所有其他东西......请没有解决方案ncurses
你有没有尝试过read
功能?
这对我来说适用于 cygwin g++,但没有 linux 方便测试:
#include <unistd.h>
#include <termios.h>
#include <stdio.h>
/* Initialize new terminal i/o settings */
static struct termios old, new1;
void initTermios(int echo) {
tcgetattr(0, &old); /* grab old terminal i/o settings */
new1 = old; /* make new settings same as old settings */
new1.c_lflag &= ~ICANON; /* disable buffered i/o */
new1.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &new1); /* use these new terminal i/o settings now */
}
/* Restore old terminal i/o settings */
void resetTermios(void) {
tcsetattr(0, TCSANOW, &old);
}
int main(void)
{
char c;
initTermios(0);
while (1) { read(0, &c, 1); printf("%d\n", c); }
}
正如@Fiktik 指出的,回声设置已损坏,但我使用问题中的代码而不进行任何更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)