使用触摸屏时动态隐藏鼠标光标


21

我有一台触摸屏笔记本电脑,每当我触摸屏幕时都想隐藏指针。我知道诸如混乱之类的解决方案,startx -nocursor但是我希望指针动态隐藏/显示,如果使用触摸屏则隐藏,并在使用硬件鼠标时显示。

我曾考虑过要制作两个单独的指针,然后将上述两个解决方案之一应用于触摸屏指针,但是这些解决方案都没有提到如何定位单个指针,而拥有多个指针会使事情变得很奇怪,并且这不会隐藏硬件鼠标光标。

我想我可以最合理地做到这一点做一些像这样,跟踪当前的投入机制和执行xinput -cursor [transparent cursor]每当使用触摸屏,并xinput -cursor [normal cursor]会在使用普通鼠标。

不过,我看了xinput,看起来好像硬件鼠标和触摸屏都隶属于同一个指针,所以它们在xev中都注册了相同的事件,所以我不确定如何从中获得区分触摸所需的信息从鼠标单击。可能吗?

Answers:


5

你可以用

要使用,请安装

sudo apt-get install unclutter

然后运行它

unclutter -idle 0.01 -root

请注意,空闲后的数字表示隐藏之前的时间。在这种情况下,其设置为1/100秒。您可以尝试将其更改为始终隐藏的值。

当您不移动光标时,它将隐藏光标。我确定还有一个完全隐藏它的选项。


我已经看到了使用整洁的解决方案,但这在使用touchsreen和鼠标之间没有区别。
erp 2015年

2

我想您在没有鼠标的情况下使用触摸屏,并在要使用它时将其插入系统。在这种情况下,您可以使用udev规则来相应地管理指针:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput -cursor [transparent cursor]", RUN+="/usr/bin/xinput -cursor [normal cursor]"

这个答案借来了用来区分老鼠的条件。

请记住,各个应用程序可以自由地动态重新定义光标,因此当您将鼠标悬停在其窗口上时,光标可能会再次变为可见。unclutter如果希望所有游标都隐藏在各处,则可以改为启动/停止:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c unclutter&", RUN+="/usr/bin/killall unclutter"

就个人而言,当插入鼠标时,我也会完全禁用触摸屏,这样当您期望它跟随鼠标时,不小心触摸它就不会干扰光标。


这是一个很好的选择,除了我希望触控板不仅具有插入式鼠标的这种功能。我相信udev仅会影响动态添加/删除的设备?
2015年

您是说触控板是您的“硬件鼠标”?我想说,您必须尝试看看它是否有效。udev当您使用Fn按钮禁用触摸板时(假设您有一个触摸板),它实际上可能被视为已被移除。
德米特里·格里戈里耶夫

1

这里有nowrep提供的unclutter-fixes工具的一个分支。此版本添加了一个-touch选项,可以在检测到触摸输入时自动隐藏光标。(原始的unclutter-xfixes存储库在此处

要注意的一件事是,它仍然包含在指定时间段后隐藏光标的行为。您可以将--timeout选项设置为很高的值来解决此问题。

这应该为您完美地工作。在我的情况下,我有一个外部连接的触摸屏,当我移回常规显示器时,光标将在触摸屏上,因此我必须将其从触摸的位置移回显示器。令人高兴的是,在我开始移动鼠标之后,光标将显示出来,所以我知道它的位置。

此选项的一个好处是,如果愿意,我仍然可以像在触摸屏上一样使用鼠标,但在不使用鼠标时将其隐藏。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.