Edit: C'est plus compliqué que je ne l'avais remarqué. Non seulement je perds la fonction de défilement lors de la suspension, mais elle est également perdue lorsque le système commence à économiser de l'énergie. J'ai tripoté des options d'économie d'énergie en vain. J'ai trouvé une solution que je posterai dans les réponses ci-dessous.
Je viens d'installer Ubuntu 19.04 sur mon ordinateur portable Dell (Latitude 1790) et j'utilise une souris Microsoft Arc Mouse. Lorsque l'ordinateur portable suspend puis reprend, la souris Arc Mouse continue de fonctionner mais le défilement cesse de fonctionner avec la surface tactile.
Le redémarrage de l'ordinateur portable réactive le défilement. Cependant, arrêter et redémarrer Bluetooth et réappairer la souris ne réactivent pas le défilement.
Je soupçonne que quelque chose lié à cette question peut résoudre le problème:
Le défilement ne fonctionne pas après la suspension, à la recherche d'une solution permanente
Malheureusement, je ne sais pas comment déterminer le périphérique de la souris à mettre dans le script pour tester à nouveau le périphérique et redémarrer le défilement. Quelqu'un peut-il me dire comment déterminer l'appareil? Sinon, existe-t-il une autre approche pour résoudre ce problème?
J'ai regardé dans lsmod mais il n'y a rien d'évident. Voici les deux lignes qui mentionnent le bluetooth.
bluetooth 557056 43 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic 28672 2 bluetooth
Voici tous les périphériques lsmod répertoriés ci-dessus ou contenant bt.
Dell_rbtn 20480 0
btusb 49152 0
btrtl 20480 1 btusb
btbcm 16384 1 btusb
btintel 24576 1 btusb
bluetooth 557056 43 btrtl,btintel,btbcm,bnep,btusb,rfcomm
L'ordinateur portable dispose également d'un pavé tactile et le défilement continue de fonctionner sur le pavé tactile après la suspension. Je pense que cela signifie que le problème est isolé de la souris Arc Mouse.
En creusant un peu plus, j'ai trouvé que /etc/init.d/ contient les scripts pour les services et /etc/init.d/bluetooth est le script qui fait apparaître et arrête le service bluetooth. Cela semble être la partie pertinente.
start)
log_daemon_msg "Starting $DESC"
if test "$BLUETOOTH_ENABLED" = 0; then
log_progress_msg "disabled. see /etc/default/bluetooth"
log_end_msg 0
exit 0
fi
start-stop-daemon --start --background $SSD_OPTIONS
log_progress_msg "${DAEMON##*/}"
run_sdptool || :
if test "$HID2HCI_ENABLED" = 1; then
enable_hci_input
fi
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping $DESC"
if test "$BLUETOOTH_ENABLED" = 0; then
log_progress_msg "disabled."
log_end_msg 0
exit 0
fi
if test "$HID2HCI_UNDO" = 1; then
disable_hci_input
fi
start-stop-daemon --stop $SSD_OPTIONS
log_progress_msg "${DAEMON}"
log_end_msg 0
;;
Existe-t-il quelque chose que je peux exécuter à partir d'ici qui me permettra de réinitialiser uniquement la souris et non le sous-système entier?
Comme je l'ai mentionné plus tôt, cela se produit plus que de sortir de la suspension. Par conséquent, j'ai besoin que la solution fonctionne après ma sortie de la suspension, mais je peux également le faire manuellement lorsque l'économie d'énergie est activée sans aller jusqu'au bout.
Comme @ WinEunuuchs2Unix et moi sommes venus dans les commentaires, la solution la plus simple est de simplement redémarrer le bluetooth en utilisant Sudo services bluetooth restart
. Cela supprime et fait apparaître le bluetooth et réactive le défilement de la souris. Devant le faire en ligne de commande tout le temps était un peu ennuyeux, alors j'ai décidé de me faciliter les choses.
Suite aux informations trouvées ici , j'ai créé le script dans /usr/local/sbin/restart_bluetooth.sh
Avec le contenu suivant.
#!/bin/bash
service bluetooth restart
Cela peut être exécuté sans mot de passe en modifiant le fichier sudoers à l'aide de Sudo visudo
. Après la ligne %Sudo ALL=(ALL:ALL) ALL
, j'ai ajouté les informations pour le script, en utilisant mon nom d'utilisateur.
username ALL=(ALL) NOPASSWD: /usr/local/sbin/restart_bluetooth.sh
Maintenant que j'ai un script qui ne nécessite pas de mot de passe. J'ai installé une icône sur mon lanceur en utilisant ce guide en installant gnome-desktop-item-edit
En utilisant la commande Sudo apt install --no-install-recommends gnome-panel
. J'ai ensuite créé un nouveau fichier .desktop en exécutant gnome-desktop-item-edit ~/Desktop/ --create-new
. Le fichier .desktop final ressemble à ceci.
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/usr/share/icons/ubuntu-mono-dark/status/24/bluetooth-active.svg
Name[en_US]=Restart Bluetooth
Comment[en_US]=Restarts bluetooth service to fix scrolling issue.
Exec=Sudo /usr/local/sbin/restart_bluetooth.sh
Comment=Restarts bluetooth service to fix scrolling issue.
Name=Restart Bluetooth
Icon=bluetooth
Maintenant, je peux résoudre le problème en un seul clic après avoir fait de l'icône un favori sur mon lanceur.
Je veux juste m'attaquer à votre propre réponse, car certains pourraient préférer une approche plus automatisée à cela. Donc depuis le début:
Créer un script /usr/local/sbin/restart-bluetooth.sh
#!/bin/bash
service bluetooth restart
Ensuite (à partir de Answer ) créez un script dans le répertoire sleep /lib/systemd/system-sleep/00restart-bluetooth.sh
#!/bin/sh
if [ $1 = post ] && [ $2 = suspend ]
then /usr/local/sbin/restart-bluetooh.sh
fi
Assurez-vous ensuite que le script est exécutable
chmod a+x /lib/systemd/system-sleep/00restart-bluetooh.sh
Cela fonctionne à chaque fois que vous réveillez votre machine. Cependant, je n'ai pas essayé avec le verrouillage du mot de passe désactivé.