如何在Ruby中正确使用Curses :: KEY_BACKSPACE

时间:2014-08-20 10:12:27

标签: ruby curses

假设我有以下代码:

require 'curses'

Curses.init_screen

loop {
  ch = Curses.getch
  case ch
    when Curses::KEY_BACKSPACE
      Curses.addstr('Backspace \n')
    else
      Curses.addstr("Key: #{ch} \n")
  end
}

Curses.close_screen

当我按退格键时,我得到以下输出:

Key: 8

预期产出:

Backspace

为什么呢?我究竟做错了什么?我该如何解决?

提前致谢。

1 个答案:

答案 0 :(得分:2)

你没有做错任何事。问题是KEY_BACKSPACE的定义,以及终端实际返回的内容......基本上这是一个历史性的混乱。

只需检查\b(或8),而不是KEY_BACKSPACE。 (在实践中,我不确定你获得KEY_BACKSPACE的返回值,但检查它是无害的。)