キーボードまたはマウスを使用してシステムをウェイクアップしたいのですが。これは、/ proc/acpi/wakeupおよび単純な方法で実行できます。
echo DEVNAME > /proc/acpi/wakeup
私のウェイクアップファイルは次のようになります
Device S-state Status Sysfs node
---------------------------------------
1. P0P2 S4 *disabled pci:0000:00:01.0
2. P0P3 S4 *disabled
3. P0P1 S4 *disabled pci:0000:00:1e.0
4. UAR1 S4 *disabled pnp:00:0c
5. EUSB S4 *disabled pci:0000:00:1d.7
6. USBE S4 *disabled pci:0000:00:1a.7
7. P0P5 S4 *disabled
8. P0P6 S4 *disabled
9. P0P7 S4 *disabled
10. P0P8 S4 *disabled pci:0000:00:1c.4
11. P0P9 S4 *disabled pci:0000:00:1c.5
12. GBEC S4 *disabled
13. USB0 S4 *disabled pci:0000:00:1d.0
14. USB1 S4 *disabled pci:0000:00:1d.1
15. USB2 S4 *disabled pci:0000:00:1d.2
16. USB3 S4 *disabled
17. USB4 S4 *disabled pci:0000:00:1a.0
18. USB5 S4 *disabled pci:0000:00:1a.1
19. USB6 S4 *disabled pci:0000:00:1a.2
20. P0P4 S4 *disabled pci:0000:00:1c.0
私の質問は:どの(USB)デバイスが私のマウス/キーボードに属しているかを知るにはどうすればよいですか?lsusbで失敗しましたこれまでのところ、しかし多分私はちょうど正しいスイッチを逃しました。
わかりました、私は方法を見つけました、しかしそれはあまりきれいに見えません;)
私は最後から始めます-このワンライナーを実行すると真実がわかります:
grep "USB.*pci" /proc/acpi/wakeup |\
cut -d ':' -f 2- |\
while read aaa; do \
find /dev/.udev \
-name "*$aaa*" \
-print \
-exec grep "$aaa" /proc/acpi/wakeup \; -exec echo \; ;\
done
いいですね。そして、これがどのように機能するかです:
grep "USB.*" /proc/acpi/wakeup
は、既知のsysfsノードを持つUSBデバイスのみをリストから抽出します。cut -d ':' -f 2-
は、各行の「pci:」の後に末尾(数字)だけを残します。aaa=0000:00:1d.2
など)について、文字列を含むdevデバイスのシンボリックリンクを見つけてください。/proc/acpi/wakeup
からの行を表示します。したがって、udevによるデバイスシンボリックリンクの意味のある命名のおかげで、どのUSBデバイスがキーボードやマウスなどであるかを知ることができます。
grep `ls /dev/input/by-path/*-mouse |\
head -1 |\
cut -d- -f 3` /proc/acpi/wakeup |\
gawk '{print $1}'
これにより、マウスの入力デバイスが検索され、/ proc/acpi/wakeupでPCIIDが検索され、名前が示されます。実際、そのデバイスからのウェイクアップを有効にするために、そのコマンドの出力を/ proc/acpi/wakeupにリダイレクトするだけで済みます。