#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. |
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.
|
Constrói um novo teclado. Encarrega-se de inicializar o "keyboard interface" do S-Lang.
Definido na linha 13 do ficheiro teclado.C. Referências nada(). |
|
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.
Definido na linha 43 do ficheiro teclado_impl.H. |
|
Devolve a última tecla lida.
Definido na linha 54 do ficheiro teclado_impl.H. Referenciado por Slang::CaixaDeTexto::interage() e Slang::MenuSimples::interage(). |
|
Indica se alguma tecla está disponível para leitura. Desiste ao fim do tempo passado como argumento (em décimos de segundo).
Definido na linha 49 do ficheiro teclado_impl.H. Referenciado por Slang::CaixaDeTexto::interage() e Slang::MenuSimples::interage(). |
|
Lê a primeira das teclas premidas e ainda não lidas. Se nenhuma tecla tiver sido premida, espera que tal aconteça.
Definido na linha 59 do ficheiro teclado_impl.H. Referenciado por Slang::CaixaDeTexto::interage() e Slang::MenuSimples::interage(). |
|
Descarta todas as teclas premidas e ainda não lidas. Não afecta a última tecla lida.
Definido na linha 64 do ficheiro teclado_impl.H. |