有没有办法通过编程将转义序列添加到ncurses

有没有办法通过编程将转义序列添加到ncurses,ncurses,Ncurses,我正在开发一个使用功能键的ncursesw应用程序 不幸的是,似乎有一些终端仿真器(显然是putty)声称属于终端类型“xterm”,但为f1到f4键发送的转义序列与现代xterm发送的不同(从一些谷歌搜索中,似乎非常旧的xterm版本也这样做) 我的系统上的ncursesw只是将这些转义序列传递给应用程序,而不进行解释 我想让我的程序接受这些额外的转义序列的功能键。有没有办法通过编程将转义序列添加到ncurses中,或者我需要编写自己的转义序列解释器?是的,可以使用调用“define_key”

我正在开发一个使用功能键的ncursesw应用程序

不幸的是,似乎有一些终端仿真器(显然是putty)声称属于终端类型“xterm”,但为f1到f4键发送的转义序列与现代xterm发送的不同(从一些谷歌搜索中,似乎非常旧的xterm版本也这样做)

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


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

是的,可以使用调用“define_key”()

文档中不清楚它是否允许给定“键”有多个转义序列。我的测试表明它确实允许这样做。因此,我们可以简单地定义附加序列

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编写的)