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

Responder a