web-dev-qa-db-ja.com

一部の端末のterminfoをマップしてコンパイルする方法は?

Urxvtターミナルがあります。
以下を手動で設定すると、正常に機能します。

usr @ archlinux ~ : typeset -g -A key      
usr @ archlinux ~ : key[Home]="${terminfo[khome]}"
usr @ archlinux ~ : [[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line
usr @ archlinux ~ : echo ${terminfo[khome]}                                          
usr @ archlinux ~ : ^[[7~  # Ctrl-V, Home pressings

しかし、単純な端末 'st'では、(デフォルト)でコンパイルした後:

Makefile

tic -sx st.info

config.h

{ XK_Home,          ShiftMask,      "\033[2J",       0,   -1},
{ XK_Home,          ShiftMask,      "\033[1;2H",     0,   +1},
{ XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1},  
{ XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1},
{ XK_End,           ControlMask,    "\033[J",       -1,    0},
{ XK_End,           ControlMask,    "\033[1;5F",    +1,    0},
{ XK_End,           ShiftMask,      "\033[K",       -1,    0},
{ XK_End,           ShiftMask,      "\033[1;2F",    +1,    0},
{ XK_End,           XK_ANY_MOD,     "\033[4~",       0,    0},

st.info

home=\E[H,
khome=\E[1~,
kend=\E[4~,

キーを押した後、「〜」しかありません。

1
cname

stの terminfo ファイル( ncursesメーリングリスト に記載されている)が破損しており、使用しようとすると奇妙なことが起こります。

具体的には、このコミットにより、機能値が省略されて問題が発生しました。

commit 06f8cf8ca87a81db15816658c40b2afcd1ad5332
Author: [email protected] <[email protected]>
Date:   Fri Nov 11 17:45:46 2016 +0100

    Add tmux capabilities to st.info

Ncursesには 最新 端末の説明がありますが、これはst開発者が少し遅れています(3に登場します) 年)。

ncurses FAQ は、特定のエントリを抽出するための例を示しています)。

1
Thomas Dickey