2009-06-23 5 views

Odpowiedz

1

Jest to prawdopodobnie trochę hacky, ale jeśli spojrzysz na listę rozszerzeń zwróconych przez Xsun i Xorg, powinieneś zauważyć, że Xorg ma kilka dodatkowych rozszerzeń pochodnych XFree86.

xdpyinfo może być użyty do wyświetlenia rozszerzeń za pomocą wiersza poleceń w celu sprawdzenia różnic; programowo można użyć XListExtensions() lub XQueryExtension().

(Nie mam serwera Xsun X pod ręką, ale jestem całkiem pewny, gdy spojrzałem w przeszłości, że różniły się dość abit).

+0

Tylko Xsun będzie miał Adobe-DPS - Sun nie uwzględnia tego w naszym porcie Xorg. – alanc

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

To jest xorg-server 1.6.1 na Linux. Mam nadzieję, że XOrg i XSun na Solaris będą się tutaj różnić.

Do produkcji tych dwóch pól, xdpyinfo wywołuje ServerVendor macro do ustalenia ze sprzedawcą, a następnie analizuje Powrót VendorRelease macro różnie w zależności od tego, co było ServerVendor.

Nawiasem mówiąc, co to jest VendorString()? Nie mam funkcji ani makra o tej nazwie ...

0

Dziękujemy! Łańcuch Oops, VendorRelease() to jest. W każdym razie niestety nie możemy obstawić tego ciągu. Zmienia się wystarczająco często, aby mieć kłopoty, zarówno dla Xsun, jak i dla Xorg. Znalazłem rozwiązanie działające (miejmy nadzieję) dla nich i dla różnych innych (pochodnych) serwerów, takich jak Xvfb, Xnest itp.

Xsun używa trzeciej wartości w tablicy keysymów dla kodów klawiszy KP_ (numpad). Xorg używa 1-st lub 2-go. Najpierw należy sniffer, uzyskać kod klucza KP_ keysym, na przykład XK_KP_7, sekunda, powąchać zawartość XKeycodeToKeysym (d, keycode, [0-3]). Nasz XK_KP_7 znajdzie się na indeksie 2 dla Xsun.

+1

Wow, to brzmi jak jeszcze brzydsze włamanie niż rozwiązanie Dave'a, ale dopóki działa ...! – ephemient

+2

To wydaje się być dobrym miejscem do napisania testu jednostkowego! –