É improvável que o problema esteja relacionado a alguma diferença no modo de aplicação versus modo normal , porque xterm
envia a mesma sequência de caracteres para teclas de cursor deslocadas e não-deslocadas .
Uma pista para o problema é que os vários itens ctrl são todos recursos estendidos xterm
. tmux
usa algumas tabelas:
- um lista chaves especiais que provavelmente não serão encontradas em uma entrada de terminal
- as outras capacidades do terminal de listas que podem ser obtidas de uma entrada de banco de dados de terminal regular.
Para o último, essas linhas da tabela tmux
são relevantes:
{ TTYC_KDN2, TTYCODE_STRING, "kDN" },
{ TTYC_KDN3, TTYCODE_STRING, "kDN3" },
{ TTYC_KDN4, TTYCODE_STRING, "kDN4" },
{ TTYC_KDN5, TTYCODE_STRING, "kDN5" },
{ TTYC_KDN6, TTYCODE_STRING, "kDN6" },
{ TTYC_KDN7, TTYCODE_STRING, "kDN7" },
{ TTYC_KEND, TTYCODE_STRING, "kend" },
{ TTYC_KLFT2, TTYCODE_STRING, "kLFT" },
{ TTYC_KLFT3, TTYCODE_STRING, "kLFT3" },
{ TTYC_KLFT4, TTYCODE_STRING, "kLFT4" },
{ TTYC_KLFT5, TTYCODE_STRING, "kLFT5" },
{ TTYC_KLFT6, TTYCODE_STRING, "kLFT6" },
{ TTYC_KLFT7, TTYCODE_STRING, "kLFT7" },
{ TTYC_KRIT2, TTYCODE_STRING, "kRIT" },
{ TTYC_KRIT3, TTYCODE_STRING, "kRIT3" },
{ TTYC_KRIT4, TTYCODE_STRING, "kRIT4" },
{ TTYC_KRIT5, TTYCODE_STRING, "kRIT5" },
{ TTYC_KRIT6, TTYCODE_STRING, "kRIT6" },
{ TTYC_KRIT7, TTYCODE_STRING, "kRIT7" },
{ TTYC_KUP2, TTYCODE_STRING, "kUP" },
{ TTYC_KUP3, TTYCODE_STRING, "kUP3" },
{ TTYC_KUP4, TTYCODE_STRING, "kUP4" },
{ TTYC_KUP5, TTYCODE_STRING, "kUP5" },
{ TTYC_KUP6, TTYCODE_STRING, "kUP6" },
{ TTYC_KUP7, TTYCODE_STRING, "kUP7" },
{ TTYC_RI, TTYCODE_STRING, "ri" },
A maioria dessas linhas (em tty-term.c
) são xterm
extensões. As strings das chaves de cursor deslocadas podem ser fornecidas por "kUP"
, "kDN"
, "kLFT"
, "kRGT"
- bem como "kri"
e "kind"
.
Os dois últimos são problemáticos:
-
tmux
tem uma entrada de tabela para"ri"
(a cadeia enviada para o terminal) mas nenhuma para"kri"
e"kind"
(suas teclas de cursor para cima / baixo) - porque (n) curses
wgetch
verá apenas o primeiro recurso com um determinado valor na lista de strings, o banco de dados ncurses define apenas uma possibilidade. -
kUP
ekDN
são extensões, não capacidades padrão, então ncurses define"kri"
e"kind"
, que são padrão.
O problema não está na configuração, mas sim em um simples bug em tmux
, que pode ser corrigido adicionando entradas a essa tabela. Algo parecido com isto (não testado) é uma maneira de proceder:
{ TTYC_KUP2, TTYCODE_STRING, "kri" },
{ TTYC_KDN2, TTYCODE_STRING, "kind" },