J’ai récemment changé de souris pour une souris ergonomique 3M (souris verticale). Celle-ci possède 3 boutons mais pas de roulette pour le défilement, ce qui est pénible mais pas une fatalité. Comme avec les souris trackball, il faut donc simuler la roulette en définissant un bouton qui, appuyé tout en bougeant la souris, va effectuer le défilement. Sous Gnome avec Ubuntu 18.04, il y a 3 manières de s’y prendre :
facile mais limité
Avec Dconf, accéder à la clé org.gnome.desktop.peripherals.trackball.scroll-wheel-emulation-button et changer la valeur à 2. Ceci semble marcher pour les trackballs Logitech, mais pas avec ma souris. Ce réglage est chargé dans gsettings donc conservé entre deux redémarrage et personnalisable pour chaque utilisateur.
temporaire
La commande xinput renvoie la liste des périphériques d’entrée disponibles, sous Wayland comme sous Xorg:
$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=19 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=20 [slave pointer (2)] ⎜ ↳ PixArt USB Optical Mouse id=16 [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)] ↳ Video Bus id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ Integrated Camera: Integrated C id=17 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=18 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=21 [slave keyboard (3)]
Il faut alors repérer dans cette liste la souris : PixArt USB Optical Mouse. Pour obtenir les options disponibles, on peut entrer la commande xinput –list-props « PixArt USB Optical Mouse » :
$ xinput --list-props "PixArt USB Optical Mouse" Device 'PixArt USB Optical Mouse': Device Enabled (171): 1 Coordinate Transformation Matrix (173): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Natural Scrolling Enabled (351): 0 libinput Natural Scrolling Enabled Default (352): 0 libinput Scroll Methods Available (355): 0, 0, 1 libinput Scroll Method Enabled (356): 0, 0, 0 libinput Scroll Method Enabled Default (357): 0, 0, 1 libinput Button Scrolling Button (358): 2 libinput Button Scrolling Button Default (359): 2 libinput Middle Emulation Enabled (360): 0 libinput Middle Emulation Enabled Default (361): 0 libinput Accel Speed (362): 0.198529 libinput Accel Speed Default (363): 0.000000 libinput Accel Profiles Available (364): 1, 1 libinput Accel Profile Enabled (365): 1, 0 libinput Accel Profile Enabled Default (366): 1, 0 libinput Left Handed Enabled (367): 0 libinput Left Handed Enabled Default (368): 0 libinput Send Events Modes Available (293): 1, 0 libinput Send Events Mode Enabled (294): 0, 0 libinput Send Events Mode Enabled Default (295): 0, 0 Device Node (296): "/dev/input/event14" Device Product ID (297): 2362, 9488 libinput Drag Lock Buttons (353): <no items> libinput Horizontal Scroll Enabled (354): 1
L’option pertinente est libinput Scroll Method Enabled (356): 0, 0, 0 qui dit qu’aucune méthode n’est active. L’option libinput Scroll Methods Available (355): 0, 0, 1 renseigne sur les méthodes disponibles dans l’ordre :
- défilement à deux doigts = 0 : pas de défilement à 2 doigts
- défilement sur le bord = 0 : pas de défilement sur le bord disponible
- défilement par bouton =1 : défilement par bouton disponible.
La commande xinput –set-prop « PixArt USB Optical Mouse » « libinput Scroll Method Enabled » 0, 0, 1 va donc activer le défilement jusqu’au prochain démarrage.
définitif
On veut donc entrer ce réglage dans le marbre pour le garder entre deux démarrages. Il faut créer le répertoire /etc/X11/xorg.conf.d/ (absent par défaut sous les nouvelles versions d’Ubuntu) puis y créer un fichier 40-libinput.conf contenant :
Section "InputClass" Identifier "Marble Mouse" MatchProduct "PixArt USB Optical Mouse" Driver "libinput" Option "ScrollMethod" "button" EndSection
Après redémarrage, la configuration est prise en compte et sera la même pour tous les utilisateurs du système. Le nom à indiquer dans l’option MatchProductest le même que celui retourné par xinput. Ici on n’a pas besoin de définir quel bouton est utilisé pour le défilement puisque xinput montre que c’est déjà le bon bouton (2) qui est utilisé par défaut. Si ce n’était pas le cas, on pourrait ajouter l’option :
Option "ScrollButton" "8"
additionnel
Si, comme moi, vous avez un souci avec la mise en veille automatique de la souris (sur ordinateur portable, les périphériques sont mis en veille automatiquement après 2-3 s d’inactivité), vous devez blacklister le périphérique USB par son identifiant pour l’exclure de la mise en veille. Si vous utilisez TLP, il faut d’abord relever l’identifiant du périphérique avec la commande lsusb :
$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc. Bus 001 Device 003: ID 04f2:b5ab Chicony Electronics Co., Ltd Bus 001 Device 024: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 022: ID 0835:8502 Action Star Enterprise Co., Ltd Bus 001 Device 021: ID 0835:8500 Action Star Enterprise Co., Ltd Bus 001 Device 017: ID 0835:8501 Action Star Enterprise Co., Ltd Bus 001 Device 016: ID 0835:8500 Action Star Enterprise Co., Ltd Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Ici, l’ID de la souris optique est 093a:2510. Il suffit alors d’éditer le fichier /etc/default/tlp à la section USB autosuspend :
# Exclude listed devices from USB autosuspend (separate with spaces). # Use lsusb to get the ids. # Note: input devices (usbhid) are excluded automatically USB_BLACKLIST="093a:2510"
puis redémarrer l’ordinateur (ou TLP).
Sources :
- https://wiki.archlinux.org/index.php/Logitech_Marble_Mouse