Lassen Sie die Maus nicht aus dem Standby-Modus aufwachen

12

Ich versetze meine Displays gerne in den Energiesparmodus / Standby-Modus, wenn ich den Computer für eine Weile verlasse. Es wäre in Ordnung, wenn es keine überempfindliche Maus gäbe. Manchmal liest der Fahrer eine Bewegung ein, die für das bloße Auge (also den Cursor) nicht sichtbar ist, und bricht den Energiesparmodus. Es würde weitere 10 Minuten warten, bevor es in den Standby-Modus zurückkehrte.

Meine Problemumgehung ist das folgende Skript, an das gebunden ist C-S-q:

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

Mit stelle xsetich die Werte auf jeweils 2 Sekunden ein, bevor ich in den Standby-Modus gehe. Es ist sowieso nicht schön. Manchmal gibt es coole Dinge, die ich lesen möchte, bevor ich das Passwort eingebe. Ich könnte den Cursor in Bewegung halten, aber es ist klobig. (Übrigens hilft die Option von xlock mousemotionnicht weiter - sie blendet nur den Cursor aus, aber die Anzeigen werden trotzdem aktiviert .)

Die Frage ist also: Gibt es eine Möglichkeit, Anzeigen in den Standby-Modus zu versetzen und dort zu bleiben, bis eine Tastaturtaste gedrückt wird? Ich verwende gentoo und das aktuelle Xorg, aber ich hoffe, die Antwort muss nicht distro-spezifisch sein.

Grundsätzlich kann die Antwort so einfach sein wie das Aktivieren / Deaktivieren der Maus in der Befehlszeile ? Ich denke, das würde funktionieren, wenn DPMS die Idee nicht kennt.

unperson325680
quelle
1
Wenn es die Hardware ist, die das Problem verursacht, könnte die Hardware die Lösung sein. Bewegen Sie den Mauszeiger, bis Sie sie verwenden möchten. (Okay, das war sarkastisch, aber du verstehst, worum es geht).
new123456
Kein schlechter Vorschlag, aber er würde immer noch etwas lesen, während er auf dem Kopf steht :)
unperson325680
Selbst die empfindlichsten optischen Mäuse registrieren keine Bewegung, ohne dass sich ein Objekt in einem Umkreis von ungefähr einem Zoll um den Sensor befindet. Wenn es sich um eine mechanische Maus handelt, lassen Sie den Ball einfach herausspringen, um den gleichen Effekt zu erzielen.
Shinrai
1
Eh. Stellen wir uns etwas vor, bei dem die Maus nicht umgedreht werden muss. :)
unperson325680
Nein, du hast recht, das ist eine gute Frage (und deshalb habe ich sie hochgestuft). Aber ich stimme @ new123456 zu, dass manchmal eine mechanische Lösung einfacher ist (und es kann sein, dass diesbezüglich niemand für Sie durchkommt - ich bin kein Linux-Typ, also kann ich das sicher nicht).
Shinrai,

Antworten:

5

Es gibt einen großartigen Beitrag von @pbm, der dies behandelt, auf der Unix SE-Site.

Kurz gesagt, verwenden Sie zuerst xinput list, um die Geräte-ID für Ihre Maus abzurufen, und verwenden Sie dann

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

und

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

um die Maus zu deaktivieren und zu aktivieren.

Ich habe diese hier gerade getestet, indem ich die Maus deaktivierte und dann anrief xset dpms force standby. Das Wackeln der Maus für einige Sekunden hat den Bildschirm nicht gestört, aber das Drücken einer einzigen Taste hat gut funktioniert. Mit dem zweiten Befehl wurde die Maus wieder normalisiert, einschließlich der Einstellung "Konstante Verzögerung", die meine Standard-Startskripts für mich festgelegt haben.

Sie sollten in der Lage sein, diese beiden Befehle an die Optionen -startCmdund -endCmdzu übergeben xlock, um zu ermitteln, wonach Sie suchen.

Paul Whittaker
quelle
1
Anstatt die Option --set-prop zusammen mit der Eigenschaft "Gerät aktiviert / deaktiviert" zu verwenden, können auch die Optionen --enable und --disable verwendet werden, z. B. xinput --enable [Gerät] und xinput --disable [Gerät]. .
Thebodzio
4

Ich mache es so in 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 )

Einige Notizen:

  • Ich zwinge auch den Monitor auszuschalten.
  • Verwenden Sie besser den vollständigen Namen anstelle der ID.

Ich hoffe das hilft.

MiLo
quelle
Sieht gut aus, aber ich verwende weder dbus noch gnome, also probiere ich es nicht aus.
unperson325680