• Lunes 29 de Abril de 2024, 04:39

Autor Tema:  Re: lectura de teclas especiales  (Leído 1340 veces)

noitta

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: lectura de teclas especiales
« en: Domingo 25 de Mayo de 2003, 13:02 »
0
:ayuda:
no se q pasa necesito leer cuatro teclas f1,f2,esc,enter y dependiendo cual pulse ejecutar una cosa u otra
tengo esto pero no me funciona

siendo teclas un tipo enumerado

teclas final::pausa(int automa)
{

   int codtecla;
   int salir =0;
   teclas t=ninguna;
   if (!automa)
    {
    do
    {
      codtecla=getch();
      if (codtecla==0)
          {
         codtecla=getch()+300;
         t=tecla(codtecla);

         switch (t)
            {

               case enter:
                  t=Enter;
                  salir =1;
                  break;
               case esc:
                  t=Esc;
                  salir=1;
                  break;
               case f1:
                  t =F1;
                  salir=1;
                  break;
               case f2:
                  t=F2;
                  salir=1;
                  break;
            };
           };


    }while (!salir);


    return t;

    };

};

teclas final::tecla(int codtecla)
{

   if (codtecla==13)
      return Enter;
   else if (codtecla==27)
      return Esc;
   else if (codtecla==359)
      return F1;
   else if (codtecla==360)
      return F2;
   else return ninguna;
};

Tigre sta. Julia

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: lectura de teclas especiales
« Respuesta #1 en: Domingo 25 de Mayo de 2003, 21:57 »
0
Recuerda que todo se basa mediante el uso de interrupciones, asi que debes mandarle las interrupcion (ascii o hexadecimal), para que te habilite las teclas, aqui te mando algunas:

/*CONSTANTES*/
#define ESC 0x1b//TECLA Esc
#define Tecla_Tab 9//CODIGO ASCII DE LA TECLA TAB
#define BS 8//TECLA DE BORRADO
#define FORMFEED 12
#define ENTER 13//ENTER
#define TECLA_INICIO 327 //TECLA INICIO
#define TECLAFIN 335//TECLA FIN
#define TECLA_ARRIBA 328//TECLA ARRIBA
#define TECLA_ABAJO 336//TECLA ABAJO
#define RE_PAG 329//TECLA RE PAG
#define AV_PAG 337//TECLA AV PAG
#define TECLA_IZQUIERDA 331
#define INSERT 338
#define TECLA_DERECHA 333
#define SUPR 339
#define CTRL_LADOIZQUIERDO 371
#define CTRL_LADODERECHO 372
#define F1 315
#define F2 316
#define F3 317
#define F4 318
#define F5 319
#define F6 320
#define F7 321
#define F8 322
#define F9 323
#define F10 324

ahora sip, puedes hacer lo del switch:

switch(op)
       { case ESC: printf("Tecla escape");
          case F9: printf("Tecla F9");
          .
          .
          .
          default: printf("Tecla no definida");
        }

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
lectura de teclas especiales
« Respuesta #2 en: Lunes 26 de Mayo de 2003, 19:11 »
0
gmantil nos enseño algo muy importante hace algunos dias...busca en los post de 2 semanas para atras y encontraras una solucion sencilla,
basicamente estas teclas arrojan dos caracteres en vez de uno asi que el primer caracter creo que es 0 y el segundo de fine la tecla presionada, de esta forma cada vez que  se capture una tecla especial, deberas capturar 2 cracteres y no 1 como lo harias habitualmente, revisa los post de gmantil que ahi esta muy claro..no olvides que para buscar utilizas el link que esta al lado del link de cerrar sesion.


juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io