2013-06-25 1 views
5

Ich versuche, ein kleines Objective-C-Befehlszeilenwerkzeug zu schreiben, das die Drehung einer bestimmten Anzeige anpasst.Programmatische Änderung der Bildschirmdrehung unter Mac OS mit Xcode

Leider kann ich keine Referenz in Apples Dokumentation finden, die sagt, wie man die Rotation ändert (abgesehen davon, es zu bekommen). Ich denke, es muss mit CGDisplayModeRef getan werden, aber ich kann nicht herausfinden, wie. Jede Hilfe wäre willkommen!

Antwort

4

Extrahiert von https://github.com/CdLbB/fb-rotate - es scheint IOKit kann den Job tun, obwohl das Verhalten für mich ein bisschen seltsam scheint. Auf den Punkt gebracht:

io_service_t service = CGDisplayIOServicePort(myDisplayID); //IOKit Handle (get myDisplayID yourself) 
IOOptionBits options = (0x00000400 | (kIOScaleRotate90) << 16) //Some undocumented hex'ing 
IOServiceRequestProbe(service, options); //Set rotation to display 

Vergessen Sie nicht, gegen IOKit zu verknüpfen.

+0

Unter OS X 10.10 konnte ich mit dem Programm das interne Display drehen und das Hauptdisplay auf den anderen Monitor einstellen, aber den anderen Monitor nicht drehen, auch wenn es auf main eingestellt war. –

+0

Ist es möglich, in andere Winkel als 0, 90, 180, 270 zu drehen? – Harry

+1

@Harry Wenn Sie eine Leinwand betrachten (zum Zeichnen), können Sie diese frei drehen, aber das Display selbst ist auf diese vier definierten Winkel beschränkt. Die Konstanten sind kIOScaleRotate0, kIOScaleRotate90, kIOScaleRotate180 und kIOScaleRotate270. – Andreas