如何在OSX中获取监视器EDID?

时间:2016-07-02 04:29:28

标签: xamarin pinvoke iokit xamarin.mac edid

我想在OSX中提取EDID信息吗?

它看起来像是存储在IORegistry中。有没有办法使用当前的monomac库访问它?我可以使用标准interop执行此操作,还是需要编写自定义shim

看起来ioreg命令行也可以获得IODisplay EDID属性,但似乎并不是获取设备缩写列表的简单方法。

4 个答案:

答案 0 :(得分:2)

遗憾的是,没有现成的解决方案。

首先,您要下载“ edid-decode”程序。不幸的是,它无法通过自制软件使用,因此您必须从https://git.linuxtv.org/edid-decode.git/https://github.com/timvideos/edid-decode下载。幸运的是,它只是一个.c文件,因此您只需键入“ make”。 (在不编辑Makefile中的bindir和mandir的情况下,请勿执行“ make install”操作)。将生成的二进制文件放入路径中。

然后执行ioreg -lw0 -r -c "IODisplayConnect" -d 2 | grep IODisplayEDID(对@Steven表示感谢)以十六进制形式获取所有监视器的EDID数据。

选择一个输出,将十六进制字符串复制到剪贴板,然后执行pbpaste | edid-decode

答案 1 :(得分:2)

for theedid in $(ioreg -lw0 -r -c "IODisplayConnect" -d 2 | grep IODisplayEDID | sed -E "/^.*<(.*)>/s//\1/"); do edid-decode <<< $theedid; done

任何看起来像 edid 的东西:

for theedid in $(ioreg -lw0 | grep '<00ffffffffffff' | sed -E "/^.*<(.*)>/s//\1/"); do edid-decode <<< $theedid; done

或:

ioreg -lrw0 -c "IODisplayConnect" -d2 | sed -nE '/^.*"IODisplayEDID" = <(.*)>/s//edid-decode <<< \1/p'

答案 2 :(得分:0)

如果要检查EDID文本,请尝试

ioreg -lw0 -r -c "IODisplayConnect" -n "display0" -d 2 | grep IODisplayEDID | sed "/[^<]*</s///" | xxd -p -r | strings -6

答案 3 :(得分:-1)

sudo ioreg -l | grep IODisplayEDID