在OSX Lion的最新版本中,您如何从显示器睡眠中唤醒机器?这是对网络活动的回应。
在10.7.3中,通过以下调用可以实现这一点:
IOPMAssertionID id = 0;
IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
kIOPMAssertionLevelOn, reason, &id)
但是,这在10.7.4中不起作用。可以做些什么呢?
答案 0 :(得分:1)
我尚未测试性能影响以及与空闲计时器本身的交互,但是:
io_registry_entry_t regEntry = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler");
if (regEntry != MACH_PORT_NULL) {
IORegistryEntrySetCFProperty(regEntry, CFSTR("IORequestIdle"), kCFBooleanFalse);
IOObjectRelease(regEntry);
}
在10.7.4中工作以将屏幕从空闲状态唤醒。
答案 1 :(得分:0)
从docs出现的方式是醒来"这几天的展示是:
IOPMAssertionID assertionID2;
IOPMAssertionDeclareUserActivity(CFSTR("Your reasoning"),
kIOPMUserActiveLocal, &assertionID2);
仅IOPMAssertionCreateWithName(...)
原始问题"阻止显示进入睡眠状态"如果它已经在上(虽然它确实有用,也可以用来阻止它 在duration时间内休眠。)
docs方法保持"保持"显示的工作方式与IOPMAssertionCreateWithName
IOPMAssertionID m_disableDisplaySleepAssertion;
IOReturn success2 = IOPMAssertionCreateWithDescription(
kIOPMAssertionTypePreventUserIdleDisplaySleep, reasonForActivity, NULL, NULL, NULL, 0, NULL, &m_disableDisplaySleepAssertion);
if (success2 == kIOReturnSuccess) {
// screen will stay on, do you work
success = IOPMAssertionRelease(m_disableDisplaySleepAssertion);
}
如果你想"打开它并永远保持它"然后是IOPMAssertionDeclareUserActivity
,然后是上面的内容,或者只是一遍又一遍地调用IOPMAssertionDeclareUserActivity
。
您也可以调用我想的caffeinate
命令行实用程序:)