Disabilitare l'accelerazione del mouse in X.Org (Linux)


11

Questa è la versione Linux della mia disabilitazione dell'accelerazione del mouse nella domanda di Mac OS X. Spero di avere una risposta questa volta.

Sono stanco dell'accelerazione del mouse e voglio avere una risposta del mouse completamente lineare. Ciò è facilmente ottenibile tramite uno dei 5 metodi (alcuni sottilmente impliciti) nella pagina wiki X.Org sull'accelerazione del puntatore . Tuttavia, disabilitano anche il ridimensionamento della velocità .

Non voglio un mapping 1: 1 tra dispositivo e coordinate dello schermo. Voglio un mapping 1: N in cui N è una costante . Qualche idea?

Risposte:


15

L'unico modo in cui ho scoperto che funziona (e ho provato solo su Ubuntu) è con il xinputcomando.

Innanzitutto devi identificare il numero del dispositivo per il mouse che desideri modificare:

# xinput list
â¡ Virtual core pointer                         id=2    [master pointer  (3)]
â   â³ Virtual core XTEST pointer               id=4    [slave  pointer  (2)]
â   â³ Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)   id=10   [slave  pointer  (2)]
⣠Virtual core keyboard                        id=3    [master keyboard (2)]
    â³ Virtual core XTEST keyboard              id=5    [slave  keyboard (3)]
    â³ Power Button                             id=6    [slave  keyboard (3)]
    â³ Power Button                             id=7    [slave  keyboard (3)]
    â³ CHICONY USB Keyboard                     id=8    [slave  keyboard (3)]
    â³ CHICONY USB Keyboard                     id=9    [slave  keyboard (3)]
    â³ IR-receiver inside an USB DVB receiver   id=11   [slave  keyboard (3)]

Ora, in questo esempio, giocherò con il mio mouse Microsoft. id = 10

Ora vediamo quali proprietà è in grado di gestire questo dispositivo:

# xinput list-props 10
Device 'Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)':
    ... cruft cut ...
    Device Accel Profile (259):     3
    ... cruft cut ...

Questo valore è il modo in cui il driver gestisce l'accelerazione:

-1: nessuno nessuna accelerazione o decelerazione del puntatore dipendente dalla velocità. Se anche la decelerazione costante non viene utilizzata, l'elaborazione del movimento viene soppressa, salvando alcuni cicli.

0: classico (predefinito) simile al vecchio comportamento, ma più prevedibile. Seleziona tra 'polinomio' e 'semplice' in base alla soglia = /! = 0.

1: disponibile in base al dispositivo se il driver hardware lo installa. Potrebbe arrivare Synaptics.

2: polinomio Bilancia polinomiale: la velocità funge da coefficiente, mentre l'accelerazione è l'esponente. Molto utilizzabile, il profilo consigliato.

3: scale lineari lisce per lo più lineari, ma con un inizio regolare (non lineare).

4: Transizioni semplici tra accelerate / non accelerate, ma con un intervallo di transizione uniforme. Questo ha il problema fondamentale di accelerare su due niveaus, su cui l'accelerazione rimane indipendente dalla velocità. Tradizionalmente, tuttavia, l'impostazione predefinita.

5: la potenza accelera con una funzione di potenza. la velocità è l'esponente qui. Aderisce alla soglia. Sarà difficile da controllare, quindi è importante che tu abbia ottimizzato correttamente la stima della velocità.

6: lineare solo lineare a velocità e accelerazione. Semplice e pulito.

7: il limitato sale uniformemente all'accelerazione, raggiungendo il limite massimo alla soglia, dove diventa piatto (è limitato).

Quindi da ciò possiamo vedere che se impostiamo questa proprietà su -1 disabiliterà completamente l'accelerazione.

$ xinput set-prop 10 259 -1

Quindi ora non abbiamo accelerazione, ma è quello che vogliamo? Il mouse ora è un po 'lento. Purtroppo è così. Con l'accelerazione disabilitata si ottiene una relazione 1: 1 tra il mouse e il display. Sposta il mouse a sinistra di un punto e il puntatore del mouse si sposta di un pixel a sinistra. Se ci fosse un modo per moltiplicare il movimento di input (diciamo per 2), ogni altro pixel su ciascun asse sarebbe inaccessibile al mouse. Ciò renderebbe piuttosto difficile il posizionamento accurato del mouse. L'impostazione della "sensibilità" in alcuni pannelli di controllo del mouse della GUI in realtà fa l'opposto di quello che ti aspetteresti - il più sensibile è un rapporto 1: 1 - è l'accelerazione che lo fa sembrare molto più veloce.

Quindi vuoi movimenti più veloci, ma non vuoi accelerazioni. L'unico modo per farlo è nell'hardware. Fondamentalmente, dovrai acquistare un mouse più sensibile. Cerca uno con un DPI più elevato (punti per pollice - sì, proprio come una stampante). Trovo che il mio vecchio Microsoft IntelliEye sia abbastanza sensibile con l'accelerazione disabilitata per essere utilizzabile.

O forse il tuo mouse è troppo sensibile? Anche con l'accelerazione disabilitata è troppo veloce per i tuoi gusti? Bene, ecco dove il

Device Accel Constant Deceleration (260):      1.0000

arriva l'impostazione. Si tratta di un rapporto di decelerazione costante (o desiniziante). Per impostazione predefinita è 1: 1 ma richiederà qualsiasi numero (anche le frazioni) sopra di esso. Per ottenere un leggero rallentamento del mouse:

$ xinput set-prop 10 260 1.2

O un enorme rallentamento per un lavoro davvero delicato:

$ xinput set-prop 10 260 10

O riportalo alla normalità:

$ xinput set-prop 10 260 1

Funziona anche quando il profilo di accelerazione è impostato su -1 (Disabilitato).


Cosa succede se desidero meno sensibilità con un mouse ad alto DPI? No, scusa, la mappatura 1: 1 non funziona. E il prossimo valore non è 1: 2, potresti fare, diciamo, 1: 1.2. In effetti, sono abbastanza sicuro che l'attuale codice di accelerazione abbia un milione di modi diversi per ottimizzare le velocità e ottenere una risoluzione sub-pixel. Se solo ci fosse un profilo "nessuna accelerazione" - al contrario di "disabilitare completamente le subroutine di accelerazione".
aib

@aib Controlla la mia modifica
Majenko

Mi dispiace, non è la decelerazione del puntatore che mi serve. (Beh, forse lo è, ma dopo aver ridimensionato il mio movimento del mouse, e senza acquistare un nuovo mouse, grazie.)
aib

Questo dovrebbe essere accettato. Non ero a conoscenza del fatto che la decelerazione può essere float e non solo intero. Grazie! Il profilo none disattiva davvero l'accelerazione (diversamente da Windows).
inf3rno,

In Debian Stretch questi non sembrano più funzionare: dopo l'aggiornamento la proprietà Device Accel Constant Deceleration è scomparsa e ciò che ho per questo mouse (xinput --list-props) non sembra influenzarlo più (lasciandomi con una notte mouse inutile).
Jubatian,

2

Guardando attraverso le fonti di X.org, giocando con un server personalizzato e facendo alcuni test ossessivi con il mio mouse, posso tranquillamente dire che l'attuale profilo limitato (7) lo raggiunge quando il thresholdvalore è impostato su 0. Il accelerationvalore diventa quindi la velocità scaler (scalare?).

Così:

xinput set-prop <device> "Device Accel Profile" 7
xset m <velocity> 0

La seconda parte può anche essere impostata utilizzando il pannello delle impostazioni del mouse dell'ambiente desktop. Non dimenticare che deve essere in x/yforma per valori non interi, ad es. 16/10Per 1.6.

Ci sono anche alcune altre impostazioni (decelerazione ecc.) Da regolare, ma questo si occupa della parte peggiore del problema. Alcuni file di configurazione dovrebbero essere modificati per permanenza, ma ancora una volta, l'importante è che sia possibile.

Modifica: per permanenza, puoi aggiungerlo a xorg.xconf:

Section "InputClass"
        Identifier "Mouse with No Acceleration"
        MatchIsPointer "yes"
        MatchProduct "Mouse"
        Option "AccelerationProfile" "7"
EndSection

Da lì in poi, puoi usare le impostazioni del mouse del tuo ambiente desktop, come ho già detto. Tuttavia, se si desidera una xorg.confsoluzione completa :

Section "InputClass"
        Identifier "Mouse With No Acceleration"
        MatchIsPointer "yes"
        MatchProduct "Mouse"
        Option "AccelerationProfile"     "7" # "limited" profile
        Option "AccelerationNumerator"   "2" # these adjust the sensitivity
        Option "AccelerationDenominator" "1" # these adjust the sensitivity
        Option "AccelerationThreshold"   "0" # this disables acceleration
                                             # in the "limited" profile
EndSection

<3 Grazie. Funziona anche per la modalità di sospensione.
Simon A. Eugster,

0

So che questo è vecchio, ma penso che meriti di aggiungere una risposta a una domanda già posta. XSET farà il lavoro per te molto probabilmente. Il comando che ho eseguito è stato xset m 1 1...

I contenuti della pagina man di xset I sono stati curati qui da xset (1) per le opzioni del mouse:

topo

L'opzione m controlla i parametri del mouse; può essere abbreviato in 'm'. I parametri per il mouse sono acceleration' andsoglia '. L'accelerazione può essere specificata come numero intero o come frazione semplice. Il mouse, o qualunque altro puntatore a cui è collegata la macchina, raggiungerà la acceleration' times as fast when it travels more thansoglia dei pixel in breve tempo. In questo modo, il mouse può essere utilizzato per un allineamento preciso quando viene spostato lentamente, ma può essere impostato per spostarsi attraverso lo schermo in un movimento del polso quando desiderato. Uno o entrambi i parametri per l'opzione m possono essere omessi, ma se ne viene fornito solo uno, verrà interpretato come l'accelerazione. Se non viene utilizzato alcun parametro o il flag 'default', verranno impostati i valori predefiniti del sistema.

Se il threshold' parameter is provided and 0, theparametro di accelerazione '> verrà utilizzato nell'esponente di una formula più naturale e continua>, fornendo un controllo preciso per il movimento lento ma grande portata per il movimento veloce> e una transizione progressiva per i movimenti in mezzo. Il valore di 'accelerazione' raccomandato in questo caso è da 3/2 a 2, ma non limitato a tale intervallo.

Disclaimer: questo non sopravvive a un nuovo accesso / riavvio senza qualche trucco aggiuntivo ...

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.