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

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

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

至少为您自己的应用程序更改游标就像XDefineCursor一样简单,如果您在根窗口上执行此操作,则可能会有 一些应用程序随之而来。

下面是一个描述 unclutter工具如何做的。

Unclutter是一个在X11会话的后台运行的程序。 它每隔几秒钟检查一次X11指针(光标)的位置,当它发现它没有移动(没有按钮被按在鼠标上,光标不在根窗口中)时,它创建一个小的子窗口光标所在窗口的一个子窗口。新窗口安装一个大小为1×1的光标,但是所有的光标都是0,即一个不可见的光标。 例如,这允许您查看xterm或xedit中的所有文本。 人为因素的人群会认同它应该减少分心。

一旦创建,程序等待指针离开窗口,然后销毁它,恢复原来的情况。 按钮事件透明地传递到父窗口。 它们通常会导致光标重新出现,因为当按钮关闭时,程序将会执行一个活动的抓取,所以即使xy位置不改变,指针也会离开窗口。

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

unclutter -idle 0

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

rmmod psmouse

或者在/ etc /中的某处永久禁用鼠标模块。 见你的发行手册。

一个替代unclutter

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

hhpc ,只依赖于glibc和xlib ,因此很容易构建,只是做make release 。 您可以从我的存储库中获取代码和说明。 这是非常有效的内存和CPU(因为它几乎没有)。

我结束了使用像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);

xinit -- -nocursor或startx -- -nocursor可以工作。

使用xbanish! 它“输入时消除鼠标光标”! 从开始

xbanish&

享受!

好吧!

我想这个帖子可能会有点老,但如果我发现可以帮助我们中的一些人,我肯定要在这里发布;)

我发现自己是一个干净,简单的解决方案,工作正常,没有使用“xcb”(我试图达到,这是一个litte over-engineering(..)

所以:

所有你需要的是“xsetroot”命令,并带有适当的参数/参数:

– >隐藏鼠标光标,你需要一个额外的小文件(我称之为“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 };

然后,我们可以使用以下两个命令:

– >隐藏鼠标指针光标:

xsetroot -cursor blnk_ptr.xbm blnk_ptr.xbm

– >再次显示鼠标指针光标:

xsetroot -cursor_name left_ptr

(你可以使用除“left_ptr”以外的鼠标指针光标,但是这个似乎在* nix系统(..)

Btw->我还不知道如何获取系统当前使用的指针的名称使用xsetroot – >我想我会像往常一样digg,但我会很高兴有人谁知道如何给我答案(这将是很好的;))

请享用 ? ,p

这是我的解决方案。 它将光标放在你看不见的地方(在我的情况下,在左下角),然后禁用鼠标,所以你不能移动它。

注意你可以从xrandr解析数据,或者把这些数据放到环境中登录,然后使用它; 这样,你不必硬编码。 但是,至于我,我从来没有改变我的屏幕分辨率,所以768是好的:)

setmouse () { DISPLAY=":0" xinput $1 `DISPLAY=":0" xinput | grep Mouse | tr -d " " | tr "\t" " " | cut -d" " -f2 | cut -d"=" -f2` } offmouse () { DISPLAY=":0" xdotool mousemove 0 768 # use xrandr to find out setmouse disable } onmouse () { setmouse enable }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值