Alterar a velocidade de rolagem com libinput

16

Minha roda do mouse rola muito devagar, por isso quero aumentar o número de linhas para cada "marca" de rolagem. Eu li que isso é possível configurando o Evdev Scrolling Distancewith xinput, no entanto, estou usando libinpute não vejo nada relacionado à distância de rolagem.

Saída do xinput list-propsmeu mouse:

Device Enabled (139):   1                                                                                                       
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (275): -0.640000                                                                                           
libinput Accel Speed Default (276): 0.000000                                                                                    
libinput Accel Profiles Available (277):    1, 1                                                                                
libinput Accel Profile Enabled (278):   1, 0                                                                                    
libinput Accel Profile Enabled Default (279):   1, 0                                                                            
libinput Natural Scrolling Enabled (280):   0                                                                                   
libinput Natural Scrolling Enabled Default (281):   0                                                                           
libinput Send Events Modes Available (259): 1, 0                                                                                
libinput Send Events Mode Enabled (260):    0, 0                                                                                
libinput Send Events Mode Enabled Default (261):    0, 0                                                                        
libinput Left Handed Enabled (282): 0                                                                                           
libinput Left Handed Enabled Default (283): 0                                                                                   
libinput Scroll Methods Available (284):    0, 0, 1                                                                             
libinput Scroll Method Enabled (285):   0, 0, 0                                                                                 
libinput Scroll Method Enabled Default (286):   0, 0, 0                                                                         
libinput Button Scrolling Button (287): 2                                                                                       
libinput Button Scrolling Button Default (288): 274                                                                             
libinput Middle Emulation Enabled (289):    0                                                                                   
libinput Middle Emulation Enabled Default (290):    0                                                                           
Device Node (262):  "/dev/input/event1"                                                                                         
Device Product ID (263):    1133, 50487                                                                                         
libinput Drag Lock Buttons (291):   <no items>                                                                                  
libinput Horizonal Scroll Enabled (264):    1                                                  

Como posso alterar minha velocidade de rolagem? Estou executando no Arch Linux, Xfce 4.12.

Andrew Sun
fonte
1
Agora há uma solicitação de recurso para a libinput implementar isso (cortesia de @clel ).
N

Respostas:

4

Não existe uma API atual para alterar a velocidade de rolagem dos dispositivos libinput, mas este blog explica como os cliques na roda do mouse correspondem a um ângulo de movimento que você pode alterar por mouse no arquivo de configuração udev do systemd /usr/lib/udev/hwdb.d/70-mouse.hwdb. Leia os comentários sobre MOUSE_WHEEL_CLICK_ANGLEno início deste arquivo.

Para fazer uma alteração local, crie um novo arquivo

 /etc/udev/hwdb.d/71-mouse-local.hwdb

e adicione sua regra de substituição. Por exemplo, se você tiver o mouse ImExPS / 2, poderá dobrar os 15 graus padrão por clique para 30 graus com

# ImExPS/2 Logitech Wheel Mouse
mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse:
 MOUSE_DPI=400@250
 MOUSE_WHEEL_CLICK_ANGLE=30

Recarregar o banco de dados udev

 sudo udevadm hwdb --update
 sudo udevadm trigger /dev/input/event1
meuh
fonte
1
There is no current api for changing the scroll speed for libinput devices: isso mudou desde então?
orschiro
1
@orschiro Tenho a impressão de que uma API não é a intenção. A esperança seria que todos os dispositivos fossem identificados e configurados corretamente no udev e, portanto, não seria necessário configurar o usuário. Confira todos os blogs da libinput . Em particular, 1.4 corresponde ao final da lista TODO inicial para libinput.
meuh
4
no Ubuntu 16.10, o sistema udev conf está em /lib/udev/hwdb.d/70-mouse.hwdb
Jonas Berlin
2
mesmo assim, fazer o mesmo com um touchpad?
Francesco
1
@daboross Sim. Há dois aspectos a serem considerados: a resposta acima está apenas tentando normalizar a saída de um dispositivo para que, quando um usuário faça a mesma quantidade de movimento em 2 mouses diferentes, por exemplo, o sistema possa calcular se são equivalentes, apesar dos relatórios do hardware ser diferente. O segundo aspecto é, então, quanto movimento de tela isso deve representar e é determinado pela quantidade complexa de software que o usuário enfrenta, como o kit de ferramentas gráficas, o sistema de janelas, o dpi da tela e assim por diante.
meuh 16/09/18
3

O Libinput não possui nenhum tipo de conceito "para todas as rodas, faça n linhas / graus" como uma parte comum, a configuração parece ser específica do dispositivo no momento, já que alguns Logitech têm o parâmetro Evdev Scrolling Distance (278)que possivelmente veio com o "antigo" O driver Evdev inclui.

Isso será considerado uma regressão para a experiência do usuário, na minha opinião, onde, a princípio, a inclusão de uma sensibilidade configurável de rolagem do mouse no kit de ferramentas comum (libinput) foi recusada, agora faz parte de uma solicitação de recebimento para versões futuras - possivelmente as chamadas de função terão que ser implementadas em todos os ambientes de desktop.

Há muitas possibilidades para corrigir esse problema, mas depende da distribuição do Linux.

  1. Tenha sorte e tenha sensibilidade de rolagem específica do driver - verifique pesquisando todas as entradas com variáveis ​​de rolagem:

    lista xinput | corte -f2 | cut -f2 -d '=' | \
                xargs -d $ '\ n' -I '{}' sh -c "lista-adereços xinput '{}' | grep -iq scroll && \
                                        (echo Listando o ID do desenvolvedor '{}'; xinput list-props '{}') "
    e definindo a variável específica por , onde pode ser o nome do dispositivo e o nome da configuração.xinput --set-prop <ID> <SUB-ID> <values><ID><SUB-ID>

  2. Uma correção geral é repatching o código libinput e reconstrução .

  3. Você pode tentar reverter para interfaces udevadm / evdev com o X11 e, em seguida, tentar a variável MOUSE_WHEEL_CLICK_ANGLE do X11 .

  4. A partir da referência do último item , é possível usar imwheelpara emular cliques de rolagem do mouse no valor multiplicado.

    # Should use imwheel --kill --buttons "4 5" to restart imwheel,
    # if the mouse has back/forward buttons, otherwhise imwheel --kill is enough.
    # imwheel must be set to autostart in your DE tools.
    #Edit ~/.imwheelrc to include, where '3' is a multiplier
    ".*"
    None,      Up,   Button4, 3
    None,      Down, Button5, 3
    Control_L, Up,   Control_L|Button4
    Control_L, Down, Control_L|Button5
    Shift_L,   Up,   Shift_L|Button4
    Shift_L,   Down, Shift_L|Button5
    
  5. Existem configurações específicas de aplicativos para a sensibilidade da roda do mouse, como Chrome SmoothScroll e Firefox SmoothWheel ref .

Mateus Matucuma Teixeira
fonte
A transição do Libinput tem sido uma regressão de UX de várias maneiras, quase todas relacionadas ao controle do usuário sobre o comportamento de seu hardware ... O que é lamentável, dada a plataforma em que está ocorrendo.
Douglas Gaskell