2009-07-25 20 views
15

Al tratar de obtener entrada de las teclas de flecha a través de las maldiciones (ncurses) no se detectará como KEY_UP, etc. Utilicé la función del teclado con un argumento verdadero pero getch aún devuelve una secuencia escapada. ¿Cómo selecciono los valores devueltos por getch() y tomo las teclas de flecha específicamente?Maldiciones al obtener las teclas de flecha

Respuesta

13

que estaba almacenando getch() llamadas como carbón de cuando se suponía que debían ser int de. Funciona perfectamente después del cambio.

5

Los terminales estándar (tipo VT100) envían una secuencia de caracteres cuando se presionan las teclas de flecha. Solo tiene que hacer un seguimiento de si se presionan o no en secuencia. Aquí están del char a tener en cuenta:

Down Arrow 0x1B 0x5B 0x42 
Left Arrow 0x1B 0x5B 0x44 
Right Arrow 0x1B 0x5B 0x43 
Up Arrow 0x1B 0x5B 0x41 
+1

¿Existen códigos de escape que podría entrar como una combinación de teclas o secuencia usando ctrl para éstos? –

+0

No es necesario; puede escribirlos directamente. 0x1B = esc, 0x5B = [, y 0x41 - 0x44 = A - D. Escriba esc [D en su terminal, y el cursor se mueve hacia la izquierda. –

+12

Este enfoque derrota completamente el propósito de trabajar con la biblioteca de curses en primer lugar :-) –

11

me encontré con el mismo problema en Mac OS X. Pero se resolvió añadiendo lo siguiente:

keypad(stdscr, TRUE); 
+2

Sin embargo, el OP ha declarado que esto no funcionó para él. – augurar

Cuestiones relacionadas