Ruby Curses控制了回车键

时间:2012-12-06 10:12:16

标签: ruby cursor curses

我正在学习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。我没有使用花式键盘或任何东西;标准的美国人。

1 个答案:

答案 0 :(得分:1)

好像Curses.nonl似乎只是意味着当按下ENTER时,会写“\ r”而不是“\ r \ n”,所以我设法解决这个问题的唯一方法是禁用任何使用Curses.raw输出到屏幕并实现自己写入屏幕的所有数据。

我不知道为什么常数不会太大。也许这是键盘上其他 ENTER键的常量(在右下角)。虽然不重要,但我可以放Curses.getch来找出密钥的数量。