如何通过编程方式区分Xsun和Xorg?

时间:2009-06-23 11:33:40

标签: xorg

VendorString()不起作用,它始终是Sun Microsystems,即使它是为Solaris构建的Xorg。

3 个答案:

答案 0 :(得分:2)

$ xdpyinfo | grep vendor
vendor string:    The X.Org Foundation
vendor release number:    10601901

这是Linux上的xorg-server 1.6.1。希望Solaris上的XOrg和XSun在这里有所不同。

要输出这两个字段,xdpyinfo会调用ServerVendor macro来确定供应商,然后根据ServerVendor的不同来解析VendorRelease macro的回报。

顺便问一下,VendorString()是什么?我没有这个名字的功能或宏......

答案 1 :(得分:1)

这可能有点hacky,但是如果你查看从Xsun和Xorg返回的扩展列表,你应该看到Xorg有一些额外的XFree86派生扩展。

xdpyinfo可用于通过命令行列出扩展名以检查差异;以编程方式,您可以使用XListExtensions()XQueryExtension()

(我手头没有Xsun X服务器,但我很确定当我看过去他们有不同的东西时)。

答案 2 :(得分:0)

谢谢! 糟糕,VendorRelease()字符串。 无论如何,不​​幸的是我们不能赌这个字符串。对于Xsun和Xorg来说,它经常发生变化,有麻烦。我找到了一个解决方案(希望)可以用于他们以及其他各种(衍生)服务器,如Xvfb,Xnest等。

Xsun确实在KP_(小键盘)键码的键盘数组中使用了第三个值。 Xorg使用1-st或2-nd。首先应该使用嗅探器获取KP_ keysym的密钥代码,例如XK_KP_7, 第二,嗅探XKeycodeToKeysym中的内容(d,键码,[0-3])。我们的XK_KP_7将在Xsun的索引2上。