00001 #include <cassert> 00002 00003 extern "C" { 00004 #include <slang/slang.h> 00005 } 00006 00007 // Definição de métodos inline da classe Tecla: 00008 00009 inline Slang::Tecla::Tecla(TeclaEnum tecla) 00010 : tecla(tecla) { 00011 } 00012 00013 inline Slang::Tecla::operator Slang::Tecla::TeclaEnum () const { 00014 return tecla; 00015 } 00016 00017 inline char Slang::Tecla::comoChar() const { 00018 assert(caractere()); 00019 return char(tecla); 00020 } 00021 00022 inline bool Slang::Tecla::deslocamento() const { 00023 return tecla == cima || tecla == baixo || tecla == esquerda || 00024 tecla == direita; 00025 } 00026 00027 inline bool Slang::Tecla::caractere() const { 00028 return (32 <= tecla and tecla < 127) or (160 <= tecla and tecla < 256); 00029 } 00030 00031 // Definição de métodos inline da classe Teclado: 00032 00033 inline Slang::Teclado::~Teclado() { 00034 // Terminação do slang: 00035 SLang_reset_tty(); 00036 } 00037 00038 inline bool Slang::Teclado::teclaDisponivel(int decimos_de_segundo) const { 00039 return SLang_input_pending(decimos_de_segundo) != 0; 00040 } 00041 00042 inline Slang::Tecla Slang::Teclado::tecla() { 00043 return Tecla::TeclaEnum(SLkp_getkey()); 00044 } 00045 00046 inline void Slang::Teclado::limpa() { 00047 SLang_flush_input(); 00048 } 00049