Wie ändere ich die Zuordnung für die Taste «PowerOff» auf der Tastatur?

15

Ich habe den Asus-Laptop ROG G551JM gekauft, der sich als Ubuntu-kompatibel erwiesen hat. Die Tastatur des Computers ist schlecht konstruiert, wobei die Taste "Poweroff" eine gewöhnliche Taste ist, die an der Stelle platziert ist, an der sich normalerweise die Taste "End" befindet. Der Computer ist ansonsten in Ordnung, also habe ich ihn mit der Annahme gekauft, dass ich das Problem irgendwie "beheben" kann, dh die PowerOff-Taste erneut der "End" -Taste zuordnen kann.

Die PowerOff-Taste wurde falsch eingestellt (ASUS G551JM): ASUS G551JM

Normalerweise gibt es eine "End" -Taste (ASUS N56VZ): ASUS N56VZ

Die „PowerOff“ -Schaltfläche Ereignisse werden durch die erzeugte /dev/input/event2: Power ButtonVorrichtung (wie von evtest) mit dem Code 116 (Beispiel Linie von evtest: Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1)

Der Schlüssel ist auch für den X-Server sichtbar, und schließlich kann Ubuntu Tastendrücke als PowerOffSchlüssel identifizieren und das halbtransparente Dialogfeld "Goodbye user Adam ..." öffnen, das meinen Willen bestätigt, den Computer tatsächlich auszuschalten.

Das Problem ist, dass die Bindung, die das Drücken der PowerOff-Taste mit der Routine verbindet, die dieses Bestätigungsdialogfeld anzeigt, unter dconf-editor nicht sichtbar ist und ich keinen Hinweis darauf habe, wo es zu finden ist.

Kann mir jemand sagen, wo ich die Standardbindung für den PowerOff-Schlüssel ändern (oder löschen) soll ???

Es sollte etwas Leichtes sein.


Bearbeiten 21.IX.2016:

Es gibt eine Möglichkeit, das Dialogfeld dauerhaft zu deaktivieren (siehe Wie ändere ich die Optionen für den Netzschalter?). . Ich hoffe, dass es nach dem Deaktivieren des Netzschalters möglich ist, ihn einem anderen Element zuzuweisen.

Adam Ryczkowski
quelle
Haben Sie das Problem gelöst? Es wäre sehr nützlich, wenn Sie hier eine Antwort posten würden.
Ezze
1
@Ezze Nicht wirklich (ich benutze aufgrund dieses Problems einen anderen Computer). Es gelang mir jedoch, den nach dem Drücken der Taste erzeugten Abschaltdialog dauerhaft zu deaktivieren. OK, ich aktualisiere die Antwort.
Adam Ryczkowski
Verwandte Frage zu Unix & Linux StackExchange.
Ezze
2
Ich hasse ASUS so sehr, weil ich diesen Schlüssel entfernt habe. Homeund Endsind die "Meta" -Schlüssel, die ich am häufigsten benutze ... :(
Matthieu

Antworten:

10

Ich konnte es auf meinem ASUS N751JK in Ubuntu 18.04 LTS und Ubuntu 16.04 LTS zum Laufen bringen (in beiden Fällen mit Unity-Desktop-Umgebung und in KDE Plasma in 18.04 getestet):

  1. Stellen Sie zunächst die Aktion der Taste "Ausschalten" auf nothing.

    Einheit

    Wie in der Antwort von Johano Fierra erwähnt :

    gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"
    

    oder alternativ sudo apt install dconf-toolsund dconf-editorzum Ändern der org.gnome.settings-daemon.plugins.powerEigenschaft verwenden (wie hier beschrieben ). Neustart oder Abmelden ist erforderlich, damit es funktioniert.

    KDE

    Zum „Systemeinstellungen“ , wählen Sie „Power Management“ Registerkarte „Hardware“ Abschnitt und wählen Sie dann „Energy Saving“ Registerkarte nach unten scrollen, finden „Wenn Power - Taste gedrückt“ Drop - Down - Liste und ändern Sie den Wert auf „Do nothing“ . Klicken Sie auf die Schaltfläche "Übernehmen" , damit die Änderungen wirksam werden.

    Energie sparen

  2. Installieren Sie xdotool :

    sudo apt install xdotool
    

    Dieser ermöglicht es uns, wichtige Ereignisse auszulösen.

  3. Der nächste Schritt ist das Auslösen des "End" -Tastendrucks beim Drücken der "Power off" -Taste.

    Ubuntu 18.04

    Erstelle eine /etc/acpi/events/powerDatei mit folgendem Inhalt:

    event=button/power
    action=/etc/acpi/power.sh "%e"
    

    und erstelle ein /etc/acpi/power.shSkript mit folgendem Inhalt:

    #!/bin/sh
    xdotool key End
    

    und füge Ausführungsberechtigungen hinzu:

    sudo chmod +x /etc/acpi/power.sh
    

    Ubuntu 16.04

    Backup-ACPI-Skript zur Behandlung des Ereignisses der Schaltfläche "Ausschalten" :

    sudo cp /etc/acpi/powerbtn.sh /etc/acpi/powerbtn.sh.backup
    

    Bearbeiten Sie es dann und finden Sie Folgendes:

    # If logind is running, it already handles power button presses; desktop
    # environments put inhibitors to logind if they want to handle the key
    # themselves.
    

    und ändere den Code unten so, dass er so aussieht:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    
  4. Um diese Änderungen anzuwenden, muss Folgendes ausgeführt werden:

    sudo acpid restart
    

    Dank Adam ist es möglich, acpidautomatisch neu zu starten , wenn sich ein Benutzer anmeldet (beim Systemstart). Fügen Sie daher sudo acpid restartnach jedem Neustart anstelle der manuellen Eingabe im Terminal die folgende Zeile hinzu:

    session optional    pam_exec.so /usr/sbin/acpid restart
    

    bis zum Ende der /etc/pam.d/common-sessionDatei.

Ezze
quelle
Was ist mit sudo acpid reloadanstatt neu zu starten? Funktioniert das?
Byte Commander
1
Was das acpid restartProblem löst , ist das Hinzufügen einer Zeile session optional pam_exec.so /usr/sbin/acpid restartam Ende von /etc/pam.d/common-session. Auf diese Weise wird das acpid direkt nach der Benutzeranmeldung neu gestartet und das ist gerade genug für mich. Problem endlich gelöst !!
Adam Ryczkowski
1
@rtindru, du solltest gsettings setstatt gsettings get.
Ezze
1
Damit dies in Kubuntu 18.04 funktioniert, musste ich power.sh Ausführungsberechtigungen erteilen: sudo chmod +x /etc/acpi/power.sh@Ezze. Vielleicht können Sie Ihre Antwort aktualisieren, um dies einzuschließen.
LGenzelis
1
@ LGenzelis, danke. Die Antwort wurde aktualisiert.
Ezze,
4

Dies sollte den Trick machen.

Im Terminal eingeben:

gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"
Johano Fierra
quelle
2
JA!!! Aber dann gibt es noch eine andere Sache: Wie ordne ich sie der Taste «end» zu?
Adam Ryczkowski
1
Betreten Sie hier Neuland, aber ich denke, Sie könnten einfach eine xmodmap-Dateikonfiguration ($ {HOME} /. Xmodmap) erstellen und diese einfügen : keycode 116 = Ende , oder geben Sie im Terminal Folgendes ein
Johano Fierra
Leider hilft es nicht. Es deaktiviert das Erfassen der Schaltfläche "Ausschalten", wie es vom xevBefehl xmodmapangezeigt wird, und verhindert das erneute Zuordnen. Übrigens kann der Schlüsselcode der Taste "Ausschalten" unterschiedlich sein (124 für mein ASUS N751JK).
Ezze
Es sollte nicht die Fähigkeit zum Erfassen der Schaltfläche deaktivieren ... aber wie wäre es damit. In Terminal eingeben : gsettings set org.gnome.settings-daemon.plugins.power button-power "shutdown"(Drücken der Taste wird erfasst), dann /etc/acpi/events/powerbtndie Zeile bearbeiten und auskommentieren #action=/etc/acpi/powerbtn.shund dann in Terminal eingeben: xmodmap -e "keycode 124 = End"Dies sollte verhindern, dass der Ein- / Ausschalter etwas unternimmt und es gleichzeitig der End-Taste zuordnet.
Johano Fierra
1
Dies hilft auch nicht weiter, da das "Power off" -Ereignis nicht nur vom powerbtn.shSkript, sondern auch vom (zumindest) systemd-logindDienst behandelt wird (wahrscheinlich wird die button-powerEinstellung verwendet, die Sie in Ihrer Antwort angegeben haben). Sie finden if pidof systemd-logind >/dev/null; then... exit 0in powerbtn.shder Zeile, in der das Skript das systemd-logind"Ausschalten" -Ereignis selbstständig behandeln kann, wenn die Desktopsitzung aktiv ist. Eine Sache, mit der Sie Recht haben: Wenn Sie den button-powerWert ändern , wirkt sich dies nicht auf die Fähigkeit aus, den Schlüssel zu erfassen, aber er wird bereits von einem Prozess ( systemd-logindoder einem anderen) erfasst .
Ezze