curses如何区别输入Ctrl + Enter和其他具有重叠转义序列的击键?

时间:2015-11-27 23:27:52

标签: terminal curses ansi-escape

据我所见,Konsole CTRL+ENTERENTER中的13stdin类似于正在运行的应用的mc中的字节ncurses。但是当我运行显然使用CTRL+ENTER lib的ENTER时,按{{1}}会在{{1}}打开文件时将文件名插入命令行。它是如何实现的?我试图查看消息来源,但对我来说它们完全不可读。

1 个答案:

答案 0 :(得分:2)

mc(午夜指挥官)不会对输入使用ncurses,但可以将其用于输出。基本上它正在寻找特定的字符序列。

mc很少使用terminfo数据库,基本上只用于检查xterm鼠标和备用屏幕功能。

原则上,它可以从ncurses terminfo数据库中读取用户定义的功能(参见例如ncurses trapping extended keys (Control-left, Shift-Function etc)),但。< / p>

由于您正在查看来源,请参阅mc中的lib/tty/key.c来源,其中包含mc用作一组预定义键的表格。例如,当mc被配置为使用俚语时,这样做“有效”,尽管它的缺点是硬编码并且实际上可能与您的终端不匹配。

然而 - 正如我所说,mc会自己的输入。在key.c中进一步向下,您可能会看到get_modifier()中有HAVE_TEXTMODE_X11_SUPPORT的{​​@ 1}}。里面是一个最终转到XQueryPointer的调用,mc用于查找修改键的当前状态 - 如果它恰好在X显示中运行,并且启用了该功能。你可能已经看到了。