gpt4 book ai didi

ruby - 如何让 Ruby curses 正确响应箭头键?

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:52 25 4
gpt4 key购买 nike

长话短说

如何让 Ruby curses 正确响应方向键? KEY_UP 常量似乎与我的输入不匹配。

环境和问题描述

我正在使用 curses 1.0.1 gem 运行 Ruby 2.1.2 .我正在尝试使用 curses 启用箭头键导航。我启用了 Curses#getch通过调用 Curses#cbreak 获取单个 key 而不等待回车,这对 k 字符来说工作正常。但是,我真的很想启用箭头键导航,而不仅仅是用于移动的 HJKL。

目前,向上箭头在我的程序中打印 27,这似乎是正确的 ordinal value我的键盘提供向上箭头键:

"^[[A".ord
#=> 27

哪些应该Curses KEY_UP constant 匹配.它不是,因此会跳转到 else 语句来显示序数值。当 ruby​​ 程序退出时,向上箭头键还会在命令提示符处留下 [A 作为两个单独的字符,这可能表示 Curses#getch没有正确捕捉按键。

我的 Ruby 代码

require 'curses'
include Curses

begin
init_screen
cbreak
noecho
keypad = true

addstr 'Check for up arrow or letter k.'
refresh
ch = getch
addch ?\n

case ch
when KEY_UP
addstr "up arrow \n"
when ?k
addstr "up char \n"
else
addstr "%s\n" % ch
end

refresh
sleep 1
ensure
close_screen
end

最佳答案

在启用小键盘的行中,您实际上是在创建一个名为“小键盘”的局部变量,因为该方法在类 Curses::Window 中。由于您没有制作自己的窗口(除了使用 init_screen),您可以使用 stdscr 方法引用标准窗口。如果我将第 8 行更改为:

stdscr.keypad = true

那么你的示例代码对我有用。

关于ruby - 如何让 Ruby curses 正确响应箭头键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com