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; } read more

Leer más » 7 Comentarios

El podcast de Linux Hispano – Especial número 50

¡Hola a todos!

Acaba de lanzarse el quincuagésimo número de El podcast de Linux Hispano, un podcast sobre Linux y Software Libre.

Este mes cumplimos 50 ediciones de El podcast de Linux Hispano y lo queremos celebrar con un gran episodio. En este número participamos todos los integrantes del equipo de Linux Hispano: Carazo (alias kirov), Alberto (alias ahornero), Dani (alias danigm) y un servidor. Debatiremos sobre tres tópicos clásicos donde nos mojaremos dando opiniones, quizás para algunos, inesperadas. Personalmente, sólo me queda agradeceros vuestra fidelidad y que sigáis escuchándonos, que es lo más importante y por lo que seguimos en pie. read more

Leer más » 8 Comentarios