如何阅读Ruby curses应用程序中的箭头键?

时间:2017-07-11 13:25:29

标签: ruby keyboard ncurses

我有一个Ruby curses应用程序,我想在其中捕获箭头键和功能键。问题是在使用STDIN.getch时,某些击键会产生多个值。当我输入像a-z这样的“常规”键时,我会得到一个单值。当我输入[F]键或箭头键时,我得到三个值。

是否有设计用于处理键盘输入的宝石或更好的方法来完成阅读键击?

#!/usr/bin/ruby

require 'curses'
require 'io/console'

Curses.noecho

Curses.init_screen
main_window = Curses::Window.new(24, 40, 1, 0)

num_keys = 0
loop do
   ch = STDIN.getch
   num_keys = num_keys + 1
   main_window.addstr(' key:' + ch.inspect + ' count:' + num_keys.to_s)
   main_window.refresh

   break if ch == 'q'
end

Curses.close_screen

1 个答案:

答案 0 :(得分:1)

在实例化后立即尝试在窗口上启用keypad

main_window = Curses::Window.new(24, 40, 1, 0)
main_window.keypad = true

然后您可以使用STDIN.getch窗口上的getch方法,而不是使用ch = STDIN.getch ,所以请尝试更改

ch = main_window.getch

HTML 4.01 Transitional

现在,当我运行你的程序时,我得到了

  

键:259计数:1

当我点击向上箭头而不是

  

键:“\ e”计数1键:“[”计数:2键:“A”计数:3