Answers:
以其他答案为基础,给出大部分/所有难题,但不能给出完整的解决方案:
Bluetooth
→交通Advanced…
→交通Allow Bluetooth devices to wake this computer
)安装一个帮助程序以检查系统是否处于睡眠状态(如果您只想区分打开/关闭而没有Mac处于睡眠状态的机盖,则目前似乎没有简便的方法–即我没有找到检测方法),然后切换蓝牙取决于睡眠/唤醒事件。
另请参阅有关“ 根据当前网络自动打开或关闭蓝牙(运行Lion的MBP) ”的帖子,其中提到ControlPlane
blueutil power 0
睡觉时奔跑
而blueutil power 1
在唤醒
现在,我对这个问题的贡献:如果电源打p导致唤醒事件,请尝试以下脚本进行唤醒,以区分其他唤醒原因和盖子打开:
#!/bin/bash
limitSec=3
currentEpoch=$(date "+%s")
wakeEpoch=$(cat /var/log/system.log | grep LidOpen | tail -n 1 | date -j -f "%b %d %T" "$(cut -c1-15)" "+%s")
wakeSeconds=$(( $currentEpoch - $wakeEpoch ))
if [[ $wakeSeconds -lt $limitSec ]]; then
logger "Enabling bluetooth again due to lid open"
blueutil power 1
fi
它将超时设置为3秒(limitSec),使用来获取当前时间和最后一次唤醒时间Wake reason: EC.lidOpen
,如果还不到3秒,它将重新启用蓝牙
与@iolsmit相似,我创建了一个脚本,该脚本下载并配置blueutil
并sleepwatcher
在机器进入睡眠状态时禁用蓝牙,然后在机器唤醒时重新启用蓝牙。
https://github.com/alb12-la/KBOS
只需下载自制软件,然后bash setup.sh
从repo目录运行即可。