Configuração avançada de rolagem inercial

9

É possível configurar a rolagem inercial sináptico de maneira que ela seja interrompida quando alguma tecla é pressionada no teclado?

Para explicar essa pergunta: eu geralmente uso atalhos. Agora, quando estou, por exemplo, navegando na Web e rolando de volta ao topo de um site usando rolagem inercial, eu zoom o site como um louco se eu tentar abrir uma nova aba com Ctrl + T porque o navegador detecta apenas Ctrl + rolando .

Isso acontece em muitos aplicativos e é realmente irritante. Eu costumava gostar de rolagem inercial, mas enquanto esse problema persistir, tenho que desativá-lo.

    
por Mouagip 14.05.2014 / 21:37

3 respostas

5

Eu temo que isso já tenha sido discutido no Xorg e esteja marcado como "Resolvido Fixo", mas não será consertado, pois o Xorg não irá perceber quando você pressionar Ctrl e a rolagem inercial ainda estiver no lugar. (Veja comentário de Peter Hutterer e sua analogia com Ctrl ).

Assim, pelo menos até que tenhamos o Unity 8 (quando o Xorg for substituído pelo Mir e esperamos ver isso como realmente resolvido), só podemos ter uma solução alternativa em vez de uma correção perfeita ou desabilitar completamente a rolagem inercial.

Uma das correções que eu recomendaria é desativar o recurso Ctrl + rolagem no próprio aplicativo. Essa certeza é uma solução impura, já que o problema ainda está em vigor, mas somente o efeito é removido e você teria que fazer isso para qualquer aplicativo que você usa com mais frequência de rolagem inercial.

Para desabilitar o recurso Ctrl + rolagem no Firefox, digite about:config na barra de endereço e clique em "Eu terei cuidado, prometo!" Agora, na barra de pesquisa, digite mousewheel.with_control.action e clique duas vezes no primeiro resultado e defina seu valor como 1 , que rolaria o conteúdo apenas em vez do zoom. Você pode definir seu valor para os seguintes valores com os efeitos correspondentes:

  • 0 (desativado)
  • 1 (conteúdo de rolagem)
  • 2 (volte / avance no seu histórico)
  • 3 (padrão, zoom in / out)

Vou atualizar a resposta se conseguir encontrar uma solução melhor e mais limpa.

    
por jobin 19.05.2014 / 10:52
2

O encurvamento de cantos ajuda! Embora não seja uma correção real, descobri que usar o modo CornerCoasting do driver Synaptics em vez do modo de rolagem inercial normal (sem dedos) ajuda. Razão: o modo de encurralamento de canto está ativo enquanto mantém o dedo no canto e para imediatamente ao liberá-lo. Enquanto pressiona Ctrl durante o encurralamento de canto ainda cria o problema de "loucura do zoom do Firefox" que você descreve, descobri que é muito improvável fazer isso enquanto estou ativamente envolvido em uma ação (com o dedo no touchpad em vez de usar a costa).

Tentando navegar pelos cantos. O comando a seguir irá configurar o modo de navegação por canto:

synclient VertEdgeScroll=1 CornerCoasting=1 CoastingSpeed=1 CoastingFriction=0

VertEdgeScroll=1 é porque o encurvamento de cantos só funciona com a rolagem de borda, não com a rolagem de dois dedos. Se você gosta de bordas de canto nas bordas direita e inferior, adicione HorizEdgeScroll=1 à linha acima. CornerCoasting=1 ativa o modo de encurralamento de canto. CoastingSpeed é a velocidade mínima de rolagem durante o deslocamento, mas essa também parece ser a velocidade mínima do cursor para ativá-lo. Então eu configurei o mínimo para facilitar a ativação do modo, o que pode ser complicado (e impossível com algo como CoastingSpeed=100 ). CoastingFriction é um valor para deixar a rolagem inercial desaparecer. Nós o desabilitamos aqui para mantê-lo funcionando até que você levante o dedo, diferente do que é normalmente desejado na desaceleração convencional. Para obter mais detalhes sobre essas opções, consulte a página de manual do Synaptics .

Algo não mencionado na página de manual: o encurvamento de cantos aparentemente é ativado deslizando de uma área de borda não de canto para uma área de canto e, em seguida, mantendo o dedo lá . Assim, o movimento de encurralamento de cantos pára se você acidentalmente levantar o dedo, por um tempo muito curto, batendo na borda do touchpad. O modo de disparo "mover-se para uma área de canto" também significa que a inércia de canto não funcionará ou será difícil disparar se os parâmetros TopEdge e BottomEdge deixarem pouca ou nenhuma área sem canto na borda. Estes são relevantes aqui, pois as áreas de canto são definidas pelas interseções das áreas de borda. Além disso, sem uma área de borda direita de tamanho acessível, o desencadeamento de encostas de canto também será difícil de ser impossível. Para o meu hardware (ThinkPad X201), descobri que esses valores funcionam bem (o seu pode ser diferente, é preciso fazer algumas experiências):

synclient RightEdge=4800 TopEdge=2000 BottomEdge=4000

Criando bastões de canto. Embora synclient seja ótimo para testar as configurações com efeito imediato, elas são perdidas ao reiniciar o X. Para mantê-las, crie uma /etc/X11/xorg.conf.d/51-synaptics-cornercoasting.conf ou uma configuração semelhante arquivo como descrito aqui (também funciona no Ubuntu!). Para o caso acima, o conteúdo seria:

Section "InputClass"
    Identifier "Touchpad tweaks"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "VertEdgeScroll" "on"
      # Option "HorizEdgeScroll" "on" # Enable if you want this.
        Option "CornerCoasting" "on"
        Option "CoastingSpeed" "1"
        Option "CoastingFriction" "0"

        Option "RightEdge" "4800"
        Option "TopEdge" "2000"
        Option "BottomEdge" "4000"
EndSection

E, em seguida, reinicie o X para ver o efeito, é claro.

    
por tanius 25.02.2015 / 03:56
0

Possíveis substitutos. Se você quiser desabilitar a rolagem inercial porque o bug é muito chato, existem alguns substitutos possíveis (não exatamente rolagem inercial, mas sim modos de rolagem sem esforço que podem ser usados ):

Em todo o sistema:

  • Rolagem sensível no ponto de controle Trackpoint. Isso usa um trackpoint ThinkPad (mas pode ser modificado para outros trackpoints) para rolar enquanto o botão middlemouse é pressionado. Isso é chamado de " Rolagem no botão " no driver libinput e " emulação de mousewheel "no driver evdev mais antigo.

    A ideia é que você a defina de forma tão sensível que um pouquinho de pressão constante percorra rapidamente as páginas longas. Para configurar isto, por favor consulte esta questão , esp. a resposta de @htorque que funciona melhor com o driver libinput (o padrão do Ubuntu 17.10).

Especificamente para o Firefox:

  • Extensão de arrastar e arrastar . Isso fornece uma espécie de modo de arremesso inercial inercial / inercial, bastante semelhante à rolagem inercial de dois dedos. Configure-o para usar o botão esquerdo do mouse, que é o modo mais similar para a rolagem inerte de dois dedos em um touchpad. Basta usar um dedo com toque e segure e, em seguida, "jogar a página da Web". Isso interfere na seleção do texto, mas eles têm um botão para desativar a extensão temporariamente.

    A interferência da seleção de texto é irritante, mas configurá-la para qualquer outro botão do mouse em um touchpad torna o uso muito complicado. (Por exemplo, com o clique do meio, que pode ser configurado com o clique de dois dedos no touchpad, seria: toque com dois dedos, bata e segure com dois dedos, levante um dedo e, em seguida, lance o movimento como acima: D).

  • Autoscrolling. Veja esta resposta para saber como configurá-lo. Além disso, configure o toque com dois dedos para criar um clique do meio - apenas synclient TapButton2=2 . Agora, um clique com dois dedos abrirá o elemento autoscroll no Firefox e colocar o ponteiro do mouse longe dele rolará permanentemente nessa direção até um clique. Infelizmente, mover o ponteiro tem que ser feito com um dedo. (Ele simplesmente não funciona com dois dedos, mesmo quando a rolagem de dois dedos está desativada.) E eu não consegui descobrir como inverter a direção de rolagem desse recurso para ser "natural".

por tanius 25.02.2015 / 05:35