Olá! Algo parecido com um getch() quase nunca fazem parte da biblioteca padrão. Vi, há algum tempo, alguém respondendo essa dúvida; ele usava a termios.
Procurei algo no google e encontrei esse snippet em http://blog.rezra.com/articles/2005/12: require 'rubygems' require 'termios' t = Termios.tcgetattr(STDIN) t.lflag &= ~Termios::ICANON Termios.tcsetattr(STDIN,0,t) A binding da termios apenas encapsula as funções e estruturas da biblioteca. Como nunca a tinha usado, procurei uma referência: http://www.opengroup.org/onlinepubs/000095399/basedefs/termios.h.html On 8/8/07, Aurélio A. Heckert <[EMAIL PROTECTED]> wrote: > Olá galera, > > Acho que é minha primeira mensagem para a lista... > Sou Aurélio A. Hecket, Salvado-BA, membro da Colivre.coop.br > que usa muito Ruby on Rails, mas eu fico mais na interface. :-) > Tenho usado Ruby em projetos pessoais, como extensões para > o Inkscape e recentemente um jogo de tabuleiro (Dou Shou Qi). > > Bem, meu problema é que gostaria de capturar apenas um > caracter a cada loop do jogo para identificar comandos do > usuário, contudo o STDIN.getc só traz um caracter quando > ele já recebeu uma linha completa, ou seja, o usuário tem > que dar um <enter> depois de cada comando. :-/ > > Exemplo para teste: > puts STDIN.getc.chr > Só vai imprimir o primeiro char digitado depois de um <enter>. > > Como faço um código Ruby que funcione como o código > BASH abaixo? > read -sn1 x; echo $x > > - espera pela entrada do usuário > - coleta o caracter enviado e guarda em uma variável > - segue adiante... > > Valeu! > Aurium > > PS: Se quiserem... http://www.colivre.coop.br/Aurium/DouShouQi > > -- > -===================================================- > . . Aurélio A. Heckert [ GNU/Linux ] > / \ http://www.aurium.cjb.net > ((__-^^-,-^^-__)) > `-_---" "---_-´ Ilustração Vetorial Livre: > `--|o` ´o|--´ http://InkscapeBrasil.org > \ ' / Projeto Software Livre - Bahia: > ): :( http://psl-ba.softwarelivre.org > (o_o) Coop. de Tecnologias Livres: > "-" http://www.colivre.coop.br > ------------------------------------------------- > GNU/Linux User #312507 http://counter.li.org > - - - - - - - - - - - - - - - - - - - - - - - - - > ( ( ( http://www.midiaindependente.org ) ) ) > -===================================================- > > "Se conhecimento é poder, que país governado > por industriais dará a verdadeira educação? > Cuidado com o feedback da miséria!" Tet Ramon > "Eu temo pela minha espécie quando penso que > Deus é justo." Thomas Jefferson > _______________________________________________ > Ruby-l mailing list > [email protected] > http://www.listas.unicamp.br/mailman/listinfo/ruby-l > -- Leonardo Pires Supermercado Família :: fone (85) 3052.2000 / (85) 9171.1575 :: fax (85) 3052.2050 :: msn [EMAIL PROTECTED] _______________________________________________ Ruby-l mailing list [email protected] http://www.listas.unicamp.br/mailman/listinfo/ruby-l
