4

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

4

1 回答 1

1

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

我不知道为什么常数没有增加。也许这是键盘上另一个ENTER 键的常量(在右下角)。不过没关系,我可以做putsCurses.getch来找出钥匙的号码。

于 2012-12-23T01:30:25.147 回答