如何在X11下隐藏鼠标指针?我想使用内置库来执行此操作,而不是像SDL(SDL_ShowCursor(0))或过剩(glutSetCursor(GLUT_CURSOR_NONE)).此外,无论指针位置如何,鼠标指针都应隐藏,而不仅仅是在自己的窗口中.
Eug*_*zov 34
这是一个实用程序如何做的描述unclutter.
Unclutter是一个在X11会话后台永久运行的程序.它每隔几秒检查一次X11指针(光标)位置,当它发现它没有移动时(鼠标上没有按下任何按钮,光标不在根窗口中),它会创建一个小的子窗口.光标所在窗口的子窗口.新窗口安装一个大小为1x1但是全部为0的掩码的游标,即一个不可见的游标.例如,这允许您查看xterm或xedit中的所有文本.人为因素人群会同意它应该减少分散注意力.
一旦创建,程序等待指针离开窗口然后销毁它,恢复原始状态.按钮事件透明地传递到父窗口.它们通常会导致光标重新出现,因为当按钮按下时程序将执行主动抓取,因此指针显然会离开窗口,即使其xy位置没有改变.
sev*_*urk 20
我宁愿使用更简单的方法:
unclutter -idle 0
Run Code Online (Sandbox Code Playgroud)
你几乎看不到光标,它仍然可用.要禁用鼠标:
rmmod psmouse
Run Code Online (Sandbox Code Playgroud)
或者在/ etc /中的某处永久禁用鼠标模块.请参阅您的分发手册.
rma*_*her 15
-no-cursorXorg 1.7及更高版本有一个选项.https://www.x.org/wiki/AdvancedTopicsFAQ/
xinit -- -nocursor或者startx -- -nocursor可以工作.
eph*_*ent 14
您可以创建和设置不可见的光标主题.maemo使用了这个技巧,因为在触摸屏设备上使用光标是没有意义的.
遗憾的是,在运行时更改全局游标主题的能力在X11应用程序和工具包中并不一致.您可以更改服务器资源Xcursor.theme,没有人会注意到(通常只在启动时查询); 你可以通知xsettings似乎只影响Gtk +程序; KDE通过根窗口上的属性进行某种通信; 等等
至少更改您自己的应用程序的光标就像XDefineCursor一样简单,如果您在根窗口上执行此操作,某些应用程序可能会跟随.
rck*_*rck 14
我最后使用了像ephemient提到的XDefineCursor.控制应用程序更改了默认的根窗口光标,其他应用程序(由我控制)继承了它.
代码细节如下:
// Hide the cursor
if (NULL==(display=XOpenDisplay(NULL)))
{
printf("Unable to open NULL display\n");
exit(1);
}
window = DefaultRootWindow(display);
Cursor invisibleCursor;
Pixmap bitmapNoData;
XColor black;
static char noData[] = { 0,0,0,0,0,0,0,0 };
black.red = black.green = black.blue = 0;
bitmapNoData = XCreateBitmapFromData(display, window, noData, 8, 8);
invisibleCursor = XCreatePixmapCursor(display, bitmapNoData, bitmapNoData,
&black, &black, 0, 0);
XDefineCursor(display,window, invisibleCursor);
XFreeCursor(display, invisibleCursor);
XFreePixmap(display, bitmapNoData);
Run Code Online (Sandbox Code Playgroud)
为了隐藏光标然后在我完成之后
// Restore the X left facing cursor
Cursor cursor;
cursor=XCreateFontCursor(display,XC_left_ptr);
XDefineCursor(display, window, cursor);
XFreeCursor(display, cursor);
Run Code Online (Sandbox Code Playgroud)
恢复X的左手光标(因为它是根窗口,我不希望它保持不可见.我不确定,但我也可以使用
XUndefineCursor(display, window);
Run Code Online (Sandbox Code Playgroud)
小智 5
要隐藏鼠标光标,请创建一个额外的小文件(我称之为 mine blnk_ptr.xbm):
#define blnk_ptr_width 1
#define blnk_ptr_height 1
#define blnk_ptr_x_hot 0
#define blnk_ptr_y_hot 0
static unsigned char blnk_ptr_bits[] = {
0x00 };
Run Code Online (Sandbox Code Playgroud)
然后,
要隐藏鼠标指针光标,
$ xsetroot -cursor blnk_ptr.xbm blnk_ptr.xbm
Run Code Online (Sandbox Code Playgroud)
要再次显示鼠标指针光标,
$ xsetroot -cursor_name left_ptr
Run Code Online (Sandbox Code Playgroud)
您可以使用除“left_ptr”以外的鼠标指针光标,但这个光标似乎在 *nix 系统中广泛可用。
顺便说一句,我还不知道如何使用 xsetroot 获取系统当前使用的指针的名称。我想我会 [像往常一样] 挖掘那个,但我很高兴有人知道如何给我答案(这会很好;))