Pregunta

Estoy leyendo de la entrada estándar usando la llamada al sistema read (), pero hay una pequeña cosa que me molesta. No puedo utilizar las teclas de flecha ... Lo que realmente quería hacer era utilizar las teclas de flecha para avanzar y retroceder dentro del texto escrito, pero creo que eso no es tan fácil ... Por lo tanto, lo que al menos quiero hacer , es hacer caso omiso de ellos.

En este momento, pulsando cualquiera de las teclas de flecha produce una salida extraña y quiero evitar que cualquier cosa que se escriben en la salida estándar (por lo tanto leer de la entrada estándar en mi lectura llamada al sistema ()).

Es esto puede hacerse con facilidad para lograr o que no es tan fácil?

¿Fue útil?

Solución

Con el fin de interpretar las teclas de flecha de la manera que lo ideal sería (es decir, para mover hacia atrás y adelante y editar la entrada), normalmente hay que utilizar una biblioteca. Para Linux, el estándar es GNU Readline . Esperemos que alguien más puede decir lo que normalmente se utiliza para una aplicación CLI de Windows.

Otros consejos

La respuesta depende en última instancia, donde las teclas proceden. Me encontré con este programa bajo Cygwin:

int main(void)
{
    int c=0;

    while( c != 'X' ) {
        c = getchar();
        printf("\nc=%d", c);
    }
}

Cada vez que una tecla del cursor llega, veo de escape (27), un soporte, además de otro carácter. Por lo tanto, si se obtienen resultados como ese, puede omitir 3 llaves cada vez que vea un 27. También puede mirarlos y hacer uso de ellos!

Como se ha mencionado, tu caso es distinto, especialmente para el uno mismo, y la función de conseguir clave real se llama.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top