鼠标过于敏感-干扰睡眠


7

我已经购买了8200dpi的游戏鼠标。但是,当我在Linux中使用它时,我遇到了问题。当我不使用PC或观看视频时,有时会因触摸桌子或什至在房间里走路的人而产生短暂的移动。这些响应会终止屏幕保护程序,并导致显示视频播放器GUI。真烦人
我该如何应对呢?


像黑屏一样休眠,还是像整个计算机一样休眠?
MoonRunestar 2015年

作为空白屏幕。实际上,任何应该在鼠标移动时停止的内容。鼠标是如此敏感,它实际上会以最小的振动生成移动事件。默认情况下,没有“最小行程”来禁用屏幕保护程序。
Barafu Albino 2015年

2
您可以在不使用鼠标时拔掉它的
丹尼尔(Daniel)

1
如果您无法设置鼠标DPI(显然不可能),则唯一的解决方法可能是Jacob Vlijm的脚本或类似的东西。但是,我为此使用的快速而肮脏的技巧是将鼠标颠倒了;)
kos 2015年

1
我试过了。我将鼠标上下颠倒-它本身变成了接近传感器:(
Barafu Albino

Answers:


5

可能的解决方案是以下背景脚本。

它能做什么

  • 在(任意)空闲时间之后,脚本将禁用鼠标,使其对您执行的任何操作都不敏感。我将其设置为相对较短,因此之间几乎没有干扰的机会。
  • 但是,简单的击键(任意)将再次启用鼠标。

由于xprintidle是由鼠标或键盘事件触发的(而不是由屏幕上发生的事件触发的),因此脚本不会受到例如播放电影的干扰。

这样,您就不必担心不必要的鼠标操作会破坏任何东西,同时您仍然可以轻松访问控件和计算机。

与往常一样(并且与后台脚本一样),脚本的编写方式几乎不占用资源。

剧本

#!/usr/bin/env python3
import subprocess
import time
# ---
# set your device (mouse), as found from the command: xinput list
device = 8
# set the desired idle time (in seconds) to disable the mouse
set_idletime = 5
# ---

# don't change anything below
idle1 = 0

while True:
    time.sleep(1)
    idle2 = int(int(subprocess.check_output(["xprintidle"]).decode("utf-8").strip())/1000)
    if all([idle1 <= set_idletime, idle2 > set_idletime]):
        subprocess.Popen(["xinput", "set-prop", str(device), "Device Enabled", "0"])
    elif idle2 < idle1:
        subprocess.Popen(["xinput", "set-prop", str(device), "Device Enabled", "1"])
    idle1 = idle2

如何使用

  1. 该脚本需要xprintidle

    sudo apt-get install xprintidle
    
  2. 将脚本复制到一个空文件中,另存为 mouse_toosensitive.py

  3. 通过在终端中运行来找出鼠标的设备(数字,整数):

    xinput list
    

    在脚本的开头部分,设置设备号和所需的空闲时间(请参见脚本中的说明)。

  4. 通过从终端窗口运行以下命令来对其进行测试:

    python3 /path/to/mouse_toosensitive.py
    
  5. 如果一切正常,请将其添加到启动应用程序中:Dash>启动应用程序>添加命令:

    /bin/bash -c "sleep 15 && python3 /path/to/mouse_toosensitive.py"
    

1
现在,这是一个普遍的想法。我喜欢。
Barafu Albino 2015年

@BarafuAlbino您可以确认此解决方案是否适用于您的媒体播放器吗?我的理解是,大多数媒体播放器都会欺骗X空闲时间来禁用屏幕保护程序,这也会阻止此脚本运行。
德米特里·格里戈里耶夫

将在星期四尝试,然后在此处报告。无论如何,我更喜欢SMplayer,它具有可切换的复选框以防止屏幕保护程序。
Barafu Albino 2015年

@DmitryGrigoryev会xprintidle 监听键盘和鼠标活动,而不是屏幕上发生的事情。
Jacob Vlijm

1
@DmitryGrigoryev刚刚使用进行过测试VLC,脚本使用xprintidle,happliy禁用了鼠标,这意味着它对屏幕上发生的事情不敏感:)(正如我所假设的)。
Jacob Vlijm

2

当然,我确定您已经尝试过鼠标控件,例如:

Xset鼠标

$ xset mouse [speed] [threshold]

查找您的输入设备号

$ xinput
$ xinput --set-prop 9 'Device Accel Constant Deceleration' 3

如果尝试使用可用值没有帮助,请尝试将鼠标垫更改为阻力更大的表面。换句话说,使用不同类型的鼠标垫进行该容量的各种灵敏度实验。


xset定义速度,但问题是-某些情况下,无论运动有多小或慢,都会对任何运动做出反应。
Barafu Albino 2015年

我提到了速度和阈值,以使范围如此之大,以测试的极限no matter how small。您是否测试过更改鼠标垫表面材料以增加摩擦/阻力。
LD詹姆斯

我收到一个错误:“属性'Device Accel Constant Deceleration'不存在,您需要指定其类型和格式”
Jonathan

2

如果您使用xscreensaver,则有一个适合-的配置参数pointerHysteresis

如果鼠标在一秒钟内移动的距离少于该像素,请忽略它(不要认为这是“活动”。)这样一来,屏幕就不会因为被撞而不会变黑(或无法消隐)。办公桌。默认值:10像素。

我尝试的另一种解决方案是购买一个漂亮的硅胶鼠标垫,将其不必要的运动减至最少。


适用于屏幕保护程序,但需要我首先设置xscreensaver。但是,我确实发现视频播放器问题更令人讨厌。
Barafu Albino

@BarafuAlbino是的,此解决方案仅对xscreensaver用户有用,我真的不希望有人更改其屏幕保护程序来应用它。我自己一个人也不能使用它,因为使用时我的HDMI屏幕无法进入待机状态xscreensaver,因此我坚持使用它xautolock
德米特里·格里戈里耶夫

0

将墨水笔放在鼠标的背面下方,以将光学传感器抬起,使其对运动产生反应的距离上方;要再次使用鼠标时,请取下墨水笔。

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.