web-dev-qa-db-ja.com

マウスがディスプレイをスタンバイからウェイクアップさせないでください

コンピュータをしばらく離れるときは、ディスプレイを省電力/スタンバイモードにするのが好きです。過敏なマウスがいなくても大丈夫でしょう。時々、ドライバーは肉眼では見えない動き(つまりカーソル)を読み取り、省電力を破ります。スタンバイに戻る前に、さらに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がその考えを知らなければ、それでうまくいくと思います。

12
nperson325681

Unix SEサイトには、これをカバーする@pbmによる すばらしい投稿 があります。

つまり、最初にxinput listを使用してマウスのデバイスIDを取得してから、

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

そして

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

マウスを無効および有効にします。

ここでは、マウスを無効にしてからxset dpms force standbyを呼び出すことにより、これらをテストしました。マウスを数秒間振っても画面が乱れることはありませんでしたが、1つのキーを押すだけで問題なく動作しました。次に、2番目のコマンドを使用すると、デフォルトの起動スクリプトで設定された「一定の減速」設定を含め、マウスが通常の状態に戻りました。

これらの2つのコマンドを-startCmdおよび-endCmdオプションのxlockに渡して、目的の情報を取得できるはずです。

5
Paul Whittaker

私は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の代わりにフルネームを使用することをお勧めします。

これがお役に立てば幸いです。

4
MiLo