¿Cómo cambiar la asignación de la tecla «PowerOff» en el teclado?

15

Compré la computadora portátil ROG G551JM Asus que demostró ser compatible con Ubuntu. El teclado de la computadora está mal diseñado con la tecla "Poweroff" como una tecla ordinaria, colocada en el lugar, donde generalmente se encuentra la tecla "Fin". De lo contrario, la computadora está bien, así que la compré suponiendo que de alguna manera podría "solucionar" el problema, es decir, reasignar el botón PowerOff en la tecla "Fin".

El botón PowerOff está mal (ASUS G551JM): ASUS G551JM

Normalmente hay una tecla «Fin» (ASUS N56VZ): ASUS N56VZ

Los eventos de botón "de apagado" son producidas por el /dev/input/event2: Power Buttondispositivo (como se informa por evtest) con código 116 (ejemplo de línea de evtest: Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1)

La clave también es visible para el servidor X, y finalmente Ubuntu puede identificar las pulsaciones de teclas como una PowerOfftecla y lanza el cuadro de diálogo semitransparente "Adiós usuario Adam ..." que confirma mi voluntad de apagar la computadora.

El problema es que el enlace que une la tecla PowerOff con la rutina que muestra ese diálogo de confirmación no es visible en dconf-editor y no tengo idea de dónde encontrarlo.

¿Alguien puede decirme dónde cambiar (o eliminar) el enlace predeterminado para la tecla PowerOff?

Debería ser algo fácil.


editar 21.IX.2016:

Hay una manera de deshabilitar permanentemente el cuadro de diálogo, consulte ¿Cómo modifico las opciones para el botón de encendido? . Espero que después de deshabilitar el botón de encendido, sea posible reasignarlo a otra cosa.

Adam Ryczkowski
fuente
¿Has resuelto el problema? Sería muy útil si publicas una respuesta aquí.
Ezze
1
@Ezze No realmente (estoy usando una computadora diferente debido a este problema). Pero logré desactivar permanentemente el diálogo de apagado producido después de presionar la tecla. OK, actualizaré la respuesta.
Adam Ryczkowski
Pregunta relacionada sobre Unix y Linux StackExchange.
Ezze
2
Odio tanto a ASUS por eliminar esa llave. Homey Endson las teclas "meta" que más uso ... :(
Matthieu

Respuestas:

10

Pude hacerlo funcionar en mi ASUS N751JK en Ubuntu 18.04 LTS y Ubuntu 16.04 LTS (probado con el entorno de escritorio Unity en ambos casos y KDE Plasma en 18.04):

  1. En primer lugar, configure la acción del botón "Apagar" en nothing.

    Unidad

    Como se menciona en la respuesta de Johano Fierra :

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

    o alternativamente sudo apt install dconf-toolsy usar dconf-editorpara cambiar la org.gnome.settings-daemon.plugins.powerpropiedad (como se describe aquí ). Se requiere reiniciar o cerrar sesión para que funcione.

    KDE

    Vaya a "Configuración del sistema" , seleccione la pestaña "Administración de energía" en la sección "Hardware" y luego seleccione la pestaña "Ahorro de energía" , desplácese hacia abajo, busque la lista desplegable "Al presionar el botón de encendido" y cambie su valor a "No hacer nada" . Haga clic en el botón "Aplicar" para que los cambios surtan efecto.

    El ahorro de energía

  2. Instalar xdotool :

    sudo apt install xdotool
    

    Este nos permitirá activar eventos clave.

  3. El siguiente paso es activar la tecla "Fin" al presionar el botón "Apagar" .

    Ubuntu 18.04

    Cree un /etc/acpi/events/powerarchivo con los siguientes contenidos:

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

    y crea un /etc/acpi/power.shscript con los siguientes contenidos:

    #!/bin/sh
    xdotool key End
    

    y agregarle permisos de ejecución:

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

    Ubuntu 16.04

    Secuencia de comandos ACPI de respaldo utilizada para manejar el evento del botón "Apagar" :

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

    Luego edítelo, encuentre lo siguiente:

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

    y modifique el código a continuación para que se vea así:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    
  4. Para aplicar estos cambios, se debe ejecutar:

    sudo acpid restart
    

    Gracias a Adam , es posible reiniciar acpidautomáticamente cuando un usuario inicia sesión (en el arranque del sistema). Entonces, en lugar del manual sudo acpid restarten la terminal cada vez que se reinicie, agregue la siguiente línea:

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

    hasta el final del /etc/pam.d/common-sessionarchivo.

Ezze
fuente
¿Qué pasa en sudo acpid reloadlugar de reiniciar? Funcionaría eso?
Byte Commander
1
Lo que resuelve el acpid restartproblema es agregar una línea session optional pam_exec.so /usr/sbin/acpid restartal final de /etc/pam.d/common-session. De esta forma, el acpid se reiniciará justo después del inicio de sesión del usuario y esto es suficiente para mí. ¡Problema resuelto por fin!
Adam Ryczkowski
1
@rtindru, deberías en gsettings setlugar de gsettings get.
Ezze
1
Para que esto funcione en Kubuntu 18.04, tuve que otorgar permisos de ejecución a power.sh: sudo chmod +x /etc/acpi/power.sh@Ezze, tal vez podría actualizar su respuesta para incluir esto.
LGenzelis
1
@LGenzelis, gracias. Se actualizó la respuesta.
Ezze
4

Esto debería funcionar.

Ingrese en la terminal:

gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"
Johano Fierra
fuente
2
¡¡¡SI!!! Pero luego hay otra cosa: ¿cómo mapearlo en la tecla «fin»?
Adam Ryczkowski
1
Ingresando un territorio desconocido aquí, pero creo que podría crear una configuración de archivo xmodmap ($ {HOME} /. Xmodmap) y luego poner esto en ella: keycode 116 = End , o ingresar en la terminal: xmodmap -e "keycode 116 = End "
Johano Fierra
Lamentablemente, no ayuda. Deshabilita la captura del botón "Apagar" como se ve por xevcomando y evita xmodmapvolver a asignarlo. Y, por cierto, el código clave del botón "Apagar" puede ser diferente (124 para mi ASUS N751JK).
Ezze
No debería deshabilitar la capacidad de capturar el botón ... pero ¿qué tal esto? Ingrese en la terminal: gsettings set org.gnome.settings-daemon.plugins.power button-power "shutdown"(al presionar el botón se captura), luego edite /etc/acpi/events/powerbtny comente la línea #action=/etc/acpi/powerbtn.sh, y luego ingrese en la terminal: xmodmap -e "keycode 124 = End"Esto debería evitar que el botón de encendido haga algo y al mismo tiempo asignarlo a la tecla Finalizar.
Johano Fierra
1
No ayuda demasiado porque el evento "Apagado" se maneja no solo por powerbtn.shscript sino también por (al menos) systemd-logindservicio (probablemente, utiliza la button-powerconfiguración que mencionó en su respuesta). Puede encontrar if pidof systemd-logind >/dev/null; then... la exit 0línea en powerbtn.shla que el script permite systemd-logindcontrolar el evento "Apagar" por sí solo cuando la sesión de escritorio está activa. Algo en lo que tiene razón: cambiar el button-powervalor no afecta la capacidad de capturar la clave, pero ya está capturada por algún proceso ( systemd-logindu otro).
Ezze