I'm currently designing a CLI interface for linux, and for various reasons **I am not able to use ncurses**. I am using exclusively C++ and the Qt framework.

Therefore, in order to have a user-friendly interface, I have to run this getch loop in a separate thread:

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

Which basically means I have to implement all basic functionalities (such as backspace) by myself. I have already implemented command completion and command history(like when you press tab or uparrow/downarrow in linux), but I can't figure out how to implement leftarrow/rightarrow (aka seeking through the typeahead).

Normally, I implement it like this: upon every gech which is not equal to -1, I check whether the user has pressed a special key (one that modifies the typeahead somehow). I then clear the stdout using the following function:

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

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

    rewind(stdout);
}

```

And replace it with something else, effectively simulating the typeahead. For example, in the case of backspace, I would save the command call `clear_line`, and print the command out again, just with one less letter, behaving exactly as a normal console application would.

My real problem is with the cursor, in the case of left/rightarrow, I need to move the cursor visual in order to be able to indicate where in the text is the user seeking:[![enter image description here](https://i.stack.imgur.com/aX7mG.png)](https://i.stack.imgur.com/aX7mG.png)

Because of the nature of how I rewrite the given stdout line to simulate the typeahead, it does not really matter where the cursor REALLY is, as long as it stays on the same line - it is just the visual that matters. How can I achieve moving the cursor visual on linux?