Команда на спящий дисплей OSX - PullRequest
5 голосов
/ 06 августа 2009

Есть ли команда / API на OS X для перевода монитора в спящий режим?

Под спящим режимом я имею в виду полностью убить вывод на монитор. Я знаю, что в настройках питания это можно настроить, но это зависит от времени.

Ответы [ 3 ]

17 голосов
/ 01 февраля 2011

Это можно сделать с помощью недокументированного 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

Документация IOKit

8 голосов
/ 07 августа 2009

Программно или как пользователь?

Для последнего, Control + Shift + Eject.

6 голосов
/ 16 апреля 2015

Протестировано в OS X 10.9.5, вы можете перевести дисплей в спящий режим с помощью следующей команды:

$ pmset displaysleepnow

Предостережение : В настоящее время в OS X 10.9.5 есть ошибка (правда, небольшая досада) в спящем дисплее, которую я обнаружил при использовании действия спящего дисплея в LaunchBar. При вызове этой команды (действия или терминала) последней нажатой клавишей всегда является Return , поэтому, похоже, эта клавиша «застревает» при пробуждении дисплея. Вы, вероятно, никогда этого не заметите, но если использовать какое-либо двойное нажатие клавиши-модификатора для вызова LaunchBar или другого приложения (в моем случае Double Cmd ), эта комбинация клавиш не будет работать, пока вы не нажмете Верните снова, чтобы «отпустить» его после пробуждения дисплея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...