- 我有一个 Ruby 命令行应用程序
- 导航主要由用户在提示时输入菜单选择来处理
- 有时提示被用于捕获不是导航指令的输入
- 我想提供一种在这些情况下导航的替代方法
- 目前,我捕获 SIGINT 和 SIGQUIT (
Ctrl-c
andCtrl-\
) 以提供一些基于非提示的导航 - 但是您可以捕获的信号数量非常有限(显然是 3 个?)
将基于修饰符的键盘快捷键添加到命令行 Ruby 应用程序的最佳方法是什么?
Ctrl-c
and Ctrl-\
) 以提供一些基于非提示的导航将基于修饰符的键盘快捷键添加到命令行 Ruby 应用程序的最佳方法是什么?
安装 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