【问题标题】:How to bind multiple keys in gnu screen, specifically using arrow keys如何在gnu屏幕中绑定多个键,特别是使用箭头键
【发布时间】:2015-05-02 19:13:32
【问题描述】:

首先,我使用的是 Opensuse 13.2 64 位和 Arch_Linux 64 位 无法让绑定对它们中的任何一个起作用(嗯,我想要的绑定),但我主要关注 Arch_Linux。另外,使用 openbox wm、xfce4-terminal。 (在使用 konsole 和 gnome 3 的 opensuse 中)并且我的 $TERM 在我的 ~/.bashrc 中设置为 xterm-256color,并且在 opensuse 中使用 screen 时切换为 screen-256color,但奇怪的是在 Arch 中没有更改。

我想绑定 C-a down: to focus down, C-a up: to focus up, C-a left: to focus left etc.. 让我们现在只关注焦点向下。 我已经尝试了 ~/.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 + 左/右)。实际上我很幸运我什至可以使用 -k 选项,因为它没有记录。

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

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

顺便说一句,这些符号可以查到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...

【问题讨论】:

    标签: linux terminal ncurses gnu-screen terminfo


    【解决方案1】:

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

    引用手册页:

    绑定[-c类]键[命令[args]]

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

    【讨论】:

    • 我认为你错过了一些东西......“形式为“^x”(意思是“C-x”)的两个字符序列。但我的问题集中在绑定到绑定到光标键向下,这是一个键。我的下一步是让它绑定到 C-Down。谢谢
    • Cursor key down 是一个 key,但它发送多个字符(两个以上)。所以你不能做你要求的。
    【解决方案2】:

    in this answer所说,试试:

    bindkey "^A^[OB" focus down

    vim 技巧对于获取所需组合的代码非常有帮助(例如,如果您想要组合 Ctrla Ctrldown 而不是 Ctrla down,这将是 ^[[1;5B 而不是 ^[OB)。

    原始答案应转至koyae

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多