在Cocoa上发送MCCS命令

15

我正试图编写一款简单的Cocoa应用程序,目的很简单:将我的Dell显示器输入切换到另一个(这样我就可以在PC和MAC之间切换)。我已经找到了一个Windows应用程序(entechtaiwan的mControl),他们在里面解释了他们做了什么:

“要通过软件切换输入,您使用VESA MCCS命令60h。要向显示器发送该命令,您需要读取和写入连接到显示器的GPU I/O垫。Mac上同理。”

有人知道如何从Cocoa应用程序发送这样的命令吗?也许有一个库可以做到这一点…难道不应该很简单吗?


可能与I/O Kit有关,但我对I/O Kit一般或这个任务特别了解不足,无法给出正确的答案。也有可能在I/O Kit中或(不太可能但值得检查)Quartz Display Services中存在一个API,封装了这个任务-告诉显示器切换输入-而无需担心实现细节。 - Peter Hosey
在http://www.opensource.apple.com/source/IOGraphics/IOGraphics-468/IOGraphicsFamily/中提到了MCCS,但主要是关于MCCS中断的 - 这表明接收MCCS事件,而不是生成它们。还有一个/System/Library/Extensions/AppleMCCSControl.kext,但它是闭源的,我不知道它做什么或者它是否提供了一个有趣的接口。您可以尝试查看nm -U /System/Library/Extensions/AppleMCCSControl.kext/Contents/MacOS/AppleMCCSControl | c++filt | less的输出。 - pmdj
我对显示端口不是很了解,但如果MCCS与I2C有关,那么这方面肯定可以通过IOKit进行控制。 - pmdj
2个回答

3

在这里,似乎有一个Linux的实现:http://ddccontrol.sourceforge.net

它使用了<sys/msg.h> api。看起来,没有这个api的man-pages,但它在mac上可用。我还没有尝试编译ddccontrol工具,但它看起来是最接近你可以得到的,并且应该是一个很好的起点。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接