Por que o Byobu irá apenas dividir em abas utilizando um terminal, e não fará o mesmo em um console / tty?

3

Eu usei o Byobu um pouco e notei algo estranho: eu posso dividir o Byobu em abas normalmente quando estou usando um emulador de terminal, mas quando estou em um console ou tty, pressionando Shift + F2 apenas entra com um til ( ~ ) e Ctrl + F2 não tem efeito.

Esta é uma limitação técnica? Se sim, como funciona?

    
por fouric 23.02.2013 / 06:52

2 respostas

3

Essa é uma ótima pergunta!

Infelizmente, o console real TTY no Linux não é um verdadeiro Xterm , que é capaz de capturar e suportar muito mais pressionamentos de teclas.

Há muito tempo suspeito que o Linux TTY poderia ser ensinado a suportar as teclas Shift-F, embora eu nunca tenha conseguido tentar. Desculpe.

    
por Dustin Kirkland 24.02.2013 / 21:52
1

Um pouco de fundo:

Historicamente, tem havido muitos "tipos de terminal" (um "terminal" é um teclado e display de texto - o xterm é um tipo de terminal, assim como o console), todos com chaves diferentes. Se você olhar para o seu teclado agora, provavelmente tem uma "tecla do Windows", à esquerda da barra de espaço. Macs não têm estes, eles podem ter uma "chave da Apple" (google, se você quiser ver isso). Alguns teclados tinham uma tecla "Del" onde o backspace está na maioria dos teclados modernos. Em alguns tipos de terminal (por exemplo, teleimpressores - essencialmente ele usava uma impressora como tela), você não podia "excluir" um caractere. Ele tinha teclas de função? quantos? Qual personagem faria o cursor voltar um caractere? O caractere "retorno de carro" foi movido para o início da linha atual ou para a próxima linha? Como personagens de largura foi a tela? Você pode "exibir" cores de texto? Como você muda de cor?

Para tornar o Unix / Linux o mais utilizável possível, em tantos terminais quanto possível, existem arquivos que descrevem o que cada terminal é capaz e quais teclas devem executar quais funções (por exemplo, quando você pressiona a tecla "Del", pode funcionar como "Del", ou pode funcionar como "Backspace"). Esses arquivos (no Linux) podem ser encontrados em / usr / sare / terminfo. Qual deles é realmente usado é decidido pela variável de ambiente "TERM". se você "ecoa $ TERM", você pode ver o que acha que tem.

Se a definição do terminal não disser que você possui chaves particulares, então não há como os programas receberem essas chaves.

xterm, gnome-terminal usa o tipo de terminal 'xterm', que suporta coisas como teclas de função; o console usa (por padrão) o tipo de terminal "linux", que não acredita ter essas chaves. Como o tipo de terminal descreve como dizer que a tecla foi pressionada (e diz ao programa de recepção como ouvi-la, então o byobu não pode recebê-los e, portanto, não pode atuar neles.

Então, isso é "por que". Agora a solução. Existem 3, tanto quanto eu posso ver (em "mais conveniente a ordem menos conveniente"):

  1. Defina um tipo de terminal diferente, compatível com o terminal real, mas com mais recursos. NOTA: isto tem que ser feito ANTES de executar o byobu, não dentro dele. Minha instalação tem mais de 1.600 tipos de terminal, e se você configurá-lo para o errado, você pode não ser capaz de digitar, pressionar enter ou algo parecido. E configurá-lo para outra coisa não necessariamente lhe dá essa funcionalidade - Por exemplo, se você estiver no console e definir o tipo de terminal como "xterm", isso não lhe dá a capacidade de redimensionar o console com o seu mouse, nem vai defini-lo para "dec" dar-lhe uma chave "setup". No entanto, a maioria dos tipos de terminal são praticamente os mesmos - 'a' ainda será 'a'. Você pode ver personagens de lixo, mas geralmente não. Eu descobri que "TERM = linux-vt" parece funcionar muito bem. Todas as teclas que tentei funcionaram bem, exceto as teclas Alt-Function e Alt-direction. Observe que as teclas Alt-Function e Alt-direction são tratadas diretamente pelo console para alternar entre terminais virtuais.

  2. Use combinações de teclas alternativas. Todas as atalhos de teclado (que eu saiba) que não são acessíveis a partir do console, possuem atalhos de teclado alternativos. Por exemplo, na instalação padrão, Control-A seguido por% will fará uma divisão horizontal, e Control-A seguido por um pipe vertical ("|") fará uma divisão vertical. Controle-A seguido por um ponto de interrogação mostrará as combinações de teclas. Eu acho que leva um tempo para entender o que você está lendo, mas o principal é o "-T" (root significa que ele está sempre disponível, prefixo significa que você tem que pressionar Control-A primeiro. Se você "bind-key -T" root um "para algo, você não será capaz de digitar 'a' mais!). A próxima coluna (imediatamente após a tabela de chaves) é a chave. A última coluna é o que é executado. Então se ele disser "bind-key -T prefixo% split-window -h" então se você pressionar o "prefixo" (controle-A) seguido por '%', ele irá dividir a janela (horizontalmente).

  3. Você pode executar essas coisas a partir da linha de comando (geralmente isso só faz sentido dentro do byobu), se você souber o que o byobu chama (e quais opções). Convenientemente, esta é a última coluna da página de atalhos de teclado. Basta colocar 'byobu' na frente dele para fazer isso a partir da linha de comando. Por exemplo, a página de atalhos de teclado mostra "bind-key -T prefixo% split-window -h", portanto, posso fazer o mesmo executando o seguinte comando (do bash ou similar) diretamente de dentro do byobu: "byobu split-window -h ".

por AMADANON Inc. 01.10.2017 / 05:30

Tags