2009-08-06 5 views
5

Existe-t-il une commande/API sur OS X pour mettre le moniteur en mode veille?Commande de mise en veille Affichage OSX

En mode veille, je veux dire tuer complètement la sortie sur le moniteur. Je sais dans les paramètres de puissance, on peut configurer cela, mais c'est basé sur le temps.

Répondre

16

Cela peut être fait avec une API semi-non documentée.

#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; 
} 

Drapeaux GCC: -framework CoreFoundation -framework IOKIT

IOKit Documentation

+0

version compilée peut être trouvé ici: http://www.malcolmhall.com/products/sleepdisplay/ – rogerdpack

+2

Pouvez-vous cibler un affichage dans un système multi-affichage? Cela semble dormir tous les affichages. – regulus6633

+0

regulus6633: Je ne pense pas. Ceci demande simplement au système d'exploitation de mettre les moniteurs en veille. Si vous en endormez un, il se réveillera instantanément lorsque vous ferez quelque chose de l'autre. Votre meilleur pari serait de désactiver le deuxième moniteur dans l'affichage de prefs->. – Tarrant

8

Par programme ou en tant qu'utilisateur?

Pour ce dernier, Control + Shift + Eject.

+0

Ouais à la recherche d'une solution programmatique – mikeycgto

6

Testé OS X 10.9.5, vous pouvez mettre l'écran en veille avec la commande suivante:

$ pmset displaysleepnow 

caveat : Actuellement, il y a un bug (petit ennui, vraiment) dans le sommeil de l'affichage, dans OS X 10.9.5, que j'ai trouvé w si vous utilisez une action d'affichage du sommeil dans LaunchBar. En appelant cette commande (action ou terminal), la dernière touche enfoncée est toujours Retourne, donc cette touche semble être "bloquée" lorsque vous réveillez l'affichage. Vous ne le remarquerez probablement jamais mais si vous utilisez une sorte de touche de modification double pour invoquer LaunchBar ou une autre application (dans mon cas, Double Cmd), cette combinaison de touches ne fonctionnera pas tant que vous n'appuyez pas sur Retournez à "Relâchez", après avoir réveillé l'affichage.

Questions connexes