Midnight Commander 的 Ctrl-Enter 无法在 Fedora 的 X 终端中工作,但在 OpenSuse 中工作

Midnight Commander 的 Ctrl-Enter 无法在 Fedora 的 X 终端中工作,但在 OpenSuse 中工作

我喜欢午夜指挥官。可能与 90 年代初俄罗斯开始使用 DOS 机器有关,但现在我真的很喜欢命令行与两面板文件列表的集成。一个关键功能是 Ctrl+Enter 将当前选定的文件或目录的名称复制到命令行中,而不启动它。

不幸的是,在 Fedora(26 和 27)上,这在 Konsole 中失败了,而且显然在所有其他基于 X 的终端中也失败了。它确实可以在虚拟控制台中工作,我可以按 Ctrl-Alt-F3。

在 OpenSuse Leap(42.1、42.2、42.3)上,Ctrl+Enter 功能完美运行。我无法找出任何区别。 (我在两者上都使用 KDE,据我了解,这意味着在 Fedora 上我有 X.org,而不是 Wayland)。

如何让 Ctrl+Enter 在 Fedora 上工作?或者,如果这是不可能的,是否有办法将非常有用的功能重新分配给 Midnight Commander 中的其他一些组合键?

(我也会考虑 Midnight Commander 本身的替代品,但是在控制台窗口中运行的那些,似乎没有。我不需要图形两面板文件管理器,因为我使用 MC 来协助快速制定命令)。

答案1

tl;dr:习惯使用Alt+ Enter(又名ESC后接Enter)。

Ctrl+Enter在终端模拟器中生成与 完全相同的序列Enter,因此应用程序无法区分这两者。好吧,没有办法通过查看从终端模拟器接收的输入流。

mc有一个有趣的功能,称为“X11 支持”。它不仅查看从终端仿真器接收的字节,而且(如果编译了此支持,并且 X11 连接在运行时可用)查询 X11 服务器以获取修饰键的状态。

所以基本上它是这样的:“哇,我从终端模拟器收到了一个 Enter。嘿,X11 服务器,现在按下 Ctrl 了吗?”

有多种方法可能不适合您。

Fedora 的mc编译可能没有 X11 支持,我不知道。检查 的输出mc --version,是否包含“With support for X11 events”?

susudoscreentmux或类似工具也可能会破坏此功能,以防 X11 连接在它们内部不可用(例如,凭据未由或ssh正确设置/转发;或者与另一个 X 服务器分离并重新连接;显示未由 转发) 。susudoscreentmuxssh

该功能在 Wayland 上也不起作用。我怀疑由于其安全模型,它无法在 Wayland 中实现,或者至少在没有某些核心 Wayland 组件的插件/扩展的情况下无法实现。但即使可以检测修饰符的状态,在mc.

答案2

我们仍然没有替代品Ctrl-Shift-Enter在韦兰的MC中。

所以缺少一个,我建议使用Alt-m反而。并且因为进入是相同的Ctrl-m,这意味着我们将有:

  • Alt-Ctrl-m, IE。Alt-Enter, 为了粘贴文件名
  • Alt-m为了粘贴完整路径名

请注意,默认情况下Alt-m被分配给邮件行动,因此我们将失去该映射,但它看起来像是一笔成功的交易。

这是一个(可重播)脚本,用于在默认键盘映射(文件/etc/mc/mc.keymap)中应用此新映射:

sudo sed -ri '/PutCurrentFullSelected/s/=( alt-m;)?/= alt-m;/' /etc/mc/mc.default.keymap
sudo sed -ri '/Mail = alt-m/s/= alt-m/=/;' /etc/mc/mc.default.keymap

或者补丁:

diff --git a/mc/mc.default.keymap b/mc/mc.default.keymap
--- a/mc/mc.default.keymap
+++ b/mc/mc.default.keymap
@@ -33,7 +33,7 @@ Shell = ctrl-o
 PutCurrentPath = alt-a
 PutOtherPath = alt-shift-a
 PutCurrentSelected = alt-enter; ctrl-enter
-PutCurrentFullSelected = ctrl-shift-enter
+PutCurrentFullSelected = alt-m; ctrl-shift-enter
 ViewFiltered = alt-exclamation
 Select = kpplus
 Unselect = kpminus
@@ -313,7 +313,7 @@ Help = f1
 Refresh = ctrl-l
 Goto = alt-l
 Sort = alt-t
-Mail = alt-m
+Mail =
 ParagraphFormat = alt-p
 MatchBracket = alt-b
 ExternalCommand = alt-u

相关内容