Terminal 诅咒与回车和Ctrl+;输入和其他具有重叠转义序列的按键笔划?

Terminal 诅咒与回车和Ctrl+;输入和其他具有重叠转义序列的按键笔划?,terminal,curses,ansi-escape,Terminal,Curses,Ansi Escape,据我所知,在Konsole中CTRL+ENTER和ENTER看起来都像运行应用程序的stdin中的byte13。但是当我运行显然使用ncurseslib的mc时,按CTRL+ENTER将文件名插入命令行,而ENTER打开文件。它是如何实施的?我试图查找源代码,但它们对我来说完全不可读。mc(midnight commander)不使用ncurses进行输入,但可以将其用于输出。本质上,它是在寻找特定的字符序列 mc很少使用terminfo数据库,基本上只用于检查xterm鼠标和备用屏幕功能 原则

据我所知,在
Konsole
CTRL+ENTER
ENTER
看起来都像运行应用程序的
stdin
中的byte
13
。但是当我运行显然使用
ncurses
lib的
mc
时,按
CTRL+ENTER
将文件名插入命令行,而
ENTER
打开文件。它是如何实施的?我试图查找源代码,但它们对我来说完全不可读。

mc
(midnight commander)不使用ncurses进行输入,但可以将其用于输出。本质上,它是在寻找特定的字符序列

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

原则上,它可以从ncurses terminfo数据库中读取用户定义的功能(例如,请参见),但它不能

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


然而,正如我所说,
mc
做自己的输入。在
key.c
的下一步,您可能会在
get_modifier()
ifdef'd中看到一个区块,其中包含
HAVE_TEXTMODE_X11_SUPPORT
。在这里面是一个调用,它最终会转到,
mc
使用它来查找修改键的当前状态-如果它恰好在X显示中运行,并且该功能已启用。您可能已经看到了。

可能是重复的?不完全是-我将尝试回答。。。