sto cercando di recuperare le coordinate di cursore in un terminale VT100 utilizzando il seguente codice:Lettura dello stato Rapporto dispositivo ANSI sequenza di escape risposta
void getCursor(int* x, int* y) {
printf("\033[6n");
scanf("\033[%d;%dR", x, y);
}
sto usando la seguente sequenza di escape ANSI:
Device Status report - ESC [6n
segnala la posizione del cursore per l'applicazione come (come se digitato sulla tastiera) ESC [n; mR, dove n è la riga e m è la colonna.
Il codice compila e la sequenza ANSI viene inviato, ma, dopo aver ricevuto esso, il terminale stampa la stringa ^[[x;yR
alla stdout
invece di stdin
rendendo imposible per me per recuperare dal programma:
Chiaramente, la stringa è designata per il programma, quindi, quindi devo fare qualcosa in modo non corretto. Qualcuno sa di cosa si tratta?
Non c'è un modo per far sì che il comando ANSI non scriva affatto "^ [[x; yR' al terminale? Mi piacerebbe recuperare in silenzio le coordinate senza alcun cambiamento visibile sullo schermo del terminale. Ma questo scrive sul terminale (indesiderabile quando si crea una GUI testuale) e quindi cambia le coordinate del cursore (che lo rende assolutamente inutile). – Witiko
Questo è il motivo per cui curses (e ncurses) esiste quindi non devi preoccuparti di tutti questi dettagli. – Craig
Certo, ma ncurses è un vero bloatware. Ecco perché sto scrivendo la mia lib di sequenze di escape ANSI leggera, che supporta semplicemente VT100. Ma sì, sembra che dovrò solo dl ncurses e provare a decodificarlo per trovare la sua soluzione a questo problema. – Witiko