Pla*_*tin 4 ruby terminal stdin gets
我的 Ruby 脚本类似于:
something = gets # or STDIN.gets
puts something
def arrow_pressed
puts "arrow totally pressed"
end
Run Code Online (Sandbox Code Playgroud)
一旦用户提示存在,我希望除箭头键之外的所有键盘输入正常发生。如果按下这些按钮,我不希望终端中出现任何内容(例如^[[A
)。我只想执行我的arrow_pressed
方法。我想执行它而不需要用户点击Return
我已经尝试过这个要点- 效果很好,只是即使在更改它以正常地通过大多数击键之后,我仍然无法Backspace
(或其他特殊功能)工作。
我很高兴使用gets
(图书馆或其他什么)以外的东西。任何帮助,将不胜感激!
我是tty-reader的作者,它提供了一个更高级别的 API 来处理键盘输入。使用它您可以读取单个按键、整行或多行内容。它还允许您监听不同的按键事件,例如按键或退格键。
例如,提示用户输入并在按下箭头或退格键时执行操作:
require "tty-reader"
reader = TTY::Reader.new
reader.on(:keydown) { puts "down we go" }
.on(:keyup) { puts "up we go" }
.on(:keybackspace) { puts "backspace pressed" }
answer = reader.read_line
Run Code Online (Sandbox Code Playgroud)
该 gem 已经过测试,可在包括 Windows 在内的所有主要平台上运行。