Désactiver l'accélération de la souris dans X.Org (Linux)

11

Ceci est la version Linux de mon accélération souris Mac désactivation OS X question. J'espère que j'aurai une réponse cette fois.

Je suis fatigué de l'accélération de la souris et je veux avoir une réponse de souris complètement linéaire. Ceci est facilement réalisable grâce à l'une des 5 méthodes environ (certaines subtilement impliquées) sur la page wiki X.Org sur l'accélération du pointeur . Cependant, ils désactivent également la mise à l'échelle de la vitesse .

Je ne veux pas de mappage 1: 1 entre les coordonnées de l'appareil et de l'écran. Je veux un mappage 1: N où N est une constante . Des idées?

aib
la source

Réponses:

15

La seule façon dont j'ai trouvé que cela fonctionne (et je n'ai essayé que sur Ubuntu) est avec la xinputcommande.

Vous devez d'abord identifier le numéro de périphérique de la souris que vous souhaitez modifier:

# 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)]

Maintenant, dans cet exemple, je vais jouer avec ma souris Microsoft. id = 10

Voyons maintenant quelles propriétés cet appareil peut gérer:

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

Cette valeur est la façon dont le pilote gère l'accélération:

-1: aucune aucune accélération ou décélération du pointeur dépendant de la vitesse. Si la décélération constante n'est pas non plus utilisée, le traitement du mouvement est supprimé, ce qui permet d'économiser certains cycles.

0: classique (par défaut) similaire à l'ancien comportement, mais plus prévisible. Sélectionne entre «polynôme» et «simple» en fonction du seuil = /! = 0.

1: disponible en fonction du périphérique si le pilote matériel l'installe. Peut-être à venir pour les synaptics.

2: polynôme Échelles polynôme: la vitesse sert de coefficient, l'accélération étant l'exposant. Très utilisable, le profil recommandé.

3: échelles linéaires lisses principalement linéaires, mais avec un début lisse (non linéaire).

4: Transitions simples entre accéléré / non accéléré, mais avec une plage de transition en douceur. Cela a le problème fondamental d'accélérer sur deux niveaux, sur lesquels l'accélération reste indépendante de la vitesse. Traditionnellement, cependant, la valeur par défaut.

5: la puissance accélère par une fonction de puissance. la vitesse est l'exposant ici. Adhère au seuil. Sera facilement difficile à contrôler, il est donc important que vous ayez réglé correctement votre estimation de vitesse.

6: linéaire juste linéaire à la vitesse et à l'accélération. Simple et propre.

7: limité monte en douceur à l'accélération, au maximum au seuil, où il devient plat (est limité).

Donc, à partir de cela, nous pouvons voir que si nous définissons cette propriété à -1, cela désactivera complètement l'accélération.

$ xinput set-prop 10 259 -1

Alors maintenant, nous n'avons pas d'accélération, mais est-ce ce que nous voulons? La souris est un peu lente maintenant. Malheureusement, c'est comme ça. Avec l'accélération désactivée, vous obtenez une relation 1: 1 entre la souris et l'écran. Vous déplacez la souris d'un point vers la gauche et le pointeur de la souris se déplace d'un pixel vers la gauche. S'il y avait un moyen de multiplier le mouvement d'entrée (disons par 2), alors chaque pixel sur chaque axe serait inaccessible à la souris. Cela rendrait le positionnement précis de la souris assez difficile. Le paramètre de `` sensibilité '' dans certains panneaux de contrôle de souris GUI fait en fait le contraire de ce que vous attendez - le plus sensible est un rapport 1: 1 - c'est l'accélération qui le fait paraître beaucoup plus rapide.

Vous voulez donc un mouvement plus rapide, mais pas une accélération. La seule façon de le faire est le matériel. Fondamentalement, vous devrez acheter une souris plus sensible. Recherchez-en un avec un DPI plus élevé (points par pouce - oui, tout comme une imprimante). Je trouve que mon ancien Microsoft IntelliEye est suffisamment sensible avec l'accélération désactivée pour être utilisable.

Ou peut-être que votre souris est trop sensible? Même avec l'accélération désactivée, c'est trop rapide à votre goût? Eh bien, c'est là que

Device Accel Constant Deceleration (260):      1.0000

Le paramètre entre en jeu. Il s'agit d'un taux de décélération (ou de désinfection) constant. Par défaut, c'est 1: 1 mais prendra n'importe quel nombre (même des fractions) au-dessus. Pour obtenir un léger ralentissement de la souris:

$ xinput set-prop 10 260 1.2

Ou un ralentissement massif pour un travail vraiment délicat:

$ xinput set-prop 10 260 10

Ou revenez à la normale:

$ xinput set-prop 10 260 1

Cela fonctionne même lorsque le profil d'accélération est défini sur -1 (désactivé).

Majenko
la source
Que se passe-t-il si je veux moins de sensibilité avec une souris à haute résolution? Non, désolé, le mappage 1: 1 ne fonctionne tout simplement pas. Et la valeur suivante n'est pas 1: 2, vous pourriez faire, disons, 1: 1.2. En fait, je suis presque sûr que le code d'accélération actuel a un million de façons différentes d'affiner les vitesses et d'atteindre une résolution sous-pixel. Si seulement il y avait un profil "sans accélération" - par opposition à "désactiver complètement les sous-programmes d'accélération".
2011
@aib Vérifiez mon montage
Majenko
Je suis désolé, ce n'est pas la décélération du pointeur dont j'ai besoin. (Eh bien, c'est peut-être le cas, mais après avoir augmenté le mouvement de ma souris, et sans acheter une nouvelle souris, merci.)
aib
Cela devrait être accepté. Je ne savais pas que la décélération peut être flottante, et pas seulement entière. Merci! Le profil none désactive vraiment l'accélération (contrairement aux fenêtres).
inf3rno
Dans Debian Stretch, cela ne semble plus fonctionner: après la mise à niveau, la propriété Device Accel Constant Deceleration a disparu, et ce que j'ai pour cette souris (xinput --list-props) ne semble plus l'affecter (me laissant avec une souris inutile la nuit).
Jubatian
2

En parcourant les sources de X.org, en jouant avec un serveur personnalisé et en effectuant des tests obsessionnels avec ma souris, je peux affirmer que le profil limité actuel (7) y parvient lorsque la thresholdvaleur est définie sur 0. La accelerationvaleur devient alors la vitesse détartreur (scalaire?).

Donc:

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

La deuxième partie peut également être définie à l'aide du panneau des paramètres de la souris de votre environnement de bureau. N'oubliez pas qu'il doit être en x/yforme pour les valeurs non entières, par exemple 16/10pour 1.6.

Il existe également d'autres paramètres (décélération, etc.) à régler, mais cela prend en charge la pire partie du problème. Certains fichiers de configuration doivent être modifiés pour la permanence, mais encore une fois, l'important est que c'est possible.

Modifier: pour la permanence, vous pouvez ajouter ceci à votre xorg.xconf:

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

À partir de là, vous pouvez utiliser les paramètres de souris de votre environnement de bureau, comme je l'ai mentionné. Cependant, si vous souhaitez une xorg.confsolution complète :

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
aib
la source
<3 Merci. Fonctionne même pour le mode veille.
Simon A. Eugster
0

Je sais que c'est vieux, mais je pense qu'il vaut la peine d'ajouter une réponse à une question déjà posée. XSET fera très probablement le travail pour vous. La commande que j'ai exécutée était xset m 1 1...

Le contenu de la page de manuel pour xset que j'ai organisé ici à partir de xset (1) pour vous pour les options de la souris:

Souris

L'option m contrôle les paramètres de la souris; il peut être abrégé en «m». Les paramètres de la souris sont acceleration' andseuil '. L'accélération peut être spécifiée comme un entier ou comme une simple fraction. La souris, ou le pointeur auquel la machine est connectée, atteindra le acceleration' times as fast when it travels more thanseuil des pixels en peu de temps. De cette façon, la souris peut être utilisée pour un alignement précis lorsqu'elle est déplacée lentement, mais elle peut être configurée pour se déplacer sur l'écran en un clin d'œil lorsque vous le souhaitez. Un ou les deux paramètres de l'option m peuvent être omis, mais si un seul est donné, il sera interprété comme l'accélération. Si aucun paramètre ou l'indicateur 'default' n'est utilisé, les valeurs par défaut du système seront définies.

Si le threshold' parameter is provided and 0, theparamètre d'accélération> sera utilisé dans l'exposant d'une formule plus naturelle et continue, donnant un contrôle précis pour le mouvement lent mais une grande portée pour le mouvement rapide, et une transition progressive pour les mouvements intermédiaires. La valeur «d'accélération» recommandée dans ce cas est de 3/2 à 2, mais sans s'y limiter.

Avertissement: cela ne survit pas à une reconnexion / redémarrage sans quelques astuces supplémentaires ...

N_mag
la source