[英]How to set mouse cursor on X11 in a C application
我有一個相當大且相當老的 C 應用程序,它已移植到 Linux。 我負責讓鼠標光標正常工作,但有一些問題。 我能夠將我們需要的大多數游標轉換為使用XFontCursor提供的標准游標,方法如下:
gCursorTable[waitCurs] = XCreateFontCursor(gDisplay, XC_watch);
...
XDefineCursor(gDisplay, WHostWindow(w), gCursorTable[cursor]);
XFlush(gDisplay);
這對於在 XFontCursor 提供的極其有限的(有用的)游標列表中具有類似物的游標來說很好,但是我想設置其他內置的主題游標。 例如,我希望能夠在我的應用程序中將光標設置為 bd_double_arrow(它包含在每個光標主題中,並且是 Windows 的標准對角線大小光標),但您顯然無法使用 XCreateFontCursor 做到這一點。 這看起來很基本,但對於我的生活,我找不到任何關於如何做到的描述。
我只想知道其他 X11 應用程序是如何設置光標的,因為它們顯然是從全局主題中獲取的,而不僅僅是使用 XCreateFontCursor。
使用主題游標的最簡單方法是使用 Xcursor 庫。
#include <X11/Xcursor/Xcursor.h>
...
Cursor c = XcursorLibraryLoadCursor(dpy, "sb_v_double_arrow");
XDefineCursor (dpy, w, c);
名稱是來自X11/cursorfont.h
標准光標名稱,無XC_
。 如果主題有額外的光標,例如bd_double_arrow
,也可以使用這些名稱(但並非所有主題都有!)
如果主題沒有替代某些核心 X 光標,則庫將回退到核心光標。
單擊該頁面上的一些鏈接后:嘗試XCreatePixmapCursor 。 從它的描述來看,您似乎可以創建任何您想要的 2 色光標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.