据我所见,Konsole
CTRL+ENTER
和ENTER
中的13
和stdin
类似于正在运行的应用的mc
中的字节ncurses
。但是当我运行显然使用CTRL+ENTER
lib的ENTER
时,按{{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显示中运行,并且启用了该功能。你可能已经看到了。