web-dev-qa-db-fra.com

Comment changer le mapping pour la touche «PowerOff» sur le clavier?

J'ai acheté l'ordinateur portable ROG G551JM Asus, qui s'est avéré compatible avec Ubuntu. Le clavier de l'ordinateur est mal conçu, la touche "Poweroff" étant une clé ordinaire placée à l'endroit où se trouve habituellement la touche "Fin". L’ordinateur fonctionne bien sinon, je l’ai acheté en supposant que je serais en mesure de "réparer" le problème, c’est-à-dire de remapper le bouton PowerOff dans la touche "Fin".

Le bouton PowerOff rendu incorrect (ASUS G551JM):  ASUS G551JM

Normalement, il existe une clé "Fin" (ASUS N56VZ):  ASUS N56VZ

Les événements du bouton "PowerOff" sont générés par le périphérique /dev/input/event2: Power Button (signalé par evtest) avec le code 116 (exemple de ligne de evtest: Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1).

La clé est également visible par le serveur X et, en fin de compte, Ubuntu peut identifier les appuis sur la touche comme une touche PowerOff et lance la boîte de dialogue semi-transparente "Au revoir l'utilisateur Adam ..." qui confirme ma volonté d'éteindre l'ordinateur. .

Le problème est que la liaison qui lie la touche PowerOff à la routine qui affiche cette boîte de dialogue de confirmation n’est pas visible sous dconf-editor et je n’ai aucune indication où la trouver.

Quelqu'un peut-il me dire où changer (ou supprimer) la liaison par défaut pour la clé PowerOff ???

Cela devrait être quelque chose de facile.


modifier le 21.IX.2016:

Il existe un moyen de désactiver de manière permanente la boîte de dialogue, voir Comment modifier les options du bouton d'alimentation? . J'espère qu'après avoir désactivé le bouton d'alimentation, il sera possible de le réaffecter à autre chose.

15
Adam Ryczkowski

J'ai pu le faire fonctionner sur mon ASUS N751JK sous Ubuntu 18.04 LTS et Ubuntu 16.04 LTS (testé avec l'environnement de bureau Unity dans les deux cas et le KDE Plasma dans 18.04):

  1. Tout d’abord, définissez l’action du bouton "Power Off" sur nothing.

    Unité

    Comme mentionné dans la réponse de Johano Fierra :

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

    ou alternativement Sudo apt install dconf-tools et utilisez dconf-editor pour modifier la propriété org.gnome.settings-daemon.plugins.power (comme décrit ici ). Un redémarrage ou une déconnexion est nécessaire pour que cela fonctionne.

    KDE

    Allez à "Paramètres système" , sélectionnez "Onglet" Gestion de l'alimentation " dans " Matériel " section et puis sélectionnez "Onglet" Économie d'énergie ", faites défiler vers le bas, recherchez " Lorsque le bouton d'alimentation est enfoncé " liste déroulante et change sa valeur en "Ne rien faire" . Cliquez sur le bouton "Appliquer" pour que les modifications prennent effet.

    Energy saving

  2. Installer xdotool :

    Sudo apt install xdotool
    

    Celui-ci nous permettra de déclencher des événements clés.

  3. La prochaine étape consiste à déclencher "End" , appuyez sur la touche "Mise hors tension" .

    Ubuntu 18.04

    Créez le fichier /etc/acpi/events/power avec le contenu suivant:

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

    et créez le script /etc/acpi/power.sh avec le contenu suivant:

    #!/bin/sh
    xdotool key End
    

    et ajoutez-y des autorisations d'exécution:

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

    Ubuntu 16.04

    Script de sauvegarde ACPI utilisé pour gérer l'événement du bouton "Éteindre" :

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

    Puis modifiez-le, recherchez ce qui suit:

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

    et modifiez le code ci-dessous pour qu'il ressemble à:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    
  4. Pour appliquer ces modifications, exécutez:

    Sudo acpid restart
    

    Grâce à Adam , il est possible de redémarrer acpid automatiquement lorsqu'un utilisateur se connecte (au démarrage du système). Donc, au lieu de manuel Sudo acpid restart dans le terminal chaque fois après le redémarrage, ajoutez la ligne suivante:

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

    jusqu'à la fin du fichier /etc/pam.d/common-session.

10
Ezze

Cela devrait faire l'affaire.

Entrez dans le terminal:

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