当前位置:  开发笔记 > 运维 > 正文

如何在Linux/X11下隐藏鼠标指针?

如何解决《如何在Linux/X11下隐藏鼠标指针?》经验,为你挑选了7个好方法。

如何在X11下隐藏鼠标指针?我想使用内置库来执行此操作,而不是像SDL(SDL_ShowCursor(0))或过剩(glutSetCursor(GLUT_CURSOR_NONE)).此外,无论指针位置如何,鼠标指针都应隐藏,而不仅仅是在自己的窗口中.



1> Eugene Moroz..:

这是一个实用程序如何做的描述unclutter.

Unclutter是一个在X11会话后台永久运行的程序.它每隔几秒检查一次X11指针(光标)位置,当它发现它没有移动时(鼠标上没有按下任何按钮,光标不在根窗口中),它会创建一个小的子窗口.光标所在窗口的子窗口.新窗口安装一个大小为1x1但是全部为0的掩码的游标,即一个不可见的游标.例如,这允许您查看xterm或xedit中的所有文本.人为因素人群会同意它应该减少分散注意力.

一旦创建,程序等待指针离开窗口然后销毁它,恢复原始状态.按钮事件透明地传递到父窗口.它们通常会导致光标重新出现,因为当按钮按下时程序将执行主动抓取,因此指针显然会离开窗口,即使其xy位置没有改变.


现在我也知道为什么整理者会如此糟糕地搞乱我的加速窗口.mplayer并不像我认为的那样善待儿童窗户.

2> sevenfourk..:

我宁愿使用更简单的方法:

unclutter -idle 0

你几乎看不到光标,它仍然可用.要禁用鼠标:

rmmod psmouse

或者在/ etc /中的某处永久禁用鼠标模块.请参阅您的分发手册.


使用unclutter,您可以将-jitter标志设置为高值,然后您根本不会看到鼠标,并且您不必经常轮询.

3> Aktau..:

unclutter的替代方案

Unclutter对我来说不起作用,因为它不能很好地处理硬件加速表面(例如在解码视频时由intels的VA-API生成的表面).所以我找到了一个程序,用一种不那么迂回的方式隐藏鼠标指针,hhp,并在C中用最小的依赖关系重写它,结果是hhpc.我这样做是为了避免让haskell编译它的必要性,因为hhp有时会停止隐藏鼠标指针.

HHPC,仅依赖于glibcxlib,所以很容易建立,只是做make release.您可以从我的存储库中获取代码和说明.它的内存和CPU效率非常高(因为它几乎没有任何功能).



4> rmarscher..:

-no-cursorXorg 1.7及更高版本有一个选项.https://www.x.org/wiki/AdvancedTopicsFAQ/

xinit -- -nocursor或者startx -- -nocursor可以工作.



5> ephemient..:

您可以创建和设置不可见的光标主题.maemo使用了这个技巧,因为在触摸屏设备上使用光标是没有意义的.

遗憾的是,在运行时更改全局游标主题的能力在X11应用程序和工具包中并不一致.您可以更改服务器资源Xcursor.theme,没有人会注意到(通常只在启动时查询); 你可以通知xsettings似乎只影响Gtk +程序; KDE通过根窗口上的属性进行某种通信; 等等

至少更改您自己的应用程序的光标就像XDefineCursor一样简单,如果您在根窗口上执行此操作,某些应用程序可能会跟随.



6> rck..:

我最后使用了像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);

为了隐藏光标然后在我完成之后

// Restore the X left facing cursor
Cursor cursor;
cursor=XCreateFontCursor(display,XC_left_ptr);
XDefineCursor(display, window, cursor);
XFreeCursor(display, cursor);

恢复X的左手光标(因为它是根窗口,我不希望它保持不可见.我不确定,但我也可以使用

XUndefineCursor(display, window);



7> 小智..:

使用xbanish!它"在打字时消除鼠标光标"!启动它

xbanish&

享受!

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有