SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Forly en Martes 12 de Agosto de 2008, 17:24

Título: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
Publicado por: Forly en Martes 12 de Agosto de 2008, 17:24
Hola a todos:

Me he pasado del Turbo C++ de Borland a Code::Blocks.

En general me las estoy arreglando bien, pero tengo un problema con la lectura de teclas especiales como ESCAPE, las teclas de Función, Inicio, flechas y otras.

En Turbo C++, usaba algo así

//====================================================
int main()
{
  char tecla=0;
 
  while(tecla!=27)
  {
      tecla=cin.get();
      cout << tecla << " - " << (int) tecla;
      if (!tecla)
       {
           // En este caso la tecla es especial
           // Hago una segunda lectura
           tecla=cin.get();
           cout << " --> " << tecla << " - " << (int) tecla;
       }
       cout << endl;
  }
  getchar();
  return 0;
}
//====================================================

Pero una codificación de estas características, adaptada a la sintaxis del code::blocls, claro está, no funciona.

¿Alguien puede darme una pista de cómo hacerlo?

Desde ya les agradezco el tiempo que me dedican.

Un abrazo.
Título: Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
Publicado por: Rombus en Lunes 18 de Agosto de 2008, 20:00
si, el problema con esas teclas es el buffer de teclado, borland tiene la libreria conio.h donde podes encontrar funciones q interceptan el buffer de teclado y logran agarrar esas teclas, funciones como getche(), getch(), y creo q hay una mas...


no es ansii C asique para poder usarlas necesitas borland :S


desconozco la forma de acceder a ellas sin la conio.h



saludos!
Título: Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
Publicado por: Eternal Idol en Lunes 18 de Agosto de 2008, 21:12
Podes usar la API de Windows ReadConsoleInput (http://msdn.microsoft.com/en-us/library/ms684961(VS.85).aspx), aca tenes un ejemplo:
Reading Input Buffer Events (http://msdn.microsoft.com/en-us/library/ms685035(VS.85).aspx).
Título: Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
Publicado por: Forly en Martes 19 de Agosto de 2008, 21:18
Gracias a ambos:
Segui los consejos de Eternal Idol, y  me metí con las API.
Como resultado logré escribir una librería "teclado.h", que si bien recién tiene 2 (dos) funciones, bastan para la lectura
de teclas en modo texto.

Las dos funciones son:

1) leerTecla() -> equivalente a getch();
2) hayTecla() -> equivalente a kbhit();

En agradecimiento a sus consejos y con el solo interés de compartir, les adjunto el código.

Nuevamente gracias.
Título: Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
Publicado por: Rombus en Martes 19 de Agosto de 2008, 22:33
denada, que buena actitud ;)

ahi lo veo.

nos vemos