- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用透明光标主题技巧(请参阅 http://obiltschnig.com/2010/08/14/hiding-the-gtkx11-mouse-cursor/ )在基于触摸屏的设备的全屏 Linux GTK+ 应用程序中隐藏 X11 光标。我基本上使用 Xorg 服务器运行基于 WebKit GTK+ 的应用程序,在全屏模式下没有窗口管理器。现在,通过设置透明的 1 像素光标默认主题来隐藏光标效果非常好(另请参阅: How do you hide the mouse pointer under Linux/X11? )。但是,一旦光标位于子窗口(例如 JavaScript 警报窗口或组合框/HTML)内,X 光标就会出现(如果光标移出窗口,则 X 光标会再次消失)。有谁知道为什么会这样?有没有办法完全隐藏光标?
最佳答案
该行为的主要原因是 XGrabPointer()
函数(参见 Xlib 编程手册),主动获取指针的控制权,如果获取成功则返回 GrabSuccess。进一步的指针事件仅报告给抓取客户端。 XGrabPointer()
覆盖此客户端抓取的任何事件指针。
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()
对事件窗口的影响。当指针位于窗口中时,将使用父级的光标。如果您选择透明指针作为默认指针,并且还使用取消定义子窗口的光标,则您应该根本看不到光标。当光标设置为 None
时,XUndefineCursor
相当于 XDefineCursor
。
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
runs in the background of an X11 session and after a specified period of inactivity hides the cursor from display. When the cursor is moved its display is restored. Users may specify specific windows to be ignored byunclutter
.
您可以将延迟时间设置为0:unclutter -idle 0
,当您停止移动光标时,鼠标指针就会消失。
关于webkit - 透明 X11 光标主题 - 为什么 X 光标出现在 GTK+ 子窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491753/
我刚刚开始使用代码块并设置了我的 UI 以在 UI 的右下角显示 watch 窗口。我设置了断点并在 Debug模式下运行我的程序。我可以使用菜单工具栏上的按钮单步执行代码行,但我的 watch 窗口
我正在处理以下访问冲突: Unhandled exception at 0x77DB2A10 (ntdll.dll) in .exe.dmp: 0xC0000005: Access violation
我是一名优秀的程序员,十分优秀!