Linux - movendo o cursor do console visual

Atualmente, estou projetando uma interface CLI para Linux, e por várias razõesNão consigo usar ncurses. Estou usando exclusivamente C ++ e a estrutura Qt.

Portanto, para ter uma interface amigável, eu tenho que executar esse loop getch em um thread separado:

https://stackoverflow.com/a/912796/3605689

O que basicamente significa que eu tenho que implementar todas as funcionalidades básicas (como backspace) sozinho. Eu já implementei a conclusão e o histórico de comandos (como quando você pressiona tab ou uparrow / downarrow no linux), mas não consigo descobrir como implementar o leftarrow / rightarrow (também conhecido como busca pelo tipo de letra).

Normalmente, eu o implemento assim: em todo gech que não seja igual a -1, verifico se o usuário pressionou uma tecla especial (que modifica de alguma forma a cabeça de digitação). Em seguida, limpo o stdout usando a seguinte função:

void inputobject::clear_line(int nletters)
{
    QTextStream(stdout) << "\033[2K";

    for(int i = 0; i < nletters;i++){
        QTextStream(stdout) << "\b";
    }

    rewind(stdout);
}

E substitua-o por outra coisa, simulando efetivamente a cabeça de impressão. Por exemplo, no caso de backspace, eu salvaria a chamada de comandoclear_linee imprima o comando novamente, apenas com uma letra a menos, comportando-se exatamente como um aplicativo de console normal faria.

Meu verdadeiro problema é com o cursor, no caso de left / rightarrow, preciso mover o cursor visual para poder indicar onde no texto o usuário está procurando:

Devido à natureza de como eu reescrevo a linha stdout fornecida para simular o cabeçalho de digitação, não importa realmente onde está o cursor REALMENTE, desde que permaneça na mesma linha - é apenas o visual que importa. Como posso mover o cursor visual no linux?

questionAnswers(2)

yourAnswerToTheQuestion