#include <Slang/teclado.H>
Mostrar lista completa dos membros
Membros públicos | |
Teclado () | |
~Teclado () | |
bool | teclaDisponivel (int decimos_de_segundo=0) const |
Devolve true se alguma tecla tiver sido pressionada e portanto estiver disponível para leitura. Mais... | |
Tecla | tecla () |
Devolve a primeira das teclas pressionadas e ainda não lidas. Mais... | |
void | limpa () |
Descarta todas as teclas pressionadas e ainda não lidas. Mais... |
A classe Teclado permite receber informação sobre a pressão de qualquer tecla através da função membro Tecla 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
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, 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 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 tecla_premida = teclado.tecla(); if(tecla_premida.deslocamento()) ecra.desloca(tecla_premida); else if(tecla_premida.caractere()) 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 199 do ficheiro teclado.H.
|
|
|
Definido na linha 33 do ficheiro teclado_impl.H. 00033 { 00034 // Terminação do slang: 00035 SLang_reset_tty(); 00036 } |
|
Descarta todas as teclas pressionadas e ainda não lidas.
Definido na linha 46 do ficheiro teclado_impl.H. 00046 { 00047 SLang_flush_input(); 00048 } |
|
Devolve a primeira das teclas pressionadas e ainda não lidas.
Definido na linha 42 do ficheiro teclado_impl.H. 00042 { 00043 return Tecla::TeclaEnum(SLkp_getkey()); 00044 } |
|
Devolve Desiste ao fim do tempo passado como argumento (em décimos de segundo). Definido na linha 38 do ficheiro teclado_impl.H. 00038 { 00039 return SLang_input_pending(decimos_de_segundo) != 0; 00040 } |