¿Cómo puedo reasignar persistentemente claves en Ubuntu 16.04?

23

Esto está funcionando para la sesión actual:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

Luego creé este archivo de configuración:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

Pero no funciona después de un reinicio. ¿Cómo podría forzar la reasignación para sobrevivir al reinicio?

Costales
fuente
Acabo de responder esto usando xkbaquí: askubuntu.com/a/960097/554991 .
danwild

Respuestas:

15

He estado usando 16.04 durante un tiempo y parece que usa sddm como administrador de escritorio. Solía ​​ser LightDM y GDM antes de eso. Ambos predacesores están documentados para cargarse ~/.Xmodmapautomáticamente, pero no puedo encontrar nada que explícitamente diga que sddm hace.

Por lo tanto, puede ser aconsejable forzarlo a cargar con un nuevo script. Solo necesita correr xmodmap ~/.Xmodmapy puede hacerlo de varias maneras:

Probablemente hay algunas docenas de otras formas de manejar esto, esencialmente haciendo lo mismo.

Oli
fuente
2
¡Gracias por el consejo! Agregar al inicio no funcionó y ~ / .xinitrc no sale. ¡Pero agregue "xmodmap ~ / .Xmodmap" a ~ / .bashrc funcionó! :)
Costales
1
Agregarlo a través de las herramientas gráficas de inicio (que crea una nueva entrada ~/.config/autostart) funciona aproximadamente la mitad del tiempo. He reiniciado unas 10 veces y 5 veces el comando se ha ejecutado y las otras 5 veces no. :-(
Alexander Rechsteiner
1
@Alexander Rechsteiner: Esto parece ser un problema en Ubuntu 16.04. He estado jugando con los comandos de inicio y la reasignación de teclas, y el comportamiento parece muy inconsistente. No soy un experto en este tipo de cosas, pero parece completamente ridículo para que sea pasando ...
nicorellius
6

Agregué un archivo /etc/X11/Xsession.d/80_xmodmapcon estos contenidos:

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

Esto funciona todo el tiempo.

Stuart K. Smith
fuente
Parece que funciona, pero estos son los mensajes que recibo en .xsessions-errors: .Xmodmap: 1: bad keysym in remove modifier list 'Caps_Lock', no hay códigos de teclas correspondientes, este es mi .Xmodmap: $ cat .Xmodmap remove Lock = Caps_Lock keycode 9 = Escape keycode 66 = Escape
MaikoID
4

Abra gnome-session-properties. agregar comando y nombre. el archivo de escritorio se creará en ~ / .config / autostart.

recordatorio: use la ruta absoluta , por ejemplo /home/xxx/.Xmodmap. nunca use '~' como su directorio de inicio.

eexpress utópico
fuente
2

En mi larga experiencia con la reasignación de teclas en Ubuntu, la solución permanente es modificar un archivo llamado evdeven /usr/share/X11/xkb/keycodes.

Ejecute este comando en el símbolo del sistema.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

Recuerde que gedit es un editor de texto de Ubuntu, por lo que puede usar nano o vim en lugar de gedit.

El archivo tiene el formato: ALIAS: CÓDIGO. Puede intercambiar botones intercambiando códigos de diferentes teclas. Por ejemplo, para intercambiar RCONTROL con RETURN, edite dos líneas en evdev en esto:

<RTRN> = 105;

<RCTL> = 36;

Para conocer el código numérico de un botón, ejecute xeven el terminal

Consulte la documentación para más información. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf

GilbertS
fuente
1

Navegar a

/usr/share/X11/xkb/symbols

Con privilegios de sudo, en un editor, abra el diseño que desea editar. Reemplazar los valores.

Después de reiniciar, se aplicarán los cambios.


Aquí hay un ejemplo que uso para reasignar mi teclado debido a problemas de hardware del teclado.

ejemplo de reasignación del teclado

cuaeado
fuente
2
Esas ediciones se sobrescribirán la próxima vez que se actualicen los paquetes que poseen esos archivos.
muru
Eso puede ser cierto, pero dudo que estos se actualicen específicamente muy a menudo. He estado satisfecho con esta solución durante algunos meses desde que resolví el problema y ni una sola vez tuve que hacer nada adicional. Y para evitar esto, puede guardar el archivo y reemplazarlo en caso de tal evento o, (lo que parece más seguro) simplemente recrear el proceso.
sorprendido
1

Después de buscar en Google, pude resolver la reasignación de teclas defectuosas de mi computadora portátil. Todas las teclas defectuosas en mi Thinkpad T400 funcionan bien después de la reasignación. Además, es permanente sin una carga adicional en el núcleo de la CPU.

  • Primero encuentre la distribución de su teclado o código de tecla usando el siguiente comando

    xevv -event keyboard 
    
  • Por ejemplo, en mi código clave Thinkpad T400 que se encuentra de la siguiente manera:

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • Reasignando las teclas de caracteres "z" "x" "c" "v" asignando teclas de función "F6" "F10" "F11" "F12".

  • Modifique las líneas como se muestra a continuación (haga una copia de seguridad del archivo antes de realizar cambios en la reversión fácilmente si las cosas salen mal).

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • Encuentre las líneas y cambie el valor de la siguiente manera:

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • Comente estas líneas o elimine las líneas:

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • Guardar y Salir.

  • Reasignación de teclas especiales.

  • Haga una copia de seguridad del archivo antes de realizar cambios en la reversión si las cosas salen mal.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • Agregue o modifique las líneas siguientes en la función "xkb_symbols" edición "{"

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • Guardar y Salir.

  • Limpiar cache.

    sudo rm -rf /var/lib/xkb/*
    
  • Reiniciar.

Sanalgoritmo
fuente
Mapeé una tecla de flecha rota (cursor) a otra tecla usando esta técnica. Es simplemente (xev) y presione la tecla nueva para obtener su código de escaneo, luego edite / usr / share / X11 / xkb / keycodes / evdev para reemplazar el código clave original de la tecla de flecha con el nuevo código clave y eliminar la línea de la nueva tecla de flecha con su original Scancode. Comenté donde hice un cambio y mantuve una copia de seguridad del archivo. Después de un reinicio, funciona perfectamente, incluidas las combinaciones shift / ctrl / alt con la nueva tecla de flecha. Y el cambio debe dejarse en su lugar incluso al actualizar paquetes y actualizaciones de versiones del sistema operativo.
Mateo
1

Editor gráfico

gnome-tweaks > Teclado y mouse> Opciones de diseño adicionales

Mapas clave

Jonathan
fuente
0

Debido a que los archivos .Xmodmap son mucho más fáciles de editar que xkb, uso .Xmodmap como un archivo 'fuente', luego lo convierto a xkb (el estándar actual) y auto-carga en el arranque usando el método .bashrc.

Son unos sencillos pasos publicados aquí .

Funciona perfectamente y utiliza xkb a prueba de futuro cuando se abandona el soporte para .Xmodmap.

u2n
fuente