2009-06-23 13 views

Respuesta

1

Es posiblemente un poco hacky, pero si nos fijamos en la lista de extensiones devueltas de Xsun y Xorg, debería ver que Xorg tiene algunas extensiones adicionales derivadas de XFree86.

xdpyinfo se puede utilizar para mostrar las extensiones a través de la línea de comandos para verificar las diferencias; programáticamente puede usar XListExtensions() o XQueryExtension().

(No tengo a mano un servidor Xsun X pero estoy bastante seguro de que cuando lo he visto en el pasado han diferido bastante).

+0

Solo Xsun tendrá Adobe-DPS; Sun no lo incluye en nuestro puerto Xorg. – alanc

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

Esta es xorg-server 1.6.1 en Linux. Esperemos que XOrg y XSun en Solaris difieran aquí.

A la salida de estos dos campos, xdpyinfo llama al ServerVendor macro para determinar el proveedor, a continuación, analiza el retorno de la VendorRelease macro de manera diferente dependiendo de lo que era ServerVendor.

Por cierto, ¿qué es VendorString()? No tengo una función o macro con ese nombre ...

0

¡Gracias! Vaya, VendorRelease() es la cadena. De todos modos, lamentablemente no podemos apostar a esta cadena. Cambia con la frecuencia suficiente como para causar problemas, tanto para Xsun como para Xorg. He encontrado una solución que funciona (con suerte) para ellos y para varios otros servidores (derivados) como Xvfb, Xnest, etc.

Xsun utiliza un tercer valor en una matriz de keysyms para códigos de tecla KP_ (teclado numérico). Xorg usa 1-st o 2-nd. En primer lugar, un sniffer debe obtener un código clave para un KP_ keysym, por ejemplo XK_KP_7, segundo, olfatear lo que está en el XKeycodeToKeysym (d, keycode, [0-3]). Nuestro XK_KP_7 estará en el índice 2 para Xsun.

+1

¡Guau, eso se siente como un truco aún más feo que la solución de Dave, pero mientras funcione ...! – ephemient

+2

¡Parece un buen lugar para escribir una prueba unitaria! –

Cuestiones relacionadas