Como alterar o mapeamento para a tecla «PowerOff» no teclado?

13

Comprei o laptop ROG G551JM Asus, que provou ser compatível com o Ubuntu. O teclado do computador está mal projetado, com a chave "Poweroff" sendo uma chave comum, colocada no local, onde normalmente se encontra a tecla "End". O computador está bem, caso contrário, comprei-o com a suposição de que seria capaz de "consertar" o problema de alguma forma, ou seja, remapear o botão PowerOff para a tecla "End".

O botão PowerOff errou (ASUS G551JM):

Normalmente existe uma tecla "End" (ASUS N56VZ):

Os eventos do botão "PowerOff" são produzidos pelo dispositivo /dev/input/event2: Power Button (conforme relatado por evtest ) com o código 116 (exemplo line from evtest : Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1 )

A chave também é visível para o servidor X e, por fim, o Ubuntu pode identificar pressionamentos de teclas como PowerOff e lança a caixa de diálogo semi-transparente "Adeus usuário Adam ..." que confirma minha vontade de realmente transformar o computador off.

O problema é que a ligação que liga a tecla PowerOff à rotina que exibe essa caixa de diálogo de confirmação não é visível no editor-dconf e eu não tenho nenhuma dica onde encontrá-la.

Alguém pode me dizer, onde alterar (ou excluir) a ligação padrão para a chave PowerOff ???

Deve ser algo fácil.

editar 21.IX.2016:

Existe uma maneira de desativar permanentemente a caixa de diálogo, veja Como modifico as opções do botão liga / desliga? . Espero que depois de desabilitar o botão de energia, seja possível reatribuí-lo a outra coisa.

    
por Adam Ryczkowski 02.02.2015 / 18:14

2 respostas

9

Consegui que funcionasse no meu ASUS N751JK e no Ubuntu 16.04 LTS:

  1. Primeiro de tudo, ajuste a ação do botão "Desligar" para nothing como mencionado na resposta de Johano Fierra :

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

    ou, alternativamente, sudo apt install dconf-tools e use dconf-editor para fazer isso (como descrito aqui ). É necessário reiniciar ou efetuar logout para que funcione.

  2. Instale o xdotool :

    sudo apt install xdotool
    

    Este nos permitirá acionar os principais eventos.

  3. Script ACPI de backup usado para manipular o evento do botão "Desligar":

    sudo cp /etc/acpi/powerbtn.sh /etc/acpi/powerbtn.sh.backup
    
  4. Edite o script etc/acpi/powerbtn.sh , encontre o seguinte:

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

    e modifique o código abaixo para que pareça:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    

    Ele acionará o botão "Fim" e sairá quando a sessão da área de trabalho estiver ativa.

  5. Para aplicar essas alterações, é preciso executar:

    sudo acpid restart
    

Infelizmente, a desvantagem desse método é que a execução de sudo acpid restart manualmente é necessária após cada reinicialização do sistema. Ele não funciona como esperado automaticamente quando o sistema é iniciado (embora exista acpid process) e se pareça com algo descrito em este tópico desatualizado .

Eu tentei maneiras diferentes de reiniciar acpid automaticamente em /etc/rc.local ou em um script bash separado, especificado como session-setup-script de LightDM com combinações diferentes usando os comandos sleep ou at . Mas sem sorte. Provavelmente, existem alguns erros que impedem que ele inicie normalmente. Seria muito útil se alguém encontrasse uma solução para isso ... no entanto, acho que é outra questão.

ATUALIZAÇÃO em 21 de janeiro de 2017

Graças a Adam é possível reiniciar acpid automaticamente quando um usuário faz o login. Então, em vez de manual sudo acpid restart no terminal toda vez após a reinicialização, adicione a seguinte linha:

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

ao final do arquivo /etc/pam.d/common-session .

Confirmo que também funciona para o ASUS N751JK e para o ASUS GL552VW.

    
por Ezze 22.09.2016 / 02:15
4

Isso deve funcionar.

Digite no terminal:

gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"
    
por Johano Fierra 02.02.2015 / 18:17