簡體   English   中英

將XCB事件移植到XLib事件

[英]Porting XCB events to XLib Events

我正在使用Qt 5.3.2和一個名為gainput的輸入處理庫。 Gainput只能接受XLib事件,不能接受XCB事件結構。 最大的問題是Qt正在使用xcb。 有沒有將xcb事件移植到xlib事件的“簡便”方法?

xcb_generic_event_t* xcbEvent = /* ... Poll/Wait for events ... */
XEvent* xlibEvent = GenericEventConvertionFunction(xcbEvent); // Something like this...

我認為沒有一種簡單的方法可以得到想要的東西。

我不熟悉Qt,putput或項目的性質,但是您可以將現有的Xlib連接“轉換”為xcb連接 這樣,您可以混合使用Xlib和XCB調用。

Xlib和XCB中只有一個可以管理事件隊列。 默認情況下,Xlib會這樣做。 要更改此設置,請在進行其他調用之前調用XSetEventQueueOwner()(來自“ Xlib-xcb.h”)。

理想情況下,您可以初始創建一個Xlib Display對象,創建一個對應的xcb_display,將前者用於Qt並對其進行輪詢/等待,然后將其傳遞給gainput

需要注意的一件事是,您只能轉換一種方式。

給定xcb_connection_t對象,如何獲取顯示對象? 你不能

如果此解決方案還不夠。 我知道沒有解決您問題的好方法。 從好的方面來說,Xlib和xcb事件的等效性較小,因此手動轉換不會太難(至少某些事件的大小不同,因此直接進行轉換是不夠的)

編輯

我相信幾年前有人也有類似的問題 顯然Display *display = QX11Info::display(); 你可以做的一件事

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM