編集:これは、最初に述べたよりも複雑です。サスペンド時にスクロール機能が失われるだけでなく、システムが省電力を開始したときにも失われます。私は無駄に省電力オプションをいじった。以下の回答で投稿する解決策を見つけました。
Dellラップトップ(Latitude 1790)にUbuntu 19.04をインストールしましたが、Microsoft Arc Mouseを使用しています。ラップトップが一時停止してから再開すると、Arc Mouseは引き続き機能しますが、スクロールはタッチ面で機能しなくなります。
ラップトップを再起動すると、スクロールが再び有効になります。ただし、Bluetoothを停止して再起動し、マウスを再度ペアリングしても、スクロールは再度有効になりません。
この質問に関連する何かが問題を解決するかもしれないと思います:
一時停止後にスクロールが機能せず、永続的な解決策を探しています
残念ながら、スクリプトに入れてデバイスを再プローブし、スクロールを再開するマウスデバイスを決定する方法がわかりません。誰かがデバイスを決定する方法を教えてもらえますか?または、この問題を解決する別のアプローチはありますか?
私はlsmodを調べましたが、明確なものはありません。 Bluetoothについて言及している2行です。
bluetooth 557056 43 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic 28672 2 bluetooth
上記またはbtを含むすべてのlsmodデバイスを以下に示します。
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
ラップトップにもタッチパッドがあり、一時停止後もタッチパッドでスクロールが機能し続けます。これは、問題がArc Mouseに限定されていることを意味すると思います。
少し掘り下げてみると、/ etc/init.d /にはサービスのスクリプトが含まれており、/ etc/init.d/bluetoothはbluetoothサービスを起動およびシャットダウンするスクリプトです。これは関連する部分のようです。
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
;;
ここから実行できるサブシステム全体ではなく、マウスだけをリセットできるものはありますか?
先に述べたように、これは一時停止から抜け出すだけではありません。したがって、サスペンドが解除された後に機能するソリューションが必要ですが、パワーセーブがアクティブ化されたときに、サスペンドを完全に行わなくても手動で実行できるソリューションが必要です。
@ WinEunuuchs2Unixと私がコメントで触れたように、最も簡単な解決策は、_Sudo services bluetooth restart
_を使用してBluetoothを再起動することです。これにより、Bluetoothが停止して起動し、マウスのスクロールが再び有効になります。コマンドラインで常にこれを実行する必要があるのはちょっと面倒だったので、自分で少し簡単にすることにしました。
見つかった情報 here に従って、_/usr/local/sbin/restart_bluetooth.sh
_に次の内容のスクリプトを作成しました。
_#!/bin/bash
service bluetooth restart
_
これは、_Sudo visudo
_を使用してsudoersファイルを編集することにより、パスワードなしで実行できます。 %Sudo ALL=(ALL:ALL) ALL
という行の後に、ユーザー名を使用してスクリプトの情報を追加しました。
_username ALL=(ALL) NOPASSWD: /usr/local/sbin/restart_bluetooth.sh
_
これで、パスワードを必要としない作業スクリプトが作成されました。 __gnome-desktop-item-edit
_をコマンド_Sudo apt install --no-install-recommends gnome-panel
_を使用してインストールすることにより、 このガイド を使用してランチャーにアイコンを設定しました。次に、_gnome-desktop-item-edit ~/Desktop/ --create-new
_を実行して新しい.desktopファイルを作成しました。最終的な.desktopファイルは次のようになります。
_[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
_
これで、ランチャーでアイコンをお気に入りにした後、シングルクリックで問題を修正できます。
より自動化されたアプローチを好む人もいるかもしれないので、私はあなた自身の答えに取り組みたいと思います。最初から:
スクリプトを作成/usr/local/sbin/restart-bluetooth.sh
#!/bin/bash
service bluetooth restart
次に(from Answer )スリープディレクトリにスクリプトを作成します/lib/systemd/system-sleep/00restart-bluetooth.sh
#!/bin/sh
if [ $1 = post ] && [ $2 = suspend ]
then /usr/local/sbin/restart-bluetooh.sh
fi
次に、スクリプトが実行可能であることを確認します
chmod a+x /lib/systemd/system-sleep/00restart-bluetooh.sh
これは、マシンを起動するたびに機能します。ただし、パスワードロック画面を無効にして試したことはありません。