Configuração, personalização, ajustes de plataforma e referências de API para Pi.

tmux Configuração

Pi funciona dentro de tmux, mas tmux remove informações do modificador de certas teclas por padrão. Sem configuração, Shift+Enter e Ctrl+Enter são geralmente indistinguíveis do Enter simples.

Configuração recomendada

Adicione a ~/.tmux.conf:

set -g extended-keys on
set -g extended-keys-format csi-u

Então reinicie tmux completamente:

tmux kill-server
tmux

Pi solicita relatórios de teclas estendidas automaticamente quando o protocolo de teclado Kitty não está disponível. Com extended-keys-format csi-u, tmux encaminha chaves modificadas no formato CSI-u, que é a configuração mais confiável. A opção extended-keys-format requer tmux 3.5 ou posterior.

Por que csi-u é recomendado

Com apenas:

set -g extended-keys on

tmux o padrão é extended-keys-format xterm. Quando um aplicativo solicita relatórios de chave estendidos, as chaves modificadas são encaminhadas no formato xterm modifyOtherKeys, como:

  • Ctrl+C\x1b[27;5;99~
  • Ctrl+D\x1b[27;5;100~
  • Ctrl+Enter\x1b[27;5;13~

Com extended-keys-format csi-u, as mesmas chaves são encaminhadas como:

  • Ctrl+C\x1b[99;5u
  • Ctrl+D\x1b[100;5u
  • Ctrl+Enter\x1b[13;5u

Pi suporta ambos os formatos, mas csi-u é a configuração tmux recomendada.

O que isso corrige

Sem as chaves estendidas tmux, as teclas Enter modificadas são reduzidas às sequências herdadas:

Chave Sem extkeys Com csi-u
Digitar \r \r
Shift + Enter \r \x1b[13;2u
Ctrl+Enter \r \x1b[13;5u
Alt/Opção+Enter \x1b\r \x1b[13;3u

Isso afeta os atalhos de teclado padrão (Enter para enviar, Shift+Enter para nova linha) e quaisquer atalhos de teclado personalizados usando Enter modificado.

Requisitos

  • tmux 3.5 ou posterior para extended-keys-format csi-u (execute tmux -V para verificar)
  • Um emulador de terminal que suporta chaves estendidas (Ghostty, Kitty, iTerm2, WezTerm, Windows Terminal)

Com tmux 3.2 a 3.4, omita extended-keys-format csi-u; Pi ainda suporta o formato xterm modifyOtherKeys padrão de tmux.