我想为后台程序编写命令行shell,并且我可以输入一些命令。我想添加一个像bash(或其他类似shell)---'UP'键的功能来获取历史输入。如何捕获'UP'键被按下?
如果我只使用std::getline(std::cin, line)
我无法获得'UP'键或其他功能键,即。按Ctrl + w删除输入行的单词。
答案 0 :(得分:2)
有一个readline
函数支持历史记录和行编辑等。
在基本模式下,它会读取行等。如果要添加挂钩,可以在按tab
或类似时使其扩展命令。
这是Linux中典型的shell使用的。
此处的文档: http://web.mit.edu/gnu/doc/html/rlman_2.html
这里有一个例子: http://www.delorie.com/gnu/docs/readline/rlman_48.html
主要项目页面: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
答案 1 :(得分:0)
使用kbhit()
获取键盘箭头键
答案 2 :(得分:0)
使用ncurses库,请参阅sample program:
#include<ncurses.h>
#include<iostream>
int main()
{
int ch;
initscr(); //initialize the ncurses data structures
keypad(stdscr,TRUE); //enable special keys capturing
ch=getch();
if(ch==KEY_UP)
std::cout << "Key up pressed!" << std::endl;
}