Linux xfce4中终端中的自定义键绑定-这真的不可能吗?

Linux xfce4中终端中的自定义键绑定-这真的不可能吗?,linux,bash,xorg,xterm,Linux,Bash,Xorg,Xterm,您好,我想在xfce4终端或在xfce4 X环境下运行的任何终端中稍微更改密钥映射 特别是,我想让ctrl backspace和meta backspace删除最后一个单词,让ctrl delete和meta delete删除下一个单词 到目前为止的进展:我正在使用bash,bash使用readline库和bash内置函数“bind”将键序列映射到readline函数。我需要的函数是“shell kill word”和“shell backward kill word”。原则上,我应该可以这样做

您好,我想在xfce4终端或在xfce4 X环境下运行的任何终端中稍微更改密钥映射

特别是,我想让ctrl backspace和meta backspace删除最后一个单词,让ctrl delete和meta delete删除下一个单词

到目前为止的进展:我正在使用bash,bash使用readline库和bash内置函数“bind”将键序列映射到readline函数。我需要的函数是“shell kill word”和“shell backward kill word”。原则上,我应该可以这样做:

"\C-Rubout":shell-backward-kill-word
"\C-Delete":shell-kill-word
"\M-Rubout":shell-backward-kill-word
"\M-Delete":shell-kill-word
但是,xfce4终端仿真器或流程上游的某个组件(可能是窗口管理器、xfwm4、Xorg程序本身?)不配合。通常,元键被转换为转义字符,例如:

"\ey":shell-kill-word  <-- Meta + y kills next word
特别是,在xfce4终端中,不可能将\C-backspace绑定到shell backword kill-word,因为它发送与常规backspace完全相同的键码。而且不可能将\M-delete绑定到shell kill word,因为它根本不发送密钥码

不幸的是,我不是X窗口系统的专家。对Xorg生态系统有更多了解的人能为我指出正确的方向吗?也许有另一种终端仿真器可以更好地做到这一点?我正在运行一个当前的Debian发行版,它有xfce4窗口管理器和Xorg

我发现,在最新的Linux软件和典型的现代计算机设置下,几乎不可能实现这种行为。真的是这样吗

最后一条信息:在X窗口中运行emacs,可以正确获取除一个外的所有关键代码:

backspace:    <backspace>
delete:       <delete>
\C-backspace: <C-backspace>
\C-delete:    <C-delete>
\M-backspace: <M-backspace>
\M-delete:    nothing
退格:
删除:
\C-退格:
\C-删除:
\M退格:
\M-delete:没什么

好吧,我不得不放弃xfce4终端,因为键绑定是一场噩梦,而回到xterm。事实证明,我更喜欢有几个窗口而不是标签。下面是我为Xterbash的键绑定所做的


我唯一缺少的是元删除。。。你能做些什么。

没有时间详细说明,但要记住,终端非常陈旧,不损坏东西就很难更换。除了xterm中较新的支持外,在传统系统中,有大量的击键不能表示为转义码。更复杂的是xterm中的元转义设置和8位清洁度设置。@EtanReisner感谢您的输入。我并不是一个真正的专家,不能发表更多的评论(而且我还没有找到解决办法)。在我看来,当一个操作系统的输入设备无法映射到该操作系统时,似乎有什么地方出了问题。有人花了相当多的时间在一个最广泛使用的Linux窗口系统/硬件组合上仔细地映射出一个常见问题,并在上面寻找解决方案,因此他的努力受到了否决票?这让我很沮丧。我能想到的最好的结果是,否决票是针对离题的(因为它有点离题),但我不知道。啊,好吧。我在unix.stackexchange上发了帖子,但没有在那里找到sln。如果有足够多的人认为这是离题的,那我也没问题。否决票的作用不大。
backspace:    <backspace>
delete:       <delete>
\C-backspace: <C-backspace>
\C-delete:    <C-delete>
\M-backspace: <M-backspace>
\M-delete:    nothing
# ctrl-backspace
"\C-h":shell-backward-kill-word

# meta-backspace
"ÿ":shell-backward-kill-word

# ctrl-delete
"\e[3;5~":shell-kill-word

# meta-delete
#  not detected

# ctrl-right-arrow
"\e[1;5C":shell-forward-word

# ctrl-left-arrow
"\e[1;5D":shell-backward-word

# meta-right-arrow
"\e[1;3C":forward-word

# meta-left-arrow
"\e[1;3D":shell-backward-word