Esta classe é um solitão: a sua única instância representa o teclado.
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(); } }
Tecla tecla()
void limpa()