Forcez simplement le pointeur pour ignorer les pixels, voici comment:
Première liste des périphériques d'entrée:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ PixArt USB Optical Mouse id=10 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=15 [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)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ USB2.0 UVC 2M WebCam id=9 [slave keyboard (3)]
↳ Asus Laptop extra buttons id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ USB Keyboard id=11 [slave keyboard (3)]
↳ USB Keyboard id=12 [slave keyboard (3)]
Dans l'exemple, nous voyons que l'ID de la souris est 10. Ensuite, listez ses propriétés:
$ xinput list-props 10
Device 'PixArt USB Optical Mouse':
Device Enabled (140): 1
Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (265): 0
Device Accel Constant Deceleration (266): 1.000000
Device Accel Adaptive Deceleration (267): 1.000000
Device Accel Velocity Scaling (268): 10.000000
Device Product ID (260): 2362, 9488
Device Node (261): "/dev/input/event5"
Evdev Axis Inversion (269): 0, 0
Evdev Axes Swap (271): 0
Axis Labels (272): "Rel X" (150), "Rel Y" (151), "Rel Vert Wheel" (264)
Button Labels (273): "Button Left" (143), "Button Middle" (144), "Button Right" (145), "Button Wheel Up" (146), "Button Wheel Down" (147), "Button Horiz Wheel Left" (148), "Button Horiz Wheel Right" (149)
Evdev Middle Button Emulation (274): 0
Evdev Middle Button Timeout (275): 50
Evdev Third Button Emulation (276): 0
Evdev Third Button Emulation Timeout (277): 1000
Evdev Third Button Emulation Button (278): 3
Evdev Third Button Emulation Threshold (279): 20
Evdev Wheel Emulation (280): 0
Evdev Wheel Emulation Axes (281): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (282): 10
Evdev Wheel Emulation Timeout (283): 200
Evdev Wheel Emulation Button (284): 4
Evdev Drag Lock Buttons (285): 0
Nous voulons la «matrice de transformation de coordonnées», rappelez-vous sa №142.
En modifiant cette propriété, nous pouvons augmenter la vitesse du pointeur. C'est une matrice de transformation, utilisée pour calculer un mouvement de pointeur . Du lien:
Par défaut, le CTM de chaque périphérique d’entrée dans X est la matrice d’identité. Par exemple, disons que vous touchez un écran tactile au point (400, 197) de l’écran:
⎡ 1 0 0 ⎤ ⎡ 400 ⎤ ⎡ 400 ⎤
⎜ 0 1 0 ⎥ · ⎜ 197 ⎥ = ⎜ 197 ⎥
⎣ 0 0 1 ⎦ ⎣ 1 ⎦ ⎣ 1 ⎦
Les coordonnées X et Y de l'événement de périphérique sont entrées dans la deuxième matrice du calcul. Le résultat du calcul est l'endroit où les coordonnées X et Y de l'événement sont mappées à l'écran. Comme indiqué, la matrice d'identité mappe les coordonnées de l'appareil aux coordonnées de l'écran sans aucune modification.
Nous voulons donc augmenter les valeurs en fonction de x et y , augmentant ainsi la vitesse du pointeur. Un exemple de mon PC:
$ xinput set-prop 10 142 2.400000, 0.000000, 0.000000, 0.000000, 2.400000, 0.000000, 0.000000, 0.000000, 1.000000
C'est xinput set-prop <device-id> <property-number> <property-values>
. Jouez un peu avec cela jusqu'à ce que vous trouviez celui qui convient. Remarque: ne modifiez pas la dernière valeur de la matrice. C'est mon erreur lorsque j'ai essayé de travailler - dans ce cas, vous ne verrez aucune différence.
Remerciements: Je remercie Simon Thum de la liste de diffusion xorg, c'est lui qui a donné l'indice de la matrice.
UPD : il est à noter que certains jeux Windows fonctionnant avec Wine peuvent avoir un comportement de pointeur étrange (par exemple, remarqué que l'objectif de l'ancienne version de Counter Strike 1.6 décline jusqu'à ce qu'il regarde le sol, quelle que soit la manière dont vous déplacez la souris) , dans ce cas, il suffit de réinitialiser x et y de CTM à 1 avant de lancer le jeu.