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

rud*_*dib 6 keyboard-shortcuts input-method ibus

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

\n\n

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

\n\n

我尝试了这个方法Ctrl <Return> : "\\033M".XCompose),但它根本不起作用,因为 XCompose 文件没有被读取。所以我决定安装,ibus因为它没有随我的 KDE 安装一起提供dnf groupinstall input-methods

\n\n

运行\xc3\xacbus-setup现在给我这个警告:

\n\n
GTK+ supports to output one char only: "\\033M": ! Ctrl <Return> : "\\033M"\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n

小智 2

无需安装 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~")'
Run Code Online (Sandbox Code Playgroud)

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

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

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