如何在OSX 10.7.4中从显示器睡眠中唤醒?

时间:2012-05-15 10:29:16

标签: macos power-management

在OSX Lion的最新版本中,您如何从显示器睡眠中唤醒机器?这是对网络活动的回应。

在10.7.3中,通过以下调用可以实现这一点:

IOPMAssertionID id = 0;
IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
                            kIOPMAssertionLevelOn, reason, &id)

但是,这在10.7.4中不起作用。可以做些什么呢?

2 个答案:

答案 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命令行实用程序:)