所以我想要的是当用户按下向上按钮时,我想立即显示命令而不显示^ [[AI已经知道如何从键盘上下识别,我知道termios可能是解决方案,但来自java背景,我不太清楚如何做到这一点。由于某些限制,Ncurses不是一种选择。如果可以的话,请帮忙。
我期望发生的是,当用户按下向上按钮时,我想立即在同一行上执行printf
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char input[100];
char *history[5];
int currentHistory=0;
int historyCount=5;
history[0]="hi";
history[1]="bye";
history[2]="computer";
history[3]="science";
history[4]="Yo";
while(input[0]!='Q')
{
if(input[0]==LEFT_ARROW;
}
}
答案 0 :(得分:4)
答案 1 :(得分:1)
目前尚不清楚您是想更好地处理输入,还是要更好地处理终端。
如果你想更好地处理输入,我建议将你的字符recogonition包装成一个返回一个整数的函数,该整数为每个“处理”键定义。这样你的输入看起来更像是
int char = readChar(input);
if (char == KEY_UP_ARROW) {
...
}
其中readChar检测第一个键是否为转义符然后“查看”以查看是否有可用的额外信息(区分独立转义和箭头键)。
如果您打算更好地处理屏幕方面,并且您的意图是使用自己的封装终端处理软件驱动终端,则需要参考VT100终端参考(假设您的xterm模拟VT100(许多人都这样做) ))。 The VT100 codes are described here
请注意,操作系统会对输入执行一些额外处理(组合键组合,使程序更容易区分死键键盘设置等),因此您可以通过将终端设置为一个来禁用此终端内处理不同的“模式”。典型的模式包括“cooked”和“raw”,其中“raw”为您提供了为简单起见而未合并的密钥代码。