Kann ich Mausbewegungen über ein Terminal ohne xdotool simulieren?

9

Ich möchte ein Skript schreiben, um zu verhindern, dass ein Computer durch virtuelles Wackeln mit der Maus gesperrt wird. Ich habe jedoch nicht xdotoolauf dem Computer, den ich verwende, und ich kann nicht installieren, da ich nicht root bin. Gibt es eine Möglichkeit, den Cursor ohne Verwendung zu bewegen xdotool?

ichbinallen
quelle
14
Warum tun Sie dies, anstatt nur Ihren Sperrbildschirm zu deaktivieren?
HalosGhost
Wird dbus-sendeine Option zum Deaktivieren des Bildschirmschoners verwendet? Wie kann ich die Sperrfunktion des Bildschirmschoners mit D-BUS über die Befehlszeile auslösen?
slm
3
Obligatorische XKCD: xkcd.com/196
tpg2114

Antworten:

9

Dass Sie nicht installieren können, xdotoolweil Sie kein Root sind, bedeutet nicht, dass Sie das Programm nicht ausführen können, da Sie keine besonderen Berechtigungen benötigen.

Einfach herunterladen und aus dem Quellcode kompilieren .

Wenn Sie keinen Zugriff auf einen Compiler haben, können Sie das Paket direkt für Ihr System herunterladen und die Datei aus dem Paket extrahieren (für die .deberste Verwendung arkann das Extrahieren aus ausgeführt .rpmwerden rpm2cpio).

Anthon
quelle
9

Entsprechend dieser Antwort können Sie den Mauszeiger mit der Befehlszeile wie folgt bewegen:

  1. Zuerst müssen Sie ein Mauseingabegerät mit finden

    grep mouse /proc/bus/input/devices | grep event
    

    Sie sollten so etwas wie H: Handlers=mouse0 event7in meinem Fall sehen. Es könnte mehr als eine Zeile ausgeben, wenn Sie mehr als eine Maus haben (z. B. Touchpad). Der wichtige Teil ist event7, es bedeutet, dass Sie schreiben werden /dev/input/event7.

  2. Dann bewegt der folgende Mauszeiger 100 Pixel nach rechts:

    seconds=$(date +%s)
    type=2      # EV_REL
    code=0      # REL_X
    value=100   # 100 pixels
    
    printf '%08X%04X%04X%08X%08X\n' $value $code $type 0 $seconds | xxd -r -p | \
        perl -0777e 'print scalar reverse <>' > /dev/input/event7
    
    type=0      # EV_SYN
    code=0      # SYN_REPORT
    value=0
    
    printf '%08X%04X%04X%08X%08X\n' $value $code $type 0 $seconds | xxd -r -p | \
        perl -0777e 'print scalar reverse <>' > /dev/input/event7
    

Ich habe nicht getestet, ob dieses Verfahren einer echten Mausbewegung im Sinne einer Unterbrechung des Verriegelungsmechanismus entspricht.

jimmij
quelle