web-dev-qa-db-ja.com

Ubuntu 19.04を一時停止した後、Microsoft Arc Mouse(Bluetooth)がスクロールを停止する

編集:これは、最初に述べたよりも複雑です。サスペンド時にスクロール機能が失われるだけでなく、システムが省電力を開始したときにも失われます。私は無駄に省電力オプションをいじった。以下の回答で投稿する解決策を見つけました。

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
  ;;

ここから実行できるサブシステム全体ではなく、マウスだけをリセットできるものはありますか?

4
RaidPinata

先に述べたように、これは一時停止から抜け出すだけではありません。したがって、サスペンドが解除された後に機能するソリューションが必要ですが、パワーセーブがアクティブ化されたときに、サスペンドを完全に行わなくても手動で実行できるソリューションが必要です。

@ 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
_

これで、ランチャーでアイコンをお気に入りにした後、シングルクリックで問題を修正できます。

2
RaidPinata

より自動化されたアプローチを好む人もいるかもしれないので、私はあなた自身の答えに取り組みたいと思います。最初から:

スクリプトを作成/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

これは、マシンを起動するたびに機能します。ただし、パスワードロック画面を無効にして試したことはありません。

3
Kevin Garubba