Ruby Curses 控制回车键

标签 ruby curses text-cursor

我正在学习 Curses 类(class),但无法控制 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。我没有使用花哨的键盘或任何东西;标准的美国。

最佳答案

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

我不知道为什么常量没有太大变化。也许这就是键盘上(右下角)other ENTER 键的常量。不过这并不重要,我只需执行 puts Curses.getch 即可找出 key 的编号。

关于Ruby Curses 控制回车键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13741317/

相关文章:

python - 有没有办法使用 curse 在同一终端上创建单独的显示和输入?

python - 在 stdscr 中解释 "ENTER"按键(Python 中的 curses 模块)

linux - 如何获得光标在终端中的位置?

Ruby "method_missing"创建方法后运行

ruby-on-rails - 如何在 ruby​​/rails 中定义 C/C++ 样式的宏

javascript - 在 Rails 应用程序上无法看到我使用 google map 添加的位置的 map

linux - 在 bash 脚本中控制光标

ruby-on-rails - Rails update_attribute 问题

python - 如何正确刷新 curses 窗口?

find - Sublime Text - 将光标移动到 "found"文本的快捷方式?