Parar a rolagem quando a roda do mouse parar

0

Eu tenho um mouse com um botão que alterna o atrito na roda do mouse. Dessa forma, posso rolar muito rápido, se quiser.

No tmux, no entanto, quando uso o modo "sem atrito", ele continua rolando, mesmo que eu pare a roda do mouse. Eu suponho que isso aconteça porque o tmux conta todos os eventos chave e, em seguida, apenas rola várias linhas ignorando se o próprio mouse ainda está rolando ou não. No entanto, isso só acontece com vários painéis horizontais e apenas no painel à esquerda.

Existe uma maneira de informar ao tmux para parar a rolagem quando a roda do mouse parar. Ou parar de rolar quando a roda do mouse é girada na outra direção?

Atualmente estou usando o tmux 2.2 no xfce4-terminal 0.6.3-3 Esse comportamento não ocorre no xterm ou no urxvt.

xev output:

rolando para cima:

ButtonPress event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335774900, (128,158), root:(2049,204),
    state 0x10, button 4, same_screen YES

ButtonRelease event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335774900, (128,158), root:(2049,204),
    state 0x810, button 4, same_screen YES

Rolando para baixo:

ButtonPress event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335776189, (128,158), root:(2049,204),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335776189, (128,158), root:(2049,204),
    state 0x1010, button 5, same_screen YES

Os eventos são os mesmos com e sem o modo "sem fricção"

    
por Patrick Ziegler 10.07.2016 / 13:53

1 resposta

2

A rolagem suave / sem atrito / inercial não é suportada pela atual tmux , principalmente por motivos além de seu controle.

tmux recebe sua entrada do mouse por meio de sequências de controle de terminal, portanto, ela é limitada pelo que o terminal fornece. Uma referência popular para seqüências de terminal é console_codes (4) , mas isso não menciona a roda do mouse em tudo. No entanto, seqüências de controle XTerm define algumas seqüências básicas de roda, então xterm-compatível terminais também apoiará esses.

Por enquanto, tmux da manipulação da roda do mouse espera apenas esses dois eventos de botão simples: " roda para cima "e" roda para baixo ". Ele também rejeita eventos de liberação da roda (deliberadamente).

É possível que futuros emuladores de terminal possam introduzir mais seqüências de escape, como eventos de roda que incluem um tamanho de rolagem. Se isso acontecer (ou se já houver um por aí), então tmux também precisaria ser atualizado para reconhecer essas sequências e tratá-las apropriadamente.

    
por 13.07.2016 / 11:37