Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

sapires

Teclas especiais em C

Mensagens Recomendadas

sapires

Boa tarde malta.

Estou a fazer um programa que tem de esperar que o utilizador introduza a seta para a direita ou seta para a esquerda (<- ->).

Tipo para enter seria

tecla = getch();
             if (tecla !=13){.......} //Enter é 13 na tabela mas nao encontro as setas....

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Onde é que o prof arranjou o getch()?

Se ele acha que o <conio.h> é mais "adequado" que o <ncurses.h>, é ele que nao é "adequado" ;)

O <ncurses.h> (curses, ncurses, ou pdcurses) funciona em todos os sitios que o <conio.h> funciona, mas o contrario nao é verdadeiro.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Acho que o getch() do <conio.h> divide as teclas especiais em duas chamadas. Isto é: com a primeira chamada precisas de detectar o inicio duma sequencia dupla e chamar outra vez o getch().

Experimenta o getch() num loop e vai carregando nas teclas ate perceberes como e que funciona e com que valores

#include <conio.h>
#include <stdio.h>
int main(void) {
  puts("Prime ESPACO quando estiveres farto.");
  for (; {
    int ch = getch();
    printf("%d ", ch);
    if (ch == ' ') break;
  }
  return 0;
}

Testei no DOS que tenho instalado numa maquina virtual com o compilador Turbo C da Borland :)

C:\PROJECTS>tcc keys.c
Turbo C  Version 2.01  Copyright (c) 1987, 1988 Borland International
keys.c
Turbo Link  Version 2.0  Copyright (c) 1987, 1988 Borland International

        Available memory 394746

C:\PROJECTS>keys
Prime ESPACO quando estiveres farto.
97 98 99 48 49 50 0 72 0 80 0 75 0 77 32
C:\PROJECTS>

Eu carreguei "abc012<UP><DOWN><LEFT><RIGHT><ESPACO>"

Portanto <UP> gera a sequencia 0, 72;

<DOWN> gera a sequencia 0, 80;

<LEFT> gera a sequencia 0, 75;

e <RIGHT> gera a sequencia 0, 77


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.