我正在Linux上编写一个C程序,当按下向上或向下箭头键时,需要立即在控制台上显示一些东西,而不需要在控制台上编写^[[A
或^[[B
,然后按enter键在控制台上显示某些内容。
我正在模拟linux,我想像历史特性那样影响linux,在这里,当我们按上下键时,会显示最近输入的命令。我正在使用GNU历史库来实现这个功能。我该怎么做?
发布于 2018-02-02 08:13:19
我们可以为get编写自己的函数,比如禁用回波标志、读取字符,并再次启用回波标志.So,您可以在控制台上看到打印。
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int getch();
int main(int argc, char **argv) {
int ch;
for (;;) {
ch = getch();
if(ch == 27)
printf("UP arrow\n");
else if(ch ==28)
printf("down arrow\n");
else
printf("wrong input \n");
break;
}
return 0;
}
int getch() {
struct termios oldtc;
struct termios newtc;
int ch;
tcgetattr(STDIN_FILENO, &oldtc);
newtc = oldtc;
newtc.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newtc);
ch=getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldtc);
return ch;
}
https://stackoverflow.com/questions/48577921
复制相似问题