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

标签 c x11 mouse-cursor

我有一个相当大且相当旧的 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 游标的替代品,库将回退到核心游标。

关于c - 如何在 C 应用程序中的 X11 上设置鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857125/

相关文章:

C——scanf 或 fgets 似乎都没有执行

以编程方式更改进程的当前工作目录

c - OpenGL ES 2.0 着色器创建失败

x11 - X11/Xlib 的全局热键

linux - CUDA/PyCUDA : Which GPU is running X11?

python - Pygame 从位图中设置鼠标光标

c - 在c中通过https发布json数据

c - Glib 哈希表存储了不正确的键

c++ - 在 C++ 中移动鼠标指针在 Linux 上失败

javascript - 如何将光标移动到 JavaScript 中文本区域的最后一个位置?