Il s’agit de faire en sorte que le "défilement naturel", à savoir le "défilement inversé", fonctionne avec TOUTES les applications à l’échelle du système, avec souris et points de suivi USB. Ce problème me rend fou depuis le 12.04, où je l’ai tout à fait réussi à travailler avec de nombreuses solutions de contournement.
J'utilise buntu Studio 18.04 (xfce 4.12 desktop) et il existe une option de "défilement naturel" dans les préférences. Cela fonctionne comme prévu dans les navigateurs et les gestionnaires de fichiers, ainsi que dans les éditeurs de texte, etc.
Quelqu'un sait quel est l'état de développement sur ce sujet? Est-ce que je manque quelque chose?
Toute aide est appréciée avant que je ne recommence et que je teste toutes ces solutions de contournement.
Ubuntu Studio 18.04.1 avec xfce 4.12 4.15.0-20-lowlatency # 21-Ubuntu SMP PREEMPT
Le comportement incohérent de "défilement inversé" incohérent, même parmi les applications ubuntu (x) par défaut, était dû à la gestion différente du défilement dans GTK2 et GTK3. Je ne sais pas si cela s'applique toujours ..
Quoi qu'il en soit, je viens de découvrir que le "vieux truc xinput" fonctionne toujours (xUbuntu 18.04.1, version xinput 1.6.2), donc je pourrais aussi bien partager son fonctionnement. Et comment le faire persister redémarre.
Test/solution temporaire
Répertoriez tous les pointeurs et claviers actuellement disponibles:
xinput list
Quelque chose comme ça va apparaître:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Laser Mouse id=9 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [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)]
↳ Power Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
Choisissez le id
du pointeur en question, répertoriez toutes ses propriétés de périphérique:
xinput list-props 12
Device 'TPPS/2 IBM TrackPoint':
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, ...
libinput Natural Scrolling Enabled (281): 1
libinput Natural Scrolling Enabled Default (282): 0
libinput Scroll Methods Available (283): 0, 0, 1
libinput Scroll Method Enabled (284): 0, 0, 1
libinput Scroll Method Enabled Default (285): 0, 0, 1
libinput Button Scrolling Button (286): 2
...
C’est ce dont nous avons besoin: libinput Natural Scrolling Enabled (281)
Pour activer le défilement naturel globalement, par exemple, pour "TPPS/2 IBM TrackPoint" (pour la session en cours), désactivez-le d'abord dans les préférences "Souris et pavé tactile".
Entrez l’une de ces deux lignes ci-dessous, appuyez sur Entrée. (les deux font la même chose, car pour lire ou écrire une propriété, vous pouvez utiliser son nom entier (!) ou son ID)
xinput set-prop 12 "libinput Natural Scrolling Enabled" 1
xinput set-prop 12 "281" 1
Maintenant, testez-le dans des applications où naturalscroling ne fonctionnerait pas via les préférences système.
Solution permanente
Si le test ci-dessus a fonctionné sur votre ordinateur, vous pouvez appliquer les modifications chaque fois que vous vous connectez à votre session avec un petit script de démarrage. La partie de script correspondant à deviceName
provient de cette réponse à propos des cartes de boutons de @zerobandwidth).
Enregistrez le code ci-dessous sous le nom natural_scrolling.sh
dans votre répertoire personnel ou dans /any/path/youLike
.
#!/bin/bash
# Find all xinput devices whose name matches any of the arguments passed here,
# then set the Natural Scrolling' property to '1' regardless of its
# current state.
# expect multiple arguments, store them as array
deviceNames="$@"
# exit if no argument is passed
if [ "$deviceNames" = "" ]; then
echo "No argument received, exiting."
echo "Call this script with argument(s) like 'Logitech' that match"
echo "any of your attached pointer devices."
exit 1
fi
for deviceName in $deviceNames
do
deviceId=$(xinput --list | awk -v search="$deviceName" \
'$0 ~ search {match($0, /id=[0-9]+/);\
if (RSTART) \
print substr($0, RSTART+3, RLENGTH-3)\
}'\
)
# set device-specific property (works i.e for 'TrackPoint' & 'Logitech')
xinput set-prop $id "libinput Natural Scrolling Enabled" 1
done
Marquez le script exécutable:
chmod +x natural_scrolling.sh
Appelez-le avec unique (!) device_name
chaîne (s) comme argument:
/any/path/youLike/natural_scrolling.sh Logitech TrackPoint
Ajoutez-le à vos applications de démarrage, c'est-à-dire via les préférences de session et de démarrage dans xfce, et testez-le en vous reconnectant et en vous reconnectant.
Hélas, je n'ai pas assez de réputation pour commenter, je vais donc devoir ajouter ceci comme réponse. Pour ceux qui tombent sur cela, il y a une très petite erreur dans le code ci-dessus. L'avant dernière ligne:
xinput set-prop $id "libinput Natural Scrolling Enabled" 1
Devrais lire:
xinput set-prop $deviceId "libinput Natural Scrolling Enabled" 1
De plus, j'utilise une souris ultra-fine Logitech et, pour une raison qui ne sait pas quoi, elle se connecte à la fois en tant que souris et clavier et apparaît donc deux fois dans xinput list
. J'ai donc ajouté en piping la sortie à head -1
pour limiter ce qui est renvoyé à la première entrée (qui dans mon cas est toujours la souris):
...
print substr($0, RSTART+3, RLENGTH-3)\
}' | head -1 \
)
...