Posso usar o Shift-Space em um atalho de teclado do tmux?

3

Estou usando (prefixado) o para ampliar o painel tmux atual e Space para ampliar o painel vizinho:

bind o      resize-pane -Z
bind Space  if-shell -F '#{window_zoomed_flag}' 'last-pane' 'select-pane -t :.+; resize-pane -Z'

Eu quero mudar isso para usar Space e Shift-Space .

bind Space    resize-pane -Z
bind S-Space  if-shell -F '#{window_zoomed_flag}' 'last-pane' 'select-pane -t :.+; resize-pane -Z'

Eu reiniciei meu servidor tmux e executei tmux list-keys . As novas ligações são listadas e a primeira ligação funciona conforme o esperado, mas estou tendo problemas para passar S-Space para o tmux para a segunda ligação.

Usando o iTerm (eu estou no OSX) com suas configurações padrão, ⇧Shift Espaço ignora o modificador ⇧Shift , então quando eu digite <prefix> S-Space , o tmux apenas recebe <prefix> Space .

Na verdade, eu configuro o iTerm para enviar a seqüência de escape ^[[32;2u para ⇧Shift Espaço para que eu possa usá-lo nos mapeamentos de teclas do Vim. Com essa configuração ativa, digitar <prefix> S-Space no tmux insere 32;2u na linha de comando.

Eu tentei depurar usando cat -v dentro do tmux:

^[[32;2u    # S-Space
32;2u       # <prefix> S-Space

Existe uma seqüência de escape diferente que o tmux reconheceria como S-Space , ou alguma outra maneira de fazê-lo funcionar?

Eu li um pouco sobre a configuração terminal-overrides do tmux, mas parece que é apenas para sequências de controle. Eu uso C-a como minha chave de prefixo, se for relevante.

    
por ivan 17.09.2016 / 18:32

1 resposta

1

curto: não

long: a menos que você tenha alterado o mapeamento do teclado, shift + espaço enviará apenas espaço .

Além de algumas outras teclas especiais ( Enter ), você pode esperar que shift modifique o (s) caractere (s) enviado (s) pelo teclado. Isto não é sempre o caso. A maioria dos que você está familiarizado é baseada em xterm , por exemplo, usando shift , controle e alt (ou meta ) para gerar diferentes seqüências de escape.

tmux "sabe" sobre as chaves xterm (e tem um modo que pode ser configurado para permitir o uso dessas chaves). Caso contrário (se xterm-keys não estiver definido), se a chave corresponder à descrição do terminal para uma das chaves especiais conhecidas (teclas de função e cursor e de edição, como Início e Fim ), tmux aceita essa chave (e a mapeia na screen ou qualquer descrição do terminal "interna" é usada).

Se a chave não estiver em uma dessas categorias, tmux a ignorará (descartará).

Então ... se você quiser usar shift espaço , você terá que fazê-lo enviar uma das seqüências de escape que tmux espera, e fazer o seu ligação com a capacidade pré-definida correspondente.

Leitura adicional:

por 17.09.2016 / 20:17