James Edward Gray II
> What's the best way to go about this, select() over STDIN in my
> processing loop?
Hmm, I don't appear to be able to select() over STDIN. Now I'm really
in need of a good idea... <laughs>
James Edward Gray II
--
require 'io/wait'
loop do
# my processing stuff
if STDIN.ready?
# handle input
end
end
--
Lennon
rcoder.net
Which operating system?
On win32... I haven't tried it... they seem to have
provided _kbhit() in <conio.h>... Apparently implemented
in terms of win32 PeekConsoleInput()...
I dunno if it really works...? :) But you might be able
to try calling it using ruby/dl...
On *nix, I think if you put the tty into raw mode you should
be able to select on stdin and detect unbuffered keypresses.
Sorry I can't be of more help . .
Regards,
Bill
Wow it actually seems to work (!)
>> require 'dl'
=> true
>> kbhit = Win32API.new("msvcrt", "_kbhit", [], 'I')
=> #<Win32API:0x2b84670>
>> kbhit.call
=> 0
>> 10.times { puts kbhit.call; sleep 1 }
0
0
1 # I hit spacebar here....
1
1
1
1
1
1
1
HTH,
Regards,
Bill
> On *nix, I think if you put the tty into raw mode you should
> be able to select on stdin and detect unbuffered keypresses.
That was the trick I needed. Thank you.
Also thanks to Lennon Day-Reynolds, who made it look good. ;)
James Edward Gray II