Página principal   Módulos   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes membro   Ficheiros membro   Páginas relacionadas  

Referência à classe Slang::Teclado
[Ferramentas de teclado]

Representa o teclado. Mais...

#include <Slang++/teclado.H>

Mostrar lista completa dos membros

Membros públicos

Construtores
 Teclado ()
 Constrói um novo teclado.

 ~Teclado ()
 Destrói o teclado.

Inspectores
Tecla teclaLida () const
 Devolve a última tecla lida.

Predicados
bool haTeclaDisponivel (int decimos_de_segundo=0) const
 Indica se alguma tecla está disponível para leitura.

Modificadores
void leProximaTeclaDisponivel ()
 Lê a primeira das teclas premidas e ainda não lidas.

void descartaTeclasDisponiveis ()
 Descarta todas as teclas premidas e ainda não lidas.


Descrição detalhada

Representa o teclado.

Esta classe é um solitão, pois admite-se não haver senão um teclado.

A classe Teclado permite obter informação acerca da pressão de teclas. Para isso usa-se a operação teclaLida(), que devolve uma instância da classe Tecla. Esta função não deve ser utilizada sem que haja uma tecla lida (i.e., sem que antes se tenha recorrido à operação leProximaTeclaDisponivel()).

A operação leProximaTeclaDisponivel() lê a próxima tecla disponível, i.e., a primeira das teclas premidas que ainda não foram lidas. Só deve ser utilizada se houver uma tecla disponível para leitura, a não ser que se pretenda que o programa páre a execução enquanto espera que o utilizador pressione uma tecla.

Para verificar se o utilizador pressionou numa tecla, existe o predicado haTeclaDisponivel(). Este predicado tem como argumento o número de décimos de segundo que se deve esperar pela pressão de uma tecla. Se o predicado for usado num ciclo, não se deve usar o valor zero como argumento, pois 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 operação descartaTeclasDisponiveis() 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, 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 Tecla::TeclaEnum) ou um caractere normal. É possível verificar se o valor armazenado numa instância da classe Tecla é um deslocamento ou um caracter normal através dos predicados Tecla::eDeslocamento() e Tecla::eChar().

Exemplo

O programa que se segue 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.haTeclaDisponivel(10)) { 
            teclado.leProximaTeclaDisponivel();
            Tecla tecla_premida = teclado.teclaLida(); 
            
            if(tecla_premida.eDeDeslocamento())
                ecra.moveCursorDeAcordoCom(tecla_premida); 
            else if(tecla_premida.eChar())
                if(isprint(tecla_premida.comoChar()))
                    ecra << cor_normal << tecla_premida.comoChar();
                else
                    ecra << cor_aviso << parado 
                         << "Este nao se pode imprimir!";
            else
                ecra << cor_aviso << parado << "Tecla inválida!"; 
            if(tecla_premida == 's')
                break;
        } 
        ecra.refresca(); 
    }
}

Definido na linha 215 do ficheiro teclado.H.


Documentação dos Construtores & Destrutor

Slang::Teclado::Teclado  
 

Constrói um novo teclado.

Encarrega-se de inicializar o "keyboard interface" do S-Lang.

Precondição:
Não pode haver mais nenhum teclado definido.

Definido na linha 13 do ficheiro teclado.C.

Referências nada().

Slang::Teclado::~Teclado   [inline]
 

Destrói o teclado.

Encarrega-se de re-iniciar o "keyboard interface" do S-Lang, que volta ao estado em que estava antes de o teclado ter sido construído.

Precondição:
V.

Definido na linha 43 do ficheiro teclado_impl.H.


Documentação dos métodos

Slang::Tecla Slang::Teclado::teclaLida   const [inline]
 

Devolve a última tecla lida.

Precondição:
V.
Poscondição:
teclaLida() = última tecla lida ou Tecla::nula, caso ainda não tenha sido lida nenhuma tecla.

Definido na linha 54 do ficheiro teclado_impl.H.

Referenciado por Slang::CaixaDeTexto::interage() e Slang::MenuSimples::interage().

bool Slang::Teclado::haTeclaDisponivel int    decimos_de_segundo = 0 const [inline]
 

Indica se alguma tecla está disponível para leitura.

Desiste ao fim do tempo passado como argumento (em décimos de segundo).

Precondição:
0 <= decimos_de_segundo.
Poscondição:
haTeclaDisponivel = está disponível uma tecla para leitura.

Definido na linha 49 do ficheiro teclado_impl.H.

Referenciado por Slang::CaixaDeTexto::interage() e Slang::MenuSimples::interage().

void Slang::Teclado::leProximaTeclaDisponivel   [inline]
 

Lê a primeira das teclas premidas e ainda não lidas.

Se nenhuma tecla tiver sido premida, espera que tal aconteça.

Precondição:
V.
Poscondição:
teclaLida() = tecla lida pela operação.

Definido na linha 59 do ficheiro teclado_impl.H.

Referenciado por Slang::CaixaDeTexto::interage() e Slang::MenuSimples::interage().

void Slang::Teclado::descartaTeclasDisponiveis   [inline]
 

Descarta todas as teclas premidas e ainda não lidas.

Não afecta a última tecla lida.

Precondição:
V.
Poscondição:
nao haTeclaDisponivel().

Definido na linha 64 do ficheiro teclado_impl.H.


A documentação para esta classe foi gerada a partir dos seguintes ficheiros:
Gerado em Tue Dec 3 15:19:38 2002 para Pacotes por doxygen1.3-rc1