如何在C应用程序中的X11上设置鼠标光标

我有一个相当大的,相当古老的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  ... Cursor c = XcursorLibraryLoadCursor(dpy, "sb_v_double_arrow"); XDefineCursor (dpy, w, c); 

名称是X11/cursorfont.h中的标准游标名称,sans XC_ 。 如果主题有额外的游标,如bd_double_arrow ,也可以使用这些名称(但并非所有主题都有它们!)

如果主题没有替换某些核心X游标,则库将回退到核心游标。

单击该页面上的某些链接后:尝试XCreatePixmapCursor 。 从描述中,您可以创建任何您想要的双色光标。