Ale*_*huk 3 ruby multithreading keypress
在Ruby中,我需要一个简单的线程,每次按下一个键时都会运行一些代码.有没有办法做到这一点?
我需要能够捕获Page Up和Page Down
这是我尝试过的:
#!/usr/bin/env ruby
Thread.new do
while c = STDIN.getc
puts c.chr
end
end
loop do
puts Time.new
sleep 0.7
end
Run Code Online (Sandbox Code Playgroud)
这几乎可行.只有一个问题,每个击键后都需要回击.我想这是因为缓冲的IO.
spi*_*ike 12
您可以使用curses库来捕获按键而不进行缓冲.
require 'curses'
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down)
loop do
case Curses.getch
when Curses::Key::PPAGE
Curses.setpos(0,0)
Curses.addstr("Page Up")
when Curses::Key::NPAGE
Curses.setpos(0,0)
Curses.addstr("Page Dn")
end
end
Run Code Online (Sandbox Code Playgroud)
关键代码在这里:
http://ruby-doc.org/stdlib/libdoc/curses/rdoc/index.html
你可以在github上找到一个更长的例子:
https://github.com/grosser/tic_tac_toe/blob/master/bin/tic_tac_toe
| 归档时间: |
|
| 查看次数: |
5840 次 |
| 最近记录: |