如何在gnu屏幕中绑定多个键,特别是使用箭头键

时间:2015-05-02 19:13:32

标签: linux terminal ncurses gnu-screen terminfo

首先,我使用的是Opensuse 13.2 64位和Arch_Linux 64位 无法使绑定适用于其中任何一个(好吧,我想要的绑定),但我主要关注Arch_Linux。另外,使用openbox wm,xfce4-terminal。 (在使用konsole和gnome 3的opensuse中)我的$ TERM在我的〜/ .bashrc中设置为xterm-256color,并在opensuse中使用屏幕时切换到screen-256color,但奇怪的是在Arch中没有改变。

我希望将C-a向下绑定:向下聚焦,向上聚焦:向上聚焦,向左聚焦,向左聚焦等等。让我们只关注焦点。 我已经尝试了〜/ .screenrc文件中的所有内容

bind "\E[B" focus down
bind "\EOB" focus down
bind "^[[B" focus down
bind "^[OB" focus down
bind "\033[B" focus down
bind "\033OB" focus down
bind "\033\133\102" focus down

bind j focus down # works fine

没有捕获向下箭头键。我可以使用以下

bind -k kd focus down

但是,我还想使用箭头绑定多个键,而AFAIK -k选项只允许绑定1个键(或shift + left / right)。实际上我很幸运,我甚至可以使用-k选项,因为它没有记录。

现在我使用infocmp检查了我的kd(termcap)和kcud1(terminfo)

infocmp -1 | grep kcud1
    kcud1=\EOB,
infocmp -1C | grep kd
    :kd=\EOB:\

和BTW这些符号可以查找here for termcaphere for terminfo and its termcap equivelancies(实际上我猜你可以使用:man terminfo)

当我使用Ctrl-v并按下箭头时我得到

 ^[[B

 showkey -a
 ^[[B    27 0033 0x1b
         91 0133 0x5b
         66 0102 0x42

任何人都知道怎么做。我想知道为什么我不能在没有-k termcap_name的情况下使用bind和/或如何使用键组合(例如ctrl / alt)和termcap名称。感谢所有和任何信息。

我尝试过设置termcapinfo也没有运气。不要以为我正确使用它。

termcapinfo * kd=\EOB
bind "\EOB" focus down

termcapinfo * kd=\E[B
bind "\E[B" focus down
etc...

2 个答案:

答案 0 :(得分:0)

似乎GNU屏幕不允许多个键的绑定序列。

引用手册页:

  

bind [-c class] key [command [args]]

     

将命令绑定到键。
  ...
  关键论点是单一的   字符,形式为“^ x”的两个字符的序列(含义   “C-x”),反斜杠后跟一个八进制数字(指定   字符的ASCII码,或反斜杠后跟a   第二个字符,例如“\ ^”或“\”。争论也可以   如果你愿意,可以引用   ...

答案 1 :(得分:0)

in this answer所述,尝试:

bindkey "^A^[OB" focus down

vim技巧对获取所需组合的代码确实很有帮助(例如,如果您想要组合 Ctrl a Ctrl down ,而不是 Ctrl a down < / kbd>,它将是^[[1;5B而不是^[OB)。

原始答案应归功于koyae