Greifen Sie über das ACPI-Bash-Skript unter Debian auf xinput zu

Greifen Sie über das ACPI-Bash-Skript unter Debian auf xinput zu

Ich versuche, mithilfe der ACPI-Ereignisse eine nicht funktionierende Sondertaste auf meiner Tastatur zu programmieren, und habe ACPI bereits dazu gebracht, einen Tastendruck zu erkennen und an ein Shell-Skript weiterzuleiten. Aus irgendeinem Grund kann ich jedoch keinen Aufruf von xinput ausführen; es wird immer mit einem Exit-Code von 1 und ohne Ausgabe zurückgegeben. Wenn ich das Shell-Skript manuell ausführe, funktioniert es.

Mir ist auch aufgefallen, dass ich beim xinput --versionmanuellen Aufruf ein korrektes Ergebnis erhalte, beim Aufruf über die ACPI jedoch die Exitcodes 1 und zurückgegeben werden Server: failed to open display. Ich nehme also an, dass diese irgendwie zusammenhängen.

Mein Bash-Skript ist im Moment recht einfach, aber wenn ich xinput nicht aufrufen kann, ist es ziemlich wertlos (da ich es mithilfe von xinput-Befehlen aktivieren/deaktivieren können muss).

#!/bin/bash
touch="0000006b"

if [ "$3" != $touch ]; then
    # Ignore, not a touchpad event
    echo "$3 is not matching $touch, ignoring"
    exit 0  
fi

# Process event
echo "Got a touchpad keypress"

getTouchDeviceId()
{
    # extract the device id for the supplied touch device name
    xinput list | sed -nr "s|.*$1.*id=([0-9]+).*|\1|p"
}

ENABLEPROP="Device Enabled"
# Get the xinput device number and enabling property for the touchpad
XINPUTNUM=$(getTouchDeviceId "PS/2 Elantech Touchpad")

# Removed the rest

Ich habe viele Dinge doppelt überprüft (die Umgebung sollte in Ordnung sein, sie kann die ausführbare Datei finden) und ich weiß, dass der Code irgendwann funktioniert hat (er basiert auf dem Code, der inUbuntuin der Vergangenheit.

Ein Whoami im Skript hat gezeigt, dass es als Root ausgeführt wird, während die Desktop-Umgebung wahrscheinlich mit meinem normalen Benutzerkonto verknüpft ist, aber ich bin nicht sicher, wie ich das beheben könnte …

Bearbeiten: Wenn Sie xinput als Root von einem Terminal aus ausführen (oder die Shell manuell als Root ausführen), funktioniert es. Wenn es als Root über das vom ACPI aktivierte Skript aufgerufen wird, funktioniert es nicht.

Hat jemand einen Vorschlag, wie ich das beheben könnte?

Antwort1

xinput benötigt die Umgebungsvariablen DISPLAY und XAUTHORITY. „Exportieren“ Sie diese oben im Skript.

verwandte Informationen