2009-06-23 18 views

risposta

1

È probabilmente un po 'hacky, ma se si guarda l'elenco delle estensioni restituite da Xsun e Xorg si dovrebbe vedere che Xorg ha alcune estensioni derivate da XFree86.

xdpyinfo può essere utilizzato per elencare le estensioni tramite la riga di comando per verificare le differenze; a livello di codice è possibile utilizzare XListExtensions() o XQueryExtension().

(Non ho un Xsun X Server a portata di mano, ma sono abbastanza sicuro che quando ho guardato in passato hanno differito abbastanza abit).

+0

Solo Xsun avrà Adobe-DPS - Sun non lo include nella nostra porta Xorg. – alanc

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

Si tratta di xorg-server 1.6.1 su Linux. Speriamo che XOrg e XSun su Solaris differiscano qui.

All'uscita questi due campi, xdpyinfo chiama il ServerVendor macro per determinare il fornitore, quindi analizza il ritorno del VendorRelease macro diverso a seconda del ServerVendor era.

A proposito, che cos'è VendorString()? Non ho una funzione o una macro con quel nome ...

0

Grazie! Oops, VendorRelease() stringa è. Comunque, sfortunatamente non possiamo scommettere su questa corda. Cambia spesso abbastanza da avere problemi, sia per Xsun che per Xorg. Ho trovato una soluzione funzionante (si spera) per loro e per vari altri server (derivati) come Xvfb, Xnest ecc.

Xsun utilizza un terzo valore in un array di chiavi per KP_ (tastierino numerico). Xorg usa 1 ° o 2 °. Per prima cosa uno sniffer deve ottenere un keycode per un keysym KP_, ad esempio XK_KP_7, secondo, annusare ciò che è in XKeycodeToKeysym (d, keycode, [0-3]). Il nostro XK_KP_7 sarà sull'indice 2 per Xsun.

+1

Wow, sembra un attacco ancora più brutto della soluzione di Dave, ma finché funziona ...! – ephemient

+2

Questo sembra un buon posto per scrivere un test unitario! –

Problemi correlati