• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zamak

Extended keys

3 mensagens neste tópico

Boas!

Pretendo que a função 'mostra_ascii' faça a leitura (pela função 'getch()') de um inteiro e que depois escreva o caracter correspondente ao valor lido. Na leitura de teclas numéricas e alfanuméricas a função devolve o caracter correspondente à tecla primida e o relativo código ASCII. O problema surge quando é efectuada a leitura de teclas de função (F1,F2,F3,...) e teclas específicas e de navegação (HOME,PGDN,setas de navegação,...), nestes casos a função 'getch()' devolve zero ;)

Porque é que isto acontece, e como é que se pode resolver este problema?

int mostra_ascii ()
{
char caracter;
int tecla;
clrscr();
printf("Prima uma tecla...");
tecla = getch ();
caracter = (char) tecla;
clrscr();
printf("Tecla Primida: %c\nValor ASCII: %d",caracter, tecla);
getch();
return 1;
}

Obrigado desde já ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Retira o 2º getch e vê no que dá.

EDIT: O que acontece é que o 2º getch vai buscar o código estendido da tecla. Por isso, quando obtiveres 0 no 1º getch, fazes de novo getch e lês o código estendido que é único para cada tecla especial.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, já percebi :P Não sabia que era necessário chamar a função getch() duas vezes para poder ler o código de uma extended key.

Muito obrigado TheDark!! :)

0

Partilhar esta mensagem


Link 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