2013-04-21 19 views
13

Sto provando a scrivere una semplice applicazione Cocoa per Mac per un semplice scopo: passare l'input del monitor Dell a un altro (in modo che possa passare tra PC e MAC). Ho già trovato un'applicazione per Windows che lo fa (MControl da entechtaiwan), e spiegano cosa fanno là dentro:.Invio di comandi MCCS su Cocoa

"per passare gli ingressi via software si utilizza il comando 60h VESA MCCS Per inviare il comando a il monitor, dovrai leggere e scrivere sui pad di I/O della GPU che si collegano al monitor, idem sul Mac. "

Qualcuno sa come posso inviare un comando da un'app Cocoa? Forse c'è una libreria per quello ... non dovrebbe essere abbastanza semplice?

+0

Probabilmente qualcosa a che fare con I/O Kit, anche se non ne so abbastanza sul kit I/O in generale o su questa attività in particolare per ottenere una risposta adeguata. È anche possibile che ci sia un'API in I/O Kit o (improbabile ma che valga la pena controllare) i servizi di visualizzazione al quarzo che incapsulano questa attività, dicendo al monitor di cambiare input, senza che tu debba preoccuparti dei dettagli di implementazione. –

+0

Ci sono alcune citazioni di MCCS in http://www.opensource.apple.com/source/IOGraphics/IOGraphics-468/IOGraphicsFamily/ ma principalmente sugli interrupt di MCCS - che indicano la ricezione di eventi MCCS, non la generazione. C'è anche un '/ System/Library/Extensions/AppleMCCSControl.kext' ma questo è closed source e non ho idea di cosa faccia o se offra un'interfaccia interessante. Potresti provare a esaminare l'output da 'nm -U /System/Library/Extensions/AppleMCCSControl.kext/Contents/MacOS/AppleMCCSControl | C++ filt | meno' – pmdj

+0

Non so molto delle porte di visualizzazione ma se MCCS ha qualcosa a che fare con I2C, quell'aspetto può essere sicuramente controllato tramite IOKit. – pmdj

risposta

2

sembra che ci sia un'implementazione per Linux a: http://ddccontrol.sourceforge.net

utilizza il <sys/msg.h> api. Sembra che non ci siano pagine man per quell'api ma è disponibile su mac. Non ho provato a compilare lo strumento ddccontrol, ma sembra il più vicino possibile e dovrebbe essere un buon punto di partenza.