我正在尝试在我的Ruby程序中捕获Control-Left、Shift-F10等按键。通常,仅使用getch,我会得到一个整数列表,例如27,91,50,50,126,这有效。但是我担心这些可能取决于系统或终端。在谷歌上搜索后,我发现了use_extended_names、tigetstr等内容。我找到了一个使用这些内容的C程序(由Thomas Dickey编写),它可以在运行时发现按键代码。我运行它,似乎可以发现扩展键,但是在同一程序中的getch仍然给我通常的整数列表,例如[27,91,53,68],这就是我已经得到的C-left。我期望得到它提到的一个返回值。
我错过了什么?
当我按下Control-left时,以下是输出结果:
我错过了什么?
当我按下Control-left时,以下是输出结果:
keypress=27
keypress=91
keypress=53
keypress=68
key=kLFT5, code=540
key=kEND5, code=525
key=kHOM5, code=530
key=kHOM3, code=528
key=kUP5, code=561
key=kDN5, code=520
我只需要得到 540,难道不应该吗?
这里是 keytest.c 的代码:https://gist.github.com/1237091
奇怪的是,在 TERM=screen 下运行时所有代码都显示为 0。上面的例子是在 TERM=xterm 下运行的。(我使用的是 Mac OSX 上的 Terminal)