3

バックグラウンド プログラム用のコマンド ライン シェルを作成したいのですが、witch でいくつかのコマンドを入力できます。bash (または他のシェルのような) ---'UP' キーのような機能を追加して、過去の入力を取得したいと考えています。「UP」キーが押されたことをキャプチャするにはどうすればよいですか?

使用するだけではstd::getline(std::cin, line)、「UP」キーまたはその他のファンクションキーを取得できません。Ctrl+w で入力行の単語を削除します。

4

3 に答える 3

4

readline履歴やライン編集などをサポートする機能があります。

基本モードでは行の読み込みなどを行います。フックを追加したい場合は、押すとコマンドを展開するなどの操作を行うことができますtab

これは、Linux の典型的なシェルが使用するものです。

ドキュメントはこちら: 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

于 2013-08-29T12:30:36.713 に答える
0

ncurses ライブラリを使用します。サンプル プログラムを参照してください。

#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;
}
于 2013-08-29T11:00:30.193 に答える