С++ - изменить курсор в X Window

Я думал, что это будет легко найти, но поиск в Google оказался очень бесполезным. Есть ли простой API для изменения курсора мыши в вашем X-окне? (Я знаю, что в Windows вы можете просто вызвать «SetCursor»)


person Chris    schedule 27.08.2010    source источник
comment
Вы смотрели на man Xcursor?   -  person Troubadour    schedule 27.08.2010
comment
Я начал читать это, но все еще очень трудно получить хорошую информацию. Все, что я хочу сделать, это что-то вроде SetCursor(рука) и SetCursor(стрелка). Есть ли где-нибудь пример того, как это сделать?   -  person Chris    schedule 27.08.2010
comment
Я бы не стал касаться X напрямую. Почему не Qt, WX, Gtk или что-то в этом роде?   -  person Johannes Schaub - litb    schedule 27.08.2010


Ответы (2)


#include <X11/cursorfont.h>

/* ... */

Cursor c;

c = XCreateFontCursor(dpy, XC_xterm); 
XDefineCursor(dpy, w, c);

Где dpy — ваш дисплей, w — ваше окно, а XC_xterm — константа, определяющая форму вашего курсора. Вот список доступных форм курсора вместе с изображениями.

person knarf    schedule 12.12.2010
comment
но эти константы принесут вам только уродливые значки из шрифта курсора. Как вы получаете значки WM по умолчанию с тенями и всем остальным? - person ; 15.07.2015

Похоже, что эквивалентом вызова SetCursor является XDefineCursor. Вы можете получить идентификатор Cursor, вызвав XCreateFontCursor и передав одну из форм из X11/cursorfont.h.

person Troubadour    schedule 27.08.2010
comment
Подробнее об этом можно узнать на странице tronche.com/gui/x/. xlib/pixmap-and-cursor/cursor.html - person alanc; 27.08.2010