Pregunta

Cuando estoy usando PDCurses y trato de tener una salida de bucle de tiempo cuando se presione la tecla ENTER con while(key != KEY_ENTER), el bucle While nunca sale. Sin embargo, cuando trato de tener la misma salida de bucle con while((char)key != '\n'), sale correctamente cada vez que presioné Enter. Por que '\n' trabajar y no KEY_ENTER?

por cierto, key es un int

Y espero que estas sean las pocas líneas relevantes del código:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
¿Fue útil?

Solución

getch() es una función definida por el estándar ANSI C para la biblioteca de tiempo de ejecución C.

En la mayoría de los sistemas, como Windows, Linux, etc., esta función se implementa para devolver '\n' Cuando el usuario presionó entrar. A modo de comparación, en Windows, la Key-Press en sí (de Enter) podría representarse como el código clave VK_ENTER.

PDCurses está traduciendo los códigos clave a los valores ASCII para usted.

Puede obtener los valores clave que desea si primero llama a las funciones de PDCurses raw(); nonl();. Además, probablemente deberías usar wgetch() para nuevo código.

Otros consejos

KEY_ENTER == 0x157, '\n' == 0xA

' n' es la nueva línea ASCII estándar, mientras que Key_enter representa un código de teclado. Ver el código PDCurses.

Para obtener más información, debe publicar la parte relevante de su código.

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