0
  • 我有一个 Ruby 命令行应用程序
  • 导航主要由用户在提示时输入菜单选择来处理
  • 有时提示被用于捕获不是导航指令的输入
  • 我想提供一种在这些情况下导航的替代方法
  • 目前,我捕获 SIGINT 和 SIGQUIT ( Ctrl-cand Ctrl-\) 以提供一些基于非提示的导航
  • 但是您可以捕获的信号数量非常有限(显然是 3 个?

将基于修饰符的键盘快捷键添加到命令行 Ruby 应用程序的最佳方法是什么?

4

1 回答 1

0

安装 highline gem - 应该允许您捕获各种组合键(无需用户在键后按回车键)。有关更多详细信息,请参阅此问题:如何在不按 Enter 的情况下获取单个字符?

如果您确实使用 highline,至少在我的测试中,您可能(或可能不)能够使用 Kernel.trap 来获取 Ctrl-C 之类的关键事件,因此您应该手动处理这些事件。Highline 将捕获任何键并让您检测 ctrl-d 与 d。但是,它不会检测到 ctrl-d 和 ctrl-shift-d 之间的区别,也不会区分 alt-d 和 d。下面是一些基本代码:

require "highline/system_extensions"
include HighLine::SystemExtensions

print "Press any key:"
k = get_character
Kernel.abort("\nCtrl-C - exiting..\n") if k == 3
puts
puts k.chr
于 2013-07-07T00:06:23.940 回答