![使用触摸屏时动态隐藏鼠标光标](https://linux22.com/image/5723/%E4%BD%BF%E7%94%A8%E8%A7%A6%E6%91%B8%E5%B1%8F%E6%97%B6%E5%8A%A8%E6%80%81%E9%9A%90%E8%97%8F%E9%BC%A0%E6%A0%87%E5%85%89%E6%A0%87.png)
我有一台触摸屏笔记本电脑,我想在触摸屏幕时隐藏指针。我知道像这样的解决方案整洁和startx -nocursor
但我希望指针动态隐藏/显示,如果我使用触摸屏则隐藏,而当我使用硬件鼠标时则显示。
我想过制作两个独立的指针并将上述两个解决方案之一应用于触摸屏指针,但这两个解决方案都没有提到如何定位单个指针,并且拥有多个指针会使事情变得很奇怪,并且这不会隐藏硬件鼠标光标。
我想我可以最合理地做这样的事情这,跟踪当前的输入机制,并xinput -cursor [transparent cursor]
在使用触摸屏和xinput -cursor [normal cursor]
使用普通鼠标时执行。
我查看了 xinput,看起来由于硬件鼠标和触摸屏都从属于同一个指针,它们都在 xev 中注册了相同的事件,所以我不确定从哪里获得区分触摸所需的信息通过鼠标点击。是否可以?
答案1
你可以使用
要使用,请安装它
sudo apt-get install unclutter
然后运行它
unclutter -idle 0.01 -root
注意,空闲后的数字表示隐藏前的时间。在本例中,其设置为 1/100 秒。您可以尝试将其更改为始终隐藏的值。
当您不移动光标时,这将隐藏光标。我确信还有一个选项可以完全隐藏它。
答案2
有一个nowrep 的 unclutter-fixes 工具的分支可在此处获取。此版本添加了一个-touch
选项,可在检测到触摸输入时自动隐藏光标。 (原始的 unclutter-xfixes 存储库是这里)
需要注意的一件事是,它仍然包含在指定时间段后隐藏光标的行为。您只需将该--timeout
选项设置为非常高的值即可解决该问题。
这应该非常适合你。就我而言,我有一个外部连接的触摸屏,当我移回常规显示器时,光标将位于触摸屏上,因此我必须将其从我触摸的位置移回显示器。好处是,在我开始移动鼠标后,光标会显示出来,这样我就知道它在哪里。
此选项的一个很好的好处是,如果我愿意,我仍然可以像平常一样在触摸屏上使用鼠标,但如果我不想,则将其隐藏。
答案3
我想您在没有鼠标时使用触摸屏,并在需要使用鼠标时将鼠标插入系统。在这种情况下,您可以使用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"
就我个人而言,我还会在插入鼠标时完全禁用触摸屏,这样当您希望光标跟随鼠标时,意外触摸它就不会干扰光标。