我正在学习Curses课程,但我无法控制ENTER键。到目前为止,这是我的代码:
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,但ENTER键的Ruby常量是400ish。我没有使用花式键盘或任何东西;标准的美国人。
答案 0 :(得分:1)
好像Curses.nonl
似乎只是意味着当按下ENTER时,会写“\ r”而不是“\ r \ n”,所以我设法解决这个问题的唯一方法是禁用任何使用Curses.raw
输出到屏幕并实现自己写入屏幕的所有数据。
我不知道为什么常数不会太大。也许这是键盘上其他 ENTER键的常量(在右下角)。虽然不重要,但我可以放Curses.getch
来找出密钥的数量。