如何让 Ruby 诅咒正确响应箭头键?

2023-12-29

TL;DR

如何让 Ruby 诅咒正确响应箭头键? KEY_UP 常量似乎与我的输入不匹配。

环境及问题描述

I am running Ruby 2.1.2 with the curses 1.0.1 gem https://github.com/ruby/curses. I'm trying to enable arrow-key navigation with curses. I've enabled Curses#getch http://www.ruby-doc.org/stdlib-2.0/libdoc/curses/rdoc/Curses.html#method-c-getch to fetch a single key without waiting for the carriage return by calling Curses#cbreak http://www.ruby-doc.org/stdlib-2.0/libdoc/curses/rdoc/Curses.html#method-c-cbreak, and this is working fine for the k character. However, I really want to enable arrow key navigation, and not just HJKL for movement.

目前,向上箭头在我的程序中打印 27,这似乎是正确的顺序值 http://www.ruby-doc.org/core-2.1.2/String.html#method-i-ord我的键盘给出了向上箭头键:

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

and which should be matched by the Curses KEY_UP constant http://www.ruby-doc.org/stdlib-2.0/libdoc/curses/rdoc/Curses/Key.html. It isn't, and so falls through to the else statement to display the ordinal value. The up-arrow key also leaves [A as two separate characters at the command prompt when the ruby program exits, which might indicate that Curses#getch http://www.ruby-doc.org/stdlib-2.0/libdoc/curses/rdoc/Curses.html#method-c-getch isn't capturing the key press properly.

我的红宝石代码

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

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

stdscr.keypad = true

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Ruby 诅咒正确响应箭头键? 的相关文章

随机推荐

  • 重新排序数组

    比如说 我有一个如下所示的数组 var playlist artist Herbie Hancock title Thrust artist Lalo Schifrin title Shifting Gears artist Faze O
  • 将 Bladejs 与 Meteor 结合使用

    我最近将节点刀片智能包添加到我的流星中 并且静态内容显示良好 但是 我无法使用任何模板变量 在我安装 Blade 之前 模板变量与车把配合得很好 有人知道我做错了什么吗 控制台输出 ReferenceError player is not
  • 是否可以将 MKS Integrity 存储库导入 git 中?

    我只需要源树及其历史记录 我现在不关心需求 问题 我用命令行玩了一下 看看是否可以获得主干和一些开发路径的更改包列表 我认为应该可以为每个更改包提取差异 并使用它来重放自 git 中第一次提交以来的所有更改 像这样的东西 获取第一个提交并将
  • !clrstack -p 不给出调用堆栈中方法的参数值

    我们正在尝试使用 Windbg 分析 w3wp 内存转储 我们发现 w3wp 进程由于堆栈溢出而崩溃 我加载了 psscor4 dll 并通过发出 clrstack 获取了调用堆栈 但我也想知道传递给方法的参数 如果我发出 clrstack
  • 从自定义视图启动 AsyncTask 的最佳实践

    产生耗时的计算线程是很常见的 稍后我们需要更新Activity or Fragment与计算结果 我一直遵循以下准则 到目前为止 它对我来说效果很好 AsyncTask需要onPostExecute UI Fragment Use setR
  • Angular-ui-bootstrap 模式和打字稿

    我正在将 ngDialog 与 Angular 和 Typescript 一起使用 但是我正在尝试更改为 Angular ui boostrap 模式 因为它看起来更酷且更易于使用 我有一个场景 我使用例如 AddressListContr
  • WebView.loadUrl() 中的 Android JS

    我想在 WebView 中加载网页 但删除网页的部分内容 因此 我创建了一个自定义 WebViewClient 并且 在 onPageFinished 中 我执行了一些 javascript 来删除一些元素 然后 我使 WebView 可见
  • -ms-transform 不适用于 IE10(及以下版本)中的表头组 (thead)

    谁能帮我找到一种方法让 ms transform 在表头上工作 上下文是 我正在重新定位标题 使用 Javascript 和 CSS 转换 以使其在用户向下滚动到标题不再可见的位置时粘在屏幕顶部 并且使用如果没有可见的列标题 我可能也无法读
  • Javascript 中数组的每个元素的 toString() [重复]

    这个问题在这里已经有答案了 我想查找一个元素 可能是字符串或数字 是否位于数组内 数组是test元素是value 到目前为止一切顺利 我有这个代码 function compare value test We need to stringi
  • 是否可以在 FromURI 和 FromBody 上创建参数绑定?

    我查找了 ASP NET Web API 参数绑定的文档 它们似乎只有 fromURI 和 fromBody 是否可以两者兼得 这是一些背景信息 我正在创建一个 webhook 接收器 处理程序 我可以控制哪个 URL 是 webhook
  • 如何在选择下拉框中应用填充?

    我有两种类型的输入 Aselect下拉框和常规input On the input 我添加了一个padding 10px 这使它看起来很大 问题是 一旦我将选择框放在它旁边 它们的高度就不同了 如何将填充应用于选择 或使其与选择的高度相同i
  • 如何列出已停止的 Docker 容器中的文件

    这个问题 https stackoverflow com questions 34429757 how to copy file to stopped docker container演示如何从已停止的容器中复制文件 这要求我知道文件的完整
  • Swift SKShapeNode shapeWithSplinePoints

    我正在尝试为要遵循的节点创建 CGPath 但是当我尝试使用 608 hd best practices for building spritekit games 的操作和常量幻灯片中定义的 SKShapeNode 时 我收到错误调用中的额
  • Django 模型是否知道它是从哪个数据库加载的以及如何访问此信息?

    例如 我们有这样的代码 for book in myapp models Book objects using alternate database all book save 将书籍保存到 alternate database 或到 de
  • 如何根据另一列中的值将函数应用于 Pandas 中的列?

    预先感谢您的阅读 我有一个数据框 df pd DataFrame Words Sec level Sec levels Sec level Und ba Pro conf ProAbb cth Conflict None None None
  • uitableview cellforrowatindexpath 未调用,但调用了节中的行数

    在我的表视图中 没有调用section方法中的行 并且它返回值17 但是没有调用cellforrowatindexpath 我已在此方法的第一行中放置了断点 但在调试时从未显示这一点 我已遵循tableviewdelegate和数据源 以及
  • 部分视图中的 ASP.NET MVC 自定义类型列表

    我有一个采用分页列表的视图 如书呆子晚餐示例中所示 该页面按预期工作 现在我添加了一个采用相同 PagulatedList 的部分视图 并在第一个视图中调用 RnederPartial ASP NET 抛出一个我似乎无法解决的异常 分页列表
  • Android:共享图像意图无法与 Facebook 配合使用?

    您好 我有以下代码来共享图像 Share Intent share new Intent Intent ACTION SEND share setType image jpeg Uri uri Uri parse getFilesDir F
  • Spring MockMvc-请求参数列表

    我正在尝试使用 MockMvc 测试几个控制器端点 但遇到了一些麻烦 请友善 我是新手 使用字符串作为参数的简单端点工作正常 但使用字符串列表的稍微复杂的端点则不满意并抛出异常 有人能指出我做错了什么吗 RestController Req
  • 如何让 Ruby 诅咒正确响应箭头键?

    TL DR 如何让 Ruby 诅咒正确响应箭头键 KEY UP 常量似乎与我的输入不匹配 环境及问题描述 I am running Ruby 2 1 2 with the curses 1 0 1 gem https github com