VendorString() non funziona, è sempre Sun Microsystems, anche se è stato creato da Xorg per Solaris.Come distinguere Xsun da Xorg, a livello di programmazione?
risposta
È 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).
$ 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 ...
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.
Wow, sembra un attacco ancora più brutto della soluzione di Dave, ma finché funziona ...! – ephemient
Questo sembra un buon posto per scrivere un test unitario! –
- 1. Come recuperare informazioni a livello di programmazione da LDAP
- 2. Come aggiungere un'immagine da visualizzare a livello di programmazione?
- 3. Come disabilitare SparkUI a livello di programmazione?
- 4. Come utilizzare AcroTextExtractor.exe a livello di programmazione?
- 5. Ionico come tornare a livello di programmazione
- 6. , verificare a livello di programmazione
- 7. Come nascondere UITabBarController a livello di programmazione?
- 8. come inviare sms a livello di programmazione?
- 9. Come impostare windowDrawsSystemBarBackgrounds a livello di programmazione?
- 10. Come configurare ELMAH a livello di programmazione?
- 11. Come attivare "Installato" a livello di programmazione?
- 12. Come programmare un'attività a livello di programmazione
- 13. Come aprire selezionare a livello di programmazione
- 14. Elenco di parole gratuito da utilizzare a livello di programmazione?
- 15. Come ottenere a livello di programmazione il livello audio corrente?
- 16. Invia SMS da iPhone a livello di programmazione
- 17. Forza postback completo a livello di programmazione da UpdatePanel
- 18. Creazione di UIWebView a livello di programmazione
- 19. Come faccio a scrollare a livello di programmazione TreeView?
- 20. Incorpora UIViewController a livello di programmazione?
- 21. Recupero nome operatore da iPhone a livello di programmazione
- 22. Arresto dell'animazione GIF a livello di programmazione
- 23. Creazione di ListView a livello di programmazione
- 24. Modifica log4net livello di registrazione a livello di programmazione
- 25. Creazione di UITableView a livello di programmazione
- 26. Distinzione tra script e funzioni a livello di programmazione
- 27. Ordinamento di JTable a livello di programmazione
- 28. creazione di uiview a livello di programmazione?
- 29. Impedisce a livello di programmazione della batteria
- 30. C# crea report a livello di programmazione
Solo Xsun avrà Adobe-DPS - Sun non lo include nella nostra porta Xorg. – alanc