Cambia la velocità di scorrimento con libinput


16

La mia rotellina del mouse scorre troppo lentamente, quindi voglio aumentare il numero di righe per ogni "tick" di scorrimento. Ho letto che questo è possibile impostando il Evdev Scrolling Distanceconxinput , tuttavia, sto usando libinpute non vedo nulla di correlato alla distanza di scorrimento.

Uscita del xinput list-propsmio 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                                                  

Come posso modificare la mia velocità di scorrimento? Sono in esecuzione su Arch Linux, Xfce 4.12.


1
Ora c'è una richiesta di funzionalità per libinput per implementarlo (per gentile concessione di @clel ).
n.

Risposte:


4

Non ci sono API attuali per modificare la velocità di scorrimento per i dispositivi libinput, ma questo blog spiega come i clic della rotellina del mouse corrispondono a un angolo di movimento che è possibile modificare per mouse nel file di configurazione udev di systemd /usr/lib/udev/hwdb.d/70-mouse.hwdb. Leggi i commenti suMOUSE_WHEEL_CLICK_ANGLE all'inizio di questo file.

Per apportare una modifica locale, creare un nuovo file

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

e aggiungi la tua regola principale. Ad esempio, se si dispone del mouse ImExPS / 2, è possibile raddoppiare i 15 gradi predefiniti per clic a 30 gradi con

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

Ricarica il database udev

 sudo udevadm hwdb --update
 sudo udevadm trigger /dev/input/event1

1
There is no current api for changing the scroll speed for libinput devices: è cambiato da allora?
Orschiro,

1
@orschiro Ho l'impressione che un api non sia l'intenzione. La speranza è che tutti i dispositivi vengano identificati e configurati correttamente in udev e quindi non sia necessaria la configurazione dell'utente. Dai un'occhiata a tutti i blog di libinput . In particolare 1.4 corrisponde al completamento dell'elenco TODO iniziale per libinput.
Meuh

4
in Ubuntu 16.10 il sistema udev conf è in /lib/udev/hwdb.d/70-mouse.hwdb
Jonas Berlin

2
comunque fare lo stesso con un touchpad?
Francesco

1
@daboross Sì. Ci sono due aspetti da considerare: la risposta sopra sta solo cercando di normalizzare l'output da un dispositivo in modo che quando un utente fa la stessa quantità di movimento su 2 topi diversi, ad esempio, il sistema può calcolare che sono equivalenti, nonostante i report dall'hardware essere diverso. Il secondo aspetto è quindi quanto movimento dello schermo dovrebbe rappresentare, e ciò è determinato dalla complessa quantità di software che affronta l'utente, come il toolkit grafico, il sistema di finestre, i dpi dello schermo e così via.
Meuh

3

Libinput non ha alcun tipo di concetto "per ogni rotella di scorrimento, fare n righe / gradi" come parte comune, per ora l'impostazione sembra essere specifica del dispositivo, poiché alcuni Logitech hanno il parametroEvdev Scrolling Distance (278) che probabilmente è arrivato con il "vecchio" Il driver Evdev include.

Questa sarà considerata una regressione per l'esperienza dell'utente secondo me, dove inizialmente è stata rifiutata l'inclusione di una sensibilità di scorrimento del mouse configurabile nel toolkit comune (libinput), ora fa parte di una richiesta pull per essere nelle versioni future - probabilmente le chiamate di funzione dovranno essere implementate in ogni ambiente desktop.

Esistono molte possibilità per risolvere questo problema, ma dipende dalla distribuzione Linux.

  1. Sii fortunato e abbi una sensibilità di scorrimento specifica del driver - controlla facendo una ricerca di tutti gli input con variabili di scorrimento:

    Elenco xinput | cut -f2 | cut -f2 -d '=' | \
                xargs -d $ '\ n' -I '{}' sh -c "lista-puntelli xinput '{}' | grep -iq scroll && \
                                        (eco dev ID '{}'; xinput list-props '{}') "
    e impostando la variabile specifica per , dove può essere il nome del dispositivo e può essere il nome dell'impostazione.xinput --set-prop <ID> <SUB-ID> <values><ID><SUB-ID>

  2. Una correzione generale repatching il codice libinput e ricostruzione .

  3. Puoi provare a ripristinare le interfacce udevadm / evdev con X11, quindi provare la variabile X11 MOUSE_WHEEL_CLICK_ANGLE .

  4. Dal riferimento dell'ultimo elemento , è possibile utilizzare imwheelper emulare i clic di scorrimento del mouse per moltiplicare il valore.

    # 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. Esistono impostazioni specifiche dell'applicazione per la sensibilità della rotellina del mouse, come Chrome SmoothScroll e Firefox SmoothWheel ref .


1
La transizione di Libinput è stata una regressione UX in molti modi, quasi tutti dovuti al controllo da parte dell'utente del comportamento del loro hardware ... Il che è un peccato dato la piattaforma su cui si sta verificando.
Douglas Gaskell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.