Como obter a posição do cursor em um programa C usando termcap, sem escrever um caractere?
Gostaria de saber como obter a posição do cursor (x, y) no meu programa, sem escrever nada na tela nem rastrear o tempo todo.
Eu descobri uma maneira de obter sua posição com essa função (não checo o retorno de leitura, gravação, etc aqui para escrever um código menor sobre esse assunto, mas faço isso no meu programa):
void get_cursor_position(int *col, int *rows)
{
int a = 0;
int i = 0;
char buf[4]
write(1, "\033[6n", 4); // string asking for the cursor position
read(1, buf, 4);
while (buf[i])
{
if (buf[i] >= 48 && buf[i] <= 57)
{
if (a == 0)
*rows = atoi(&buf[i]) - 1;
else
*col = atoi(&(buf[i]) - 1;
a++;
}
i++;
}
}
Essa função fornece a posição exata do cursor (* linhas = y, * col = x), mas ela grava na tela.
Como posso obter a posição do cursor sem escrever nada na tela? (porque se o cursor estiver em um dos caracteres impressos, ele será sobrescrito).
Este é um projeto da escola, então só posso usar o termcap, não posso usar funções ncurses, as únicas funções permitidas são tputs, tgoto, tgetstr, tgetnum, tgetflag.