如何动态修改鼠标指针图标

时间:2014-08-17 08:42:40

标签: c ubuntu-12.04 xlib

我试图在ubuntu中模拟鼠标交互。 现在,我可以使用XLib移动鼠标指针并创建按钮按下事件,但我还想在鼠标图标附近显示附加信息或替换鼠标图标。我尝试在任何窗口都这样做。

我尝试使用Xlib函数修改鼠标指针图标:

Display *display = XOpenDisplay( 0 );
Window root = DefaultRootWindow( display );
char data[] = { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... };
char dataM[] = { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... };

Pixmap source = XCreatePixmapFromBitmapData( display, root, data, 16, 16, 1, 0, 1 );
Pixmap mask = XCreatePixmapFromBitmapData( display, root, dataM, 16, 16, 1, 0, 1 );

XColor fg_color, bg_color;
fg_color.red = 65000; fg_color.green = 60000; fg_color.blue = 30000; fg_color.flags = DoRed | DoGreen | DoBlue;
bg_color.red = 650; bg_color.green = 6000; bg_color.blue = 30000; bg_color.flags = DoRed | DoGreen | DoBlue;
Cursor c = XCreatePixmapCursor( display, source, mask, &fg_color, &bg_color, x, y );

XDefineCursor( display, root, c );
XFlush( display );
sleep(2);

// modify cursor's colors
fg_color.red = 10; fg_color.green = 60000; fg_color.blue = 60000;
ret = XRecolorCursor( display, c, &fg_color, &bg_color );
XDefineCursor( display, root, c );
XFlush( display );
XFreeCursor( display, c );
sleep(2);

但我看不到鼠标指针形状或颜色的修改。

我的代码中遗漏了什么?或者我是否需要为Ubuntu 12.04使用其他的东西?

0 个答案:

没有答案