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

时间:2013-09-17 18:22:02

标签: c cursor mouse 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。

2 个答案:

答案 0 :(得分:5)

使用主题游标的最简单方法是使用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游标,则库将回退到核心游标。

答案 1 :(得分:0)

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