• Lunes 16 de Diciembre de 2024, 01:44

Autor Tema:  leer teclas especiales (flechas, ESC, Fn) en Code::Blocks  (Leído 5694 veces)

Forly

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
« en: Martes 12 de Agosto de 2008, 17:24 »
0
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.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
« Respuesta #1 en: Lunes 18 de Agosto de 2008, 20:00 »
0
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!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
« Respuesta #2 en: Lunes 18 de Agosto de 2008, 21:12 »
0
Podes usar la API de Windows ReadConsoleInput, aca tenes un ejemplo:
Reading Input Buffer Events.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Forly

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
« Respuesta #3 en: Martes 19 de Agosto de 2008, 21:18 »
0
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.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: leer teclas especiales (flechas, ESC, Fn) en Code::Blocks
« Respuesta #4 en: Martes 19 de Agosto de 2008, 22:33 »
0
denada, que buena actitud ;)

ahi lo veo.

nos vemos