有没有办法以编程方式将转义序列添加到ncurses中

时间:2018-04-23 02:52:45

标签: ncurses

我正在使用功能键的ncursesw应用程序。

不幸的是,似乎有一些终端模拟器(notablly putty)声称是终端类型“xterm”但是从现代xterm发送的f1到f4键发送不同的转义序列(从一些谷歌搜索它似乎非常旧版本的xterm做了同样的事情。)

我的系统上的ncursesw只是将这些转义序列传递给应用程序而不解释它们。

我想让我的程序接受这些额外的功能键转义序列。有没有办法以编程方式将转义序列添加到ncurses中,还是需要编写自己的转义序列解释器?

1 个答案:

答案 0 :(得分:1)

是的,可以使用#34; define_key" (http://invisible-island.net/ncurses/man/define_key.3x.html

对于给定的"密钥"是否允许多个转义序列,文档不清楚。或不。我的测试显示它确实允许它。因此,人们可以简单地定义其他序列。

define_key("\e[11~",KEY_F1);
define_key("\e[12~",KEY_F2);
define_key("\e[13~",KEY_F3);
define_key("\e[14~",KEY_F4);

您可能希望使用termname检查来包围它,因此它仅适用于声明的终端类型为xterm(我在实际程序中执行但我的实际程序是用pascal编写的)。