Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
H_Michels

C++

Recommended Posts

Oi!

  gostaria de saber como se captura as setas do teclado. Mas é preciso que em cada seta tenha um valor diferenciado das demais.

  Desde já, valeu!!  :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest lucca

faz por codigo ASCII...não sei quais os valores das teclas porque to sem a minha tabela na mão...mas da pra fazer sim...

a seta pra cima acho q é 72...

a seta pra baixo 80...

a pra direita 77..

e pra esquerda 75...

Espero q tenha ajudado

Lucca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só um detalhe: lendo teclas de controle no console por funções como "getch()", elas têm que ser lidas duas vezes; pois geram dois bytes no buffer do teclado, um '0' e outro com o código da tecla.

Seria algo assim:


   int c;


   c=getch();
   if (!c)   /* verifica se c==0 */
   {

       c=getch();   /* le mais uma vez */
       switch (c)
       {

           case 72:     /* cima */
                      break;


           case 77:     /* direita*/
                      break;


           case 75:     /* esquerda*/
                      break;


           case 80:     /* baixo */


       }

   }

Note que se não for feito primeiro a verificação do primeiro getch(), o programa consideraria as teclas H, K, M e P como sendo também setas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi gente!

  Valeu pelas respostas até agora!

  ainda estou precisando de mais respostas por que é necessario que o valores das teclas sejam obtidos com um toque para cada uma.

     Até mais!!   :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest arnaldo.ribeirojunior

Você pode usar o bioskey, mas é muito chato de usar ...

Eu prefiro usar com dois getch's mesmo ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo q o DanielKO colocou captura as teclas com um único toque. O que acontece é que as setas tem valores 0x72, 0x75, 0x77 e 0x80, então são necessárias duas leituras a primeira pra identificar o zero e a segunda pra identificar (72, 75, 77 ou 80).

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado Originalmente por mef@05 Ago. 2002,14:17

O codigo q o DanielKO colocou captura as teclas com um único toque. O que acontece é que as setas tem valores 0x72, 0x75, 0x77 e 0x80, então são necessárias duas leituras a primeira pra identificar o zero e a segunda pra identificar (72, 75, 77 ou 80).

<font color='#000080'>Isso.  8D

Um pequeno detalhe: a notação 0x é usada para representar números em hexadecimal. 0x72 (hexa) = 114 (decimal).  :;):

E aproveitando o post, aí vai um exemplo compilável do código: :-DD


#include <stdio.h>
#include <conio.h>

int main(void) {

  int c;

  while (1) {

     c=getch();
     if (c==27) // se a tecla lida == (ESC)
        break;

     if (!c)   // se c==0 tem mais um byte esperando para ser lido
     {
       printf("Primeiro byte: 0\t");

       c=getch();   // le mais uma vez
       switch (c)
       {

             case 72:     // cima
                     printf("seta acima\n");
                     break;


             case 77:     // direita
                     printf("seta direita\n");
                     break;


             case 75:     // esquerda
                     printf("seta esquerda\n");
                     break;


             case 80:     // baixo
                     printf("seta abaixo\n");
                     break;

             case 59:    // F1
                     printf("tecla F1\n");
                     break;

             case 60:    // F2
                     printf("tecla F2\n");
                     break;

             default:
                     printf("Segundo byte: %d\n", c);

       }

     } else // o byte lido não e zero
       printf("Caracter: %c   ASCII = %d\n", c, c);

  }
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×