Linux: mover el cursor de la consola visual

Actualmente estoy diseñando una interfaz CLI para Linux, y por varias razonesNo puedo usar ncurses. Estoy usando exclusivamente C ++ y el marco Qt.

Por lo tanto, para tener una interfaz fácil de usar, tengo que ejecutar este ciclo getch en un hilo separado:

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

Lo que básicamente significa que tengo que implementar todas las funcionalidades básicas (como retroceso) por mí mismo. Ya he implementado la finalización de comandos y el historial de comandos (como cuando presionas tab o uparrow / downarrow en linux), pero no puedo encontrar la manera de implementar leftarrow / rightarrow (también conocido como escribir a través del mecanografiado).

Normalmente, lo implemento así: en cada gech que no es igual a -1, verifico si el usuario ha presionado una tecla especial (una que modifica el tipo de escritura de alguna manera). Luego borro el stdout usando la siguiente función:

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

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

    rewind(stdout);
}

Y reemplácelo con algo más, simulando efectivamente la escritura anticipada. Por ejemplo, en el caso de retroceso, guardaría la llamada de comandoclear_linee imprima el comando nuevamente, solo con una letra menos, comportándose exactamente como lo haría una aplicación de consola normal.

Mi verdadero problema es con el cursor, en el caso de la flecha izquierda / derecha, necesito mover el cursor visual para poder indicar en qué parte del texto está buscando el usuario:

Debido a la naturaleza de cómo reescribo la línea estándar dada para simular la escritura anticipada, en realidad no importa dónde esté el cursor REALMENTE, siempre y cuando permanezca en la misma línea; lo que importa es lo visual. ¿Cómo puedo lograr mover el cursor visual en Linux?

Respuestas a la pregunta(2)

Su respuesta a la pregunta