怎么获取笔记本电脑的睡眠和唤醒事件?

由本社区发起的开源项目
回复
luzhlon
帖子: 4
注册时间: 2014-04-08 0:22
系统: windows7
送出感谢: 0
接收感谢: 0

怎么获取笔记本电脑的睡眠和唤醒事件?

#1

帖子 luzhlon » 2016-09-06 12:13

需求场景是这样的:
我有一个无线键盘,笔记本上需要插相应的USB接收器,我希望可以不用的时候合上笔记本盖子直接让系统睡眠,但是如果不小心按到无线键盘的话会使系统唤醒,而且我还不想来回插拔接收器,就是让它一直插在那,想做一个程序实现在系统睡眠/唤醒的时候自动禁用/启用无线键盘。

我已经知道的:
1. 可以通过xinput命令启用/禁用无线键盘
2. 在系统睡眠前org.freedesktop.login1.Manager会通过dbus发送PrepareForSleep信号

现在就缺一个知道何时系统唤醒的事件了,哪位大神可以指点一下? 或者提供点相关的资料,小菜将不胜感激~~~
头像
vickycq
论坛版主
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
送出感谢: 100 次
接收感谢: 995 次
联系:

Re: 怎么获取笔记本电脑的睡眠和唤醒事件?

#2

帖子 vickycq » 2016-09-06 12:24

luzhlon 写了:但是如果不小心按到无线键盘的话会使系统唤醒
方法一:使用 pm-suspend 或 systemctl suspend 待机,撰写钩子
方法二:禁用相应 USB 插座的唤醒功能

可挑选其一或另择他法。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
luzhlon
帖子: 4
注册时间: 2014-04-08 0:22
系统: windows7
送出感谢: 0
接收感谢: 0

Re: 怎么获取笔记本电脑的睡眠和唤醒事件?

#3

帖子 luzhlon » 2016-09-07 14:45

vickycq 写了:
luzhlon 写了:但是如果不小心按到无线键盘的话会使系统唤醒
方法一:使用 pm-suspend 或 systemctl suspend 待机,撰写钩子
方法二:禁用相应 USB 插座的唤醒功能

可挑选其一或另择他法。
感觉方法二比较简单一些,请问怎么禁用相应的USB唤醒功能? 我在BIOS里看到一个USE WAKE SUPPORT,已经禁用了,可是不管用;系统设置里也没找到相关的选项。
头像
vickycq
论坛版主
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
送出感谢: 100 次
接收感谢: 995 次
联系:

Re: 怎么获取笔记本电脑的睡眠和唤醒事件?

#4

帖子 vickycq » 2016-09-07 15:12

luzhlon 写了:感觉方法二比较简单一些,请问怎么禁用相应的USB唤醒功能?
先运行以下指令查看支持唤醒的设备

代码: 全选

$ cat /proc/acpi/wakeup
例 在试验机上运行结果如下
Device S-state Status Sysfs node
GPP0 S4 *disabled pci:0000:00:02.2
GPP1 S4 *disabled pci:0000:00:02.3
GPP2 S4 *disabled
GPP3 S4 *disabled pci:0000:00:02.5
GFX S4 *disabled
XHC0 S3 *enabled pci:0000:00:10.0
OHC1 S3 *enabled pci:0000:00:12.0
EHC2 S3 *enabled pci:0000:00:13.2
OHC3 S3 *disabled
EHC3 S3 *disabled
SBAZ S4 *disabled pci:0000:00:14.2
LID S4 *enabled platform:PNP0C0D:0
试验机有2个 USB 3.0 接口,1个 USB2.0 接口,通过插拔设备实验并观察系统日志,确定 1个 USB 2.0 接口为 pci:0000:00:12.0 (OHC1),2个 USB 3.0 接口为 pci:0000:00:10.0 (XHC0)
因此改变 OHC1 和 XHC0 的状态即可。

代码: 全选

echo "OHC1" | sudo tee /proc/acpi/wakeup
echo "XHC0" | sudo tee /proc/acpi/wakeup
若重新启动计算机后恢复原状,只能将相关命令加入开机自启,令其开机时自动设置
编辑 /etc/rc.local 在 exit 0 之前加入

代码: 全选

echo "OHC1" > /proc/acpi/wakeup
echo "XHC0" > /proc/acpi/wakeup
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
回复

回到 “开源小工具”