curses 与 Ctrl+Enter 和其他具有重叠转义序列的击键有何不同?
How curses differs Enter from Ctrl+Enter and other key strokes with overlapping escape sequences?
据我所知,在 Konsole
中,CTRL+ENTER
和 ENTER
看起来都像 [=21] 的 stdin
中的字节 13
=]宁应用程序。但是当我 运行 mc
显然使用 ncurses
lib 时,按 CTRL+ENTER
会将文件名插入命令行,而 ENTER
打开文件。它是如何实施的?我试图查看来源,但它们对我来说完全不可读。
mc
(午夜指挥官)不将 ncurses 用于 input,但可以将其用于 output。本质上它是在寻找特定的字符序列。
mc
很少使用 terminfo 数据库,主要只是检查 xterm 鼠标和交替屏幕功能。
原则上,它可以从 ncurses terminfo 数据库中读取用户定义的功能(参见示例 ncurses trapping extended keys (Control-left, Shift-Function etc)),但它 不是.
由于您正在查看源代码,请参阅 lib/tty/key.c
中 mc
的源代码,其中包含 mc
用作一组预定义键的表。例如,当 mc
配置为使用俚语时,这样做 "works",尽管它有一个缺点,即它是硬编码的,实际上可能与您的终端不匹配。
但是 - 正如我所说,mc
有自己的 输入 。在 key.c
的更下方,您可能会在 get_modifier()
ifdef'd with HAVE_TEXTMODE_X11_SUPPORT
中看到一个块。里面是一个最终转到 XQueryPointer
的调用,mc
用来查找修改键的当前状态——如果它在 X 显示中恰好是 运行,并且如果功能已启用。你可能已经看到了。
据我所知,在 Konsole
中,CTRL+ENTER
和 ENTER
看起来都像 [=21] 的 stdin
中的字节 13
=]宁应用程序。但是当我 运行 mc
显然使用 ncurses
lib 时,按 CTRL+ENTER
会将文件名插入命令行,而 ENTER
打开文件。它是如何实施的?我试图查看来源,但它们对我来说完全不可读。
mc
(午夜指挥官)不将 ncurses 用于 input,但可以将其用于 output。本质上它是在寻找特定的字符序列。
mc
很少使用 terminfo 数据库,主要只是检查 xterm 鼠标和交替屏幕功能。
原则上,它可以从 ncurses terminfo 数据库中读取用户定义的功能(参见示例 ncurses trapping extended keys (Control-left, Shift-Function etc)),但它 不是.
由于您正在查看源代码,请参阅 lib/tty/key.c
中 mc
的源代码,其中包含 mc
用作一组预定义键的表。例如,当 mc
配置为使用俚语时,这样做 "works",尽管它有一个缺点,即它是硬编码的,实际上可能与您的终端不匹配。
但是 - 正如我所说,mc
有自己的 输入 。在 key.c
的更下方,您可能会在 get_modifier()
ifdef'd with HAVE_TEXTMODE_X11_SUPPORT
中看到一个块。里面是一个最终转到 XQueryPointer
的调用,mc
用来查找修改键的当前状态——如果它在 X 显示中恰好是 运行,并且如果功能已启用。你可能已经看到了。