class Slang::Teclado

Esta classe é um solitão: a sua única instância representa o teclado.

Public Methods

[more]bool teclaDisponivel(int decimos_de_segundo = 0) const
Devolve true se alguma tecla tiver sido pressionada e portanto estiver disponível para leitura.
[more]Tecla tecla()
Devolve a primeira das teclas pressionadas e ainda não lidas.
[more]void limpa()
Descarta todas as teclas pressionadas e ainda não lidas.


Documentation

Esta classe é um solitão: a sua única instância representa o teclado. Definida no módulo teclado (ficheiro de interface Slang/teclado.H).

A classe Teclado permite receber informação sobre a pressão de qualquer tecla através da função membro Tecla Teclado::tecla(), que devolve uma instância da classe Tecla. Esta função não deve ser utilizada sem que haja uma tecla disponivel (i.e. sem que o utilizador tenha de facto pressionado uma tecla), a não ser que se pretenda esperar que o utilizador pressione uma tecla.

Para verificar se o utilizador carregou numa tecla, existe a função bool teclaDisponivel(int decimos_de_segundo) const. Esta função tem como argumento o número décimos de segundo que a função espera pela pressão de uma tecla. Não deve ser usado zero como argumento desta função, se ela fôr usada dentro de um ciclo, dado que pode tornar o sistema muito lento (10 décimos de segundo é um valor aceitável para o argumento desta função nessas circunstâncias).

A função membro void Teclado::limpa() permite descartar as teclas que foram pressionadas pelo utilizador anteriormente e ainda não foram lidas e passar a considerar apenas as teclas que forem pressionadas a partir desse instante.

É definida uma variável global chamada teclado da classe Teclado (declarada no ficheiro de interface Slang/teclado.H), de modo que não é necessário, nem permitido, criar nenhuma variável deste tipo nos programas que fazem uso desta biblioteca, podendo-se utilizar directamente a variável teclado (como acontece no caso do canal cin).

Uma instância da classe Tecla pode ser uma tecla especial (definidas no enumerado TeclaEnum) ou um caracter normal. É possível verificar se o valor armazenado numa instância da classe Tecla é um deslocamento ou um caracter normal através das funções membro bool Tecla::deslocamento() const e bool Tecla::caractere() const.

Exemplo de utilização

Este programa captura todas as teclas premidas até ser premido o caracter 's'. Se forem deslocamentos procede ao deslocamento respectivo do cursor. Se forem caracteres escreve-os no ecrã. Se a tecla pressionada corresponder a um caractere que não se pode imprimir no ecrã é mostrada uma mensagem adequada. Se for outra tecla aparece outra mensagem apropriada.

	#include <Slang/slang.H> 

	using namespace Slang; 

	#include <cctype> // para isprint().

	using namespace std;

	int main () 
	{ 
	    Ecra::ObjectoCor cor_normal(amarelo, preto); 
	    Ecra::ObjectoCor cor_aviso(vermelho, preto); 

	    while(true) { 
		if(teclado.teclaDisponivel(10)) { 
		    Tecla a = teclado.tecla(); 

		    if(a.deslocamento())
			ecra.desloca(a); 
		    else if(a.caractere())
			if(isprint(a.comoChar()))
			    ecra << cor_normal << a.comoChar();
			else
			    ecra << cor_aviso << parado 
				 << "Este nao se pode imprimir!";
		    else
			ecra << cor_aviso << parado << "Tecla inválida!"; 
		    if(a == 's')
			break;
		} 
		ecra.refresca(); 
	    }
	}
	
obool teclaDisponivel(int decimos_de_segundo = 0) const
Devolve true se alguma tecla tiver sido pressionada e portanto estiver disponível para leitura. Desiste ao fim do tempo passado como argumento (em décimos de segundo).

oTecla tecla()
Devolve a primeira das teclas pressionadas e ainda não lidas.

ovoid limpa()
Descarta todas as teclas pressionadas e ainda não lidas.


This class has no child classes.