C- TermCap TGETSTR获取箭头键



我正在尝试从TermCap数据库中获取代表箭头键的字符串。使用以下内容:

char *buffer = malloc(2048);
tgetent(buffer, getenv("TERM")); //TERM = xterm-256color
char *key_up = tgetstr("ku", &buffer); // gives me EOA

ku通过键入上箭头键发送的输入字符串。

问题是箭头键在输入程序时实际上是作为E[A传递的。它也像这样传递给cat。我尝试了不同的终端模拟器和外壳,它们都以相同的方式将其传递。

因此,我决定为密钥而不是使用 ku值进行硬码,但效果不正确。

我在这里错过了什么吗?我如何以编程方式获取正确的ku值?

终端描述是为全屏应用程序编写的,这些应用程序使用分配给此的一个或多个终端功能初始化。大约一半的终端描述初始化了终端的光标和键盘键,以使用应用程序模式。在应用程序模式下,这些键发送不同的字符。

ncurses常见问题我的光标键不起作用 更详细。

如果您试图为某些非屏幕命令行应用程序使用终端说明,则可以使命令份额处理 E[ (CSI)和 EO SS3)作为同一件事,忽略两种模式之间的差异。如xterm手册页所述,这是在zsh的某些配置中完成的。

顺便说一句,如果您的" TermCap"实际上是终端系统的接口(例如Ncurses),则无需分配缓冲区,因为它被忽略了。ncurses的手册说:

  • 仿真忽略了缓冲指针 bp Termcap 库将在该区域存储终端描述的副本 该指针引用。但是, ncurses 以编译二进制形式存储其终端描述,这不是相同的 东西。

相关内容

  • 没有找到相关文章

最新更新