我正在学习Curses类,但是在控制回车键方面遇到了麻烦。这是我目前的代码:
require 'curses'
win = Curses::Window.new(0, 0, 0, 0)
Curses.init_screen
Curses.cbreak
Curses.nonl
Curses.stdscr.keypad(true)
loop do
case Curses.getch
when 13 # Enter
Curses.addstr "abc"
when 8 # Backspace
Curses.delch
end
end
win.close
问题在于,当我按下 ENTER 键时,"abc" 将被写入屏幕(如预期);然而,当我第二次按 ENTER 键时,"abc" 只是重新被写入到相同的屏幕位置。看起来好像按下 ENTER 键会先将光标位置设置为 (0,0) 然后再添加字符串。我应该如何停止将光标位置设置为 (0,0)?
此外,由于某种原因,常量与我的键不匹配,因此 ENTER 键是键 13,但 Ruby 中 ENTER 键的常量是 400ish。我没有使用花哨的键盘或任何东西;标准美国键盘。