Controlar teclas especiales con C (flechas, ENTER, TAB, ESC) en entornos Windows
Cuando programamos en C, nos enseñan desde primera hora a usar las funciones típicas de entrada/salida presentes en stdio.h: printf(), scanf(), getchar(), gets()… pero normalmente se obvia el uso de funciones algo más avanzadas para detectar pulsaciones de teclas o interactuar de forma más directa con la terminal.
Hoy os explicaré para qué sirven dos funciones: getch() y getche(), disponibles en conio.h (como ya advierto en el título de la entrada, este código funciona en entornos Windows, en entornos Linux ya explicaré en otra entrada cómo se puede hacer).
- getch(): devuelve un char que representa el código ASCII de la tecla pulsada
- getche(): ídem que el anterior, pero además lo imprime por pantalla
Veamos un ejemplo en el que detectamos la pulsación de las flechas del teclado, la tecla ENTER y el tabulador:
#include <stdio.h>
#include <conio.h>
int main()
{
char cTecla;
printf("\r\nPresione un Tecla ...");
while(cTecla != 27)
{
cTecla = getch();
if(cTecla == 0)
cTecla = getch();
else
switch(cTecla)
{
case 13:
printf("\r\n Presiono ENTER");
break;
case 9:
printf("\r\n Presiono TAB");
break;
case 72:
printf("\r\n Presiono Flecha Arriba");
break;
case 80:
printf("\r\n Presiono Flecha Abajo");
break;
case 75:
printf("\r\n Presiono Flecha izquierda");
break;
case 77:
printf("\r\n Presiono Flecha derecha");
break;
}
}
return 0;
}



