Ir ao conteúdo

C++


H_Michels

Posts recomendados

Postado

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!!  :)

Postado

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

Postado

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.

  • 2 semanas depois...
Postado

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!!   :)

Postado

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

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

Postado

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).

Postado
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).

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

  • 10 anos depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...