Ctrl-Enter、Shift-Enter 和 Enter 被解释为相同的键

Ctrl-Enter、Shift-Enter 和 Enter 被解释为相同的键

我正在将 Fedora 30 与 KDE 结合使用,并尝试将 (Zsh) 绑定autosuggest-executeCtrl+Enter以方便使用。我正在努力让它在gnome-terminal.

然而我发现在这三种情况下showkey -a总是返回: 、+和+ 。^MEnterCtrlEnterShiftEnter

我试过这个方法Ctrl <Return> : "\033M".XCompose)中,但它根本不起作用,因为 XCompose 文件没有被读取。所以我决定ibus按原样安装我的 KDE 安装没有附带dnf groupinstall input-methods

运行ìbus-setup现在给我这个警告:

GTK+ supports to output one char only: "\033M": ! Ctrl <Return> : "\033M"

不幸的是,所有输入组合仍然归结为^Mingnome-terminal以及xterm

有没有办法区分有或没有 ibus 的这些组合键?

答案1

无需安装 ibus 等。所有 X11 应用程序都可以访问确切的密钥代码到他们的 xkb / xim 翻译,并且可能忽略后者。

问题出在终端模拟器中,而且事实上没有标准的方法来表示终端中的组合键,例如 Ctrl-Enter。此外,每个终端模拟器都有(或没有)自己的配置键绑定的方式。

在 中xterm,就像在任何基于 xt 的应用程序中一样,您可以使用 X11 资源轻松配置它。例如,这会将 Ctrl-Enter 转换为与F33功能键对应的转义符(根据infocmp):

xterm -xrm '*VT100*translations: #override Ctrl<Key>Return:string("\033[20;5~")'

然后你可以将其绑定\e[20;5~到 readline ~/.inputrc、 with bindin bash、 with bindkeyinzsh等中你想要的任何操作。

X11 资源作为根窗口的属性存储RESOURCE_MANAGER,并且可以使用xrdb实用程序加载到根窗口;通常,xrdb将从 x11 会话初始化脚本中调用以加载~/.Xresources文件的内容。

KDE 或 Gnome 应用程序喜欢konsolegnome-terminal有自己的方式来配置组合键的操作;我不知道这是否包括向伪 tty master 写入任意字符串的能力。

答案2

这是如何设置它的konsole

另请参阅Konsole 中按键绑定的 Kde 参考

设置 -> 编辑当前配置文件 -> 键盘 -> (选择使用的键盘布局) -> 编辑 -> 搜索/过滤Return.

编辑以下条目(仅限左列):

  • 改成Return-Shift-NewLineReturn-Shift-Ctrl-NewLine
  • 改成Return-Shift+NewLineReturn-Shift-Ctrl+NewLine

这允许区分EnterCtrl+ Enter

添加以下条目:

Return+Ctrl->\E[20;5~

现在只需添加bindkey '\e[20;5~' autosuggest-execute或任何其他接收器即可~/.zshrc

相关内容