Как сделать интерактивную подсказку с функциональностью клавиши со стрелкой? - PullRequest
2 голосов
/ 31 августа 2011

Я делаю устный перевод.Я использую интерактивную подсказку, где я ввожу выражения для оценки (REPL).Мне было интересно, как я могу реализовать стандартное поведение подсказки?Как нажатие клавиш со стрелками вверх и вниз для навигации по истории команд, так и нажатие клавиш со стрелками влево и вправо для перемещения текстового курсора вместо печати кодов ^ [[D ^ [[C ^ [[A ^ [[B].Я просто не знаю, как их поймать или какие-либо управляющие символы вообще.

Я в Linux.Нужно ли использовать ncurses или какую-нибудь внешнюю библиотеку, или это можно сделать с помощью встроенных функций?Это не связано с моим языком, но меня бесит использование такой подсказки без навигации.Это затрудняет тестирование.

1 Ответ

2 голосов
/ 31 августа 2011

Вот пример программы на C, которая позволяет вам сделать это, используя readline (должен быть скомпилирован с -lncurses -lreadline):

#include <stdio.h>
#include <curses.h>
#include <readline/readline.h>
#include <readline/history.h>

int main (void) {
    char *input = readline("$ ");
    printf("You typed `%s'!\n", input);
    return 0;
}

По сути, она имитирует поведение командной строкидля мета-ключей, таких как home / end и клавиши со стрелками.Но все зависит от того, правильно ли настроен ваш inputrc.

...