"Why is that so?"
The main reason for this behavior is that there is a function XGrabPointer()(see Xlib Programming Guide) that actively captures pointer control and returns GrabSuccessif the capture was successful. Further pointer events are reported only to the capturing client. XGrabPointer()cancels any active capture of this client.
int XGrabPointer(Display *display;
Window grab_window;
Bool owner_events;
unsigned int event_mask;
int pointer_mode, keyboard_mode;
Window confine_to;
Cursor cursor;
Time time);
, , . None, , grab_window ; grab_window.
" ?"
, XUnDefineCursor XUnDefineCursor:
XUndefineCursor(Display *display;
Window w);
XDefineCursor() . , . , undefine , . XUnDefineCursor XDefineCursor, None.
display=XOpenDisplay(NULL)
window = DefaultRootWindow(display);
Cursor invisible_cursor;
Pixmap no_pixmap;
XColor black;
static char nothing[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
no_pixmap = XCreateBitmapFromData(display, window, nothing, 8, 8);
invisible_cursor = XCreatePixmapCursor(display,
no_pixmap, no_pixmap,
&black, &black, 0, 0);
XDefineCursor(display, window, invisible_cursor);
, KDE, , , , .
, unclutter, . , .
unclutter X11 . , . , unclutter.
0: unclutter -idle 0, , .