Se você visualizar uma página de manual diretamente na terminologia, ocorrerá o seguinte:
less
(o pager manual) alterna o terminal para a chamada tela alternativa, aquela que não tem um buffer de rolagem e a partir da qual, quando você sai do aplicativo, você retorna ao conteúdo anterior. terminal. Esse modo é normalmente usado por aplicativos de tela inteira (visualizadores, editores, gerenciadores de arquivos, etc.).
less
não é capaz de manipular o mouse, e terminology
está perfeitamente ciente de que o aplicativo em execução não está interessado em eventos de mouse.
Quando terminology
(na verdade, a maioria dos emuladores de terminal) percebe que essas duas condições são atendidas (ou seja, tela alternativa, sem interesse no mouse), ele converte eventos de rolagem em pressionamentos de teclas para cima e para baixo. Portanto, less
não vê nenhum evento de mouse, ele só vê pressionamentos de tecla.
Agora vamos colocar tmux
entre eles.
tmux
está em um lado apenas um aplicativo em execução no seu terminal. Dependendo de sua configuração, pode ou não solicitar eventos de mouse; Eu suponho que você tenha ativado, já que é o padrão. Não é necessário que os aplicativos executados em seu interior tenham qualquer suporte ao mouse. tmux
também muda para tela alternativa.
tmux
, na outra ponta, é em si um emulador de terminal, assim como terminology
. Ele rastreia (para cada janela / painel) se o aplicativo em execução está interessado no mouse e se o aplicativo alternou para a tela alternativa. Esses estados não são refletidos em relação a terminology
, é o negócio privado de tmux
.
terminology
em pressionamentos de teclas up / down para less
em execução, pois tmux
está perfeitamente ciente de que o aplicativo rodando dentro está usando a tela alternativa e não está interessado em eventos de mouse.
Este é provavelmente um recurso que está faltando em tmux
e eu recomendo que você registre uma solicitação de recurso contra eles.
Vamos tornar mais complicado se você estiver interessado em detalhes suculentos. Vamos tirar tmux
por enquanto.
Há um pequeno problema aqui para observar. Com o mouse tradicional, a roda de rolagem geralmente gera mais de um pressionamento de tecla, talvez em torno de 3 a 5, porque, caso contrário, a rolagem seria muito lenta. Touchpads são capazes de reportar coordenadas muito mais suaves, alguns emuladores de terminal (incluindo terminology
) reconhecem estes e, portanto, reportam teclas para cima / baixo um por um (digamos um único pressionamento de tecla após cada 1/3 de unidade de rolagem, unidade significando o roda do mouse faria de uma só vez). (Eu não tenho um mouse agora, então não posso verificar que terminology
com um mouse realmente salta por várias linhas, mas eu suponho que sim.)
O relatório de vários pressionamentos de tecla ao mesmo tempo não faz sentido em algumas circunstâncias, por exemplo, no prompt de busca de less
ele volta por talvez 3 entradas da história de uma vez, é totalmente inútil e é uma boa demonstração de que isso é de fato o que está acontecendo nos bastidores. Com um emulador de terminal como terminology
mais um touchpad, isso não é um problema se um aplicativo não se importar com o mouse, para que você possa rolar linha por linha, por exemplo, %código%. No entanto, se o aplicativo se importar com o mouse, você voltará à experiência de rolagem brusca porque o protocolo do mouse dentro dos terminais não pode reportar granularidade fina, apenas a unidade de rolagem do mouse antiga. Por exemplo. em less
você não pode rolar suavemente, apenas por várias linhas por vez.
Vamos colocar mcview
de volta no jogo. É um aplicativo que reconhece o mouse na tela alternativa, assim como tmux
, por isso só pode receber eventos de rolagem do mouse de unidades grandes antiquadas. Ele deve presumivelmente enviar vários pressionamentos de teclas de uma vez, assim como os emuladores de terminal reais fazem em rolagens de mouse antigas, caso contrário, a rolagem seria insuportavelmente lenta. Portanto, mesmo que mcview
desenvolvedores prossigam e implementem esse recurso, você perderá a suavidade da rolagem.
Eu abri o bug link para trabalhar na melhoria disso, mas nenhum trabalho real foi feito até agora.