2013-04-21 24 views
13

Próbuję napisać prostą aplikację Cocoa dla komputerów Mac w jednym prostym celu: przełączając moje wejście monitora Dell na inny (dzięki czemu mogę przełączać się między komputerem a MAC). I już znaleźć aplikację dla Windows, który to robi (mControl przez entechtaiwan) oraz wyjaśniają, co robią tam.Wysyłanie komend MCCS na kakao

„Aby przełączać wejścia za pomocą oprogramowania użyć polecenia 60h VESA MCCS Aby wysłać tę komendę monitor, będziesz musiał czytać i pisać na klockach wejścia/wyjścia GPU, które łączą się z monitorem. Ditto na Macu. "

Czy ktoś wie, w jaki sposób mogę wysłać takie polecenie z aplikacji Cocoa? Może jest na to biblioteka ... czy nie powinno to być proste?

+0

Prawdopodobnie ma to coś wspólnego z zestawem I/O Kit, chociaż nie wiem wystarczająco dużo o zestawie I/O Kit ani o tym, co należy zrobić, aby uzyskać właściwą odpowiedź. Możliwe jest również, że w zestawie I/O lub (nieprawdopodobne, ale warte sprawdzenia) może być dostępna funkcja API Quartz Display Services, która zawiera w sobie to zadanie - nakazując monitorowi przełączanie wejść - bez martwienia się o szczegóły implementacji. –

+0

Jest kilka wzmianek o MCCS w http://www.opensource.apple.com/source/IOGraphics/IOGraphics-468/IOGraphicsFamily/, ale głównie o przerwaniach MCCS - które wskazywałyby na odbieranie zdarzeń MCCS, a nie generowanie ich. Istnieje również '/ System/Library/Extensions/AppleMCCSControl.kext', ale to zamknięte źródło i nie mam pojęcia, co robi lub jeśli oferuje interesujący interfejs. Możesz spróbować poringować wyjście z 'nm -U /System/Library/Extensions/AppleMCCSControl.kext/Contents/MacOS/AppleMCCSControl | C++ filt | mniej ' – pmdj

+0

Nie wiem zbyt wiele o portach wyświetlania, ale jeśli MCCS ma coś wspólnego z I2C, to aspekt ten może być kontrolowany przez IOKit. – pmdj

Odpowiedz

2

wydaje się, że implementacja dla systemu Linux pod adresem: http://ddccontrol.sourceforge.net

używa <sys/msg.h> API. Wydaje się, że nie ma stron podręcznika dla tego interfejsu API, ale jest on dostępny na komputerze Mac. Nie próbowałem skompilować narzędzia ddccontrol, ale wygląda na to, że najbliżej można uzyskać i powinien to być dobry punkt wyjścia.