0
我試圖從命令行立即讀取一個字符而不使用回車。我使用的紅寶石(Ruby的1.9.3p374)代碼如下:STDIN.getch作爲一個非阻塞事件(這是可能的嗎?)
require 'io/console'
ch = STDIN.getch
puts ch
直到現在everithing工作正常,但現在我希望把這段代碼無限循環裏面做一些其他的東西,像
loop do
puts "..doing stuff.."
ch = STDIN.getch
if ch == 'q'
break
end
end
但是這段代碼總是強制我們在每次打印之間按下一個鍵。我想要一個類似於STDIN.read_nonblock方法的行爲,但不必在按下一個字符後按Enter鍵。
基本上我想打印「..做東西..」,直到我按鍵盤上的某個鍵,但我不想使用輸入。
任何幫助將不勝感激。謝謝
謝謝你tadman。我將嘗試探索curses庫以檢查是否可以找到解決我的問題的方法。 –
值得注意的是,輸入問題可能是由於終端線路緩衝。默認情況下,直到收到換行符纔會「發送」任何內容。雖然這可以改變,但是用低級調用做這件事很煩人。您還必須將終端恢復到默認狀態,否則您將破壞依賴線路緩衝的其他程序。詛咒雖然起初有點令人頭疼,但可以爲你做很多事情,並且能夠做好很多與終端管理有關的事情。 – tadman