不要让鼠标唤醒处于待机状态的显示器

不要让鼠标唤醒处于待机状态的显示器

当我离开电脑一段时间时,我喜欢将显示器置于省电/待机模式。如果不是鼠标过于敏感,那就没问题了。有时驱动程序会读取一些肉眼看不见的移动(即光标),从而破坏省电模式。它会再等待 10 分钟,然后才回到待机状态。

我的解决方法是将以下脚本绑定到C-S-q

xlock -startCmd 'xset dpms 2 2 2' -endCmd 'xset dpms 600 1200 1300' -mode blank -echokeys -timeelapsed +usefirst

通过使用,xset我将值设置为每次 2 秒,然后进入待机状态。无论如何,这并不好。有时我想在输入密码之前阅读一些很酷的运势。我可以让光标保持移动,但它很笨拙。(顺便说一句,xlock 的选项mousemotion没有帮助——它只是隐藏光标,但显示屏仍然会亮起。)

所以问题是:有没有办法让显示器进入待机状态并保持待机状态直到按下键盘键?我正在运行 gentoo 和最新的 Xorg,但我希望答案不必特定于发行版。

基本上答案可以很简单如何在命令行中启用/禁用鼠标? 如果 DPMS 不知道这个想法的话,我认为这就可以完成工作。

答案1

有一个很棒的帖子@pbm 在 Unix SE 网站上介绍了这一内容。

简而言之,首先使用xinput list获取鼠标的设备 ID,然后使用

xinput --set-prop [ID#] "Device Enabled" "0"

xinput --set-prop [ID#] "Device Enabled" "1"

禁用和启用鼠标。

我刚刚通过禁用鼠标然后调用 来测试这些xset dpms force standby。挥动鼠标几秒钟不会干扰屏幕,但按一个键就可以了。然后使用第二个命令将鼠标恢复正常,包括我的默认启动脚本为我设置的“恒定减速”设置。

您应该能够将这两个命令传递给-startCmd-endCmd选项以xlock获得您想要的结果。

答案2

我在 Ubuntu 中这样做:

#!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

一些说明:

  • 我也强制关闭显示器。
  • 最好使用全名而不是ID。

我希望这个对你有用。

答案3

与MiLo答案类似但没有dbus:

MOUSE="Logitech Wireless Mouse"

# Disable mouse
xinput --set-prop "${MOUSE}" "Device Enabled" "0"

# Turn off screen
xset dpms force off

# Wait to screen to be on again to enable mouse
while true; do
  status=$(xset q | grep -o "^\s*Monitor is .*" | grep -o -e On -e Off)
  if [[ $status == "On" ]]; then
    xinput --set-prop "${MOUSE}" "Device Enabled" "1"
    exit 0
  fi
  sleep 1
done

相关内容