getch() la función devuelve dos códigos de tecla para las teclas de flecha (y algunas otras teclas especiales), como se menciona en el comentario de FatalError. Devuelve 0 (0x00) o 224 (0xE0) primero, y luego devuelve un código que identifica la tecla que se presionó.
Para las teclas de flecha, devuelve 224 primero seguido de 72 (arriba), 80 (abajo), 75 (izquierda) y 77 (derecha). Si se pulsan las teclas de flecha pad numérico (con Bloq Num apagado), getch() devuelve 0 primera vez de 224.
Tenga en cuenta que getch() no ha sido estandarizada de ninguna manera, y estos códigos puede variar de un compilador compilador. Estos códigos son devueltos por MinGW y Visual C++ en Windows.
un programa práctico para ver la acción de getch() para varias claves es:
#include <stdio.h>
#include <conio.h>
int main()
{
int ch;
while ((ch = _getch()) != 27) /* 27 = Esc key */
{
printf("%d", ch);
if (ch == 0 || ch == 224)
printf (", %d", _getch());
printf("\n");
}
printf("ESC %d\n", ch);
return (0);
}
Esto funciona para MinGW y Visual C++. Estos compiladores usan el nombre _getch() en lugar de getch() para indicar que es una función no estándar.
Por lo tanto, es posible hacer algo como:
ch = _getch();
if (ch == 0 || ch == 224)
{
switch (_getch())
{
case 72:
/* Code for up arrow handling */
break;
case 80:
/* Code for down arrow handling */
break;
/* ... etc ... */
}
}
Han pasado años desde que jugué con esto, no está ni un poco estandarizado ... pero cuando jugué con 'getch()', para las teclas "especiales" volvía dos veces. La primera vez que devolvió un 0, luego un código para la clave especial, para que pueda diferenciarlo de otras teclas. – FatalError
'65' es solo para el carácter' A'. Debes usar los códigos de control para recibir estas claves. Ver esta publicación http://stackoverflow.com/questions/2876275/what-are-the-ascii-values-of-up-down-left-right –