[英]Ruby: gets.chomp 1 keypress
我想提示用戶按ESC或任何其他鍵。 按ESC將停止所有進一步的動作。 按ENTER(或任何其他鍵),將執行其他操作。
按ENTER可以很好地工作,但是會等待用戶實際按Enter。 使其不十分友好。
用戶按下1次鍵后,是否有繼續操作的方法?
puts "Press Enter to continue or ESC to quit..."
decision = gets.chomp
if decision != "^["
then puts "do this stuff"
else
puts "bye"
end
我相信您幾乎不了解自己在做什么。 首先,這取決於您使用的操作系統。 我知道沒有一種“標准”機制適用於所有操作系統。
次要的,與字符串的比較,包含兩個字符'^'
和'['
與對ESC的檢查完全不同。
最后但並非最不重要的:除非按⏎,否則get gets
緩沖輸入。 讀取一個char所需的是IO#getc
。
這是unix控制台的工作代碼:
puts "Press Enter to continue or ESC to quit..."
begin
system("stty raw -echo")
decision = STDIN.getc
ensure
system("stty -raw echo")
end
if decision.ord != 27
puts "do this stuff"
else
puts "bye"
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.