休止状態後にタッチパッドが機能しない

休止状態後にタッチパッドが機能しない

私は最新のArch/Antergos Linuxを使用しています。

休止状態から再開した後、タッチパッドが動作を停止しました。影響を受けたと思います。これsudo rmmod i2c_hid; modprobe i2c_hidバグがあるため、タッチパッドを再び動作状態に戻すには、復元するたびに入力する必要があります。

休止状態で再起動したときに実行するスクリプトを追加してfix-touchpad.shプロセスを自動化してみました。/usr/lib/systemd/system-sleep

#!/bin/sh
if [ $1 = post ]
then
    rmmod i2c_hid
    modprobe i2c_hid
fi

スクリプトは起動時に実行され、前後echo "something" > log.logと前後をテストしました。しかし、タッチパッドが正常に戻っていません。iffi

また、復元後にスクリプトを正常にテストしましたが、sh fix-touchpad.sh post驚いたことにタッチパッドが再び目覚めました。

回復プロセスの一環としてタッチパッドが実行されたときにスクリプトがタッチパッドを変更しないのはなぜですか?

タッチパッドを修正する他の方法はありますか?

答え1

理由はわかりませんが、問題は、休止状態から戻るときにモジュールを削除して追加しようとすることです。

ソリューション1

私はあなたと同じ問題があり、休止状態fix-touchpad.shの前にモジュールを削除し、休止状態の後に再度追加するまで、スクリプトは機能しませんでした。

本社所在地この回答Fedoraフォーラムでは、次のようになります。

$ cat /usr/lib/systemd/system-sleep/fix-touchpad.sh
#!/bin/bash
[ "$1" = "pre" ] && modprobe -r i2c_hid
[ "$1" = "post" ] && modprobe i2c_hid
exit 0

ソリューション2

また、休止状態/再開でコードを実行する別の方法を見つけました。また、休止状態の前にモジュールを取り外した場合にのみ機能します。。 Arch Wikipediaに記載されているように電源管理 #SleepHook、睡眠サービスによってトリガされるシステムサービスを作成できます。

Wikiの説明によると、次の結論に達しました。

$ cat /etc/systemd/system/root-resume.service
[Unit]
Description=(un)load module i2c_hid when going to/from sleep
Before=sleep.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=modprobe -r i2c_hid
ExecStop=modprobe i2c_hid

[Install]
WantedBy=sleep.target

を通じてサービスを有効にする必要がありますsystemd enable root-resume。 ExecStartは以前に実行され、sleep.targetExecStopは再開時に実行されます。

解決策3

systemd-suspend-modulesパッケージを見る尿素尿の割合。デフォルトで実行されるサービスを定義します。ソリューション1ユーザープロファイルにリストされている各モジュールについて。 「与えられたモジュールとそれに依存するすべてのモジュールを再帰的にアンロード」するので、他のモジュールに適しています(https://github.com/parkouss/systemd-suspens-modules/blob/master/suspens-modules#L19)。

関連情報