在OS X上有没有一个命令/API可以将显示器置于睡眠模式?
所谓的睡眠模式是指完全关闭对显示器的输出。我知道在电源设置中可以配置这个功能,但那是基于时间的。
在OS X上有没有一个命令/API可以将显示器置于睡眠模式?
所谓的睡眠模式是指完全关闭对显示器的输出。我知道在电源设置中可以配置这个功能,但那是基于时间的。
这可以通过使用半文档化的API来完成。
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>
/* Returns 0 on success and 1 on failure. */
int display_sleep(void)
{
io_registry_entry_t reg = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler");
if (reg) {
IORegistryEntrySetCFProperty(reg, CFSTR("IORequestIdle"), kCFBooleanTrue);
IOObjectRelease(reg);
} else {
return 1;
}
return 0;
}
GCC标志:-framework CoreFoundation -framework IOKIT
在OS X 10.9.5中测试,您可以使用以下命令将显示器置于睡眠状态:
$ pmset displaysleepnow
注意:目前在 OS X 10.9.5 中,睡眠显示存在一个小问题(真的只是个小烦恼),我在使用 LaunchBar 的睡眠显示操作时发现了这个问题。通过调用此命令(操作或终端),最后按下的键始终是 Return,因此当您唤醒显示器时,该键似乎会被“卡住”。您可能永远不会注意到它,但如果使用某种双修饰键敲击来调用 LaunchBar 或其他应用程序(在我的情况下,是 Double Cmd),则此键组合在唤醒显示器后将无法正常工作,直到您再次按下 Return 来“释放”它。
是以编程方式还是作为用户?
对于后者,可以使用 Control+Shift+Eject 快捷键。