Quiero reasignar el bloqueo de mayúsculas para escapar en X11 (es decir, presionar el botón de bloqueo de mayúsculas físico será interpretado como esc por las aplicaciones y el comportamiento de esc no cambiará). La solución debe sobrevivir a un reinicio X . xmodmap y setxkbmap son soluciones aceptables (como lo son los programas similares). No quiero tratar con una GUI, ya que quiero que la solución sea portátil y una parte de mis archivos de puntos. Si me falta una solución mejor / más fácil / más obvia, dígame, aunque tenga en cuenta que no estoy usando un DE (probando i3wm).
Hasta ahora he intentado usar xmodmap y setxkbmap con poco éxito.
Aquí está mi intento de usar xmodmap:
# ~/.xinitrc
xmodmap ~/.xmodmap
y
# ~/.xmodmap
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
Ejecutar $ xmodmap ~/.xmodmap
desde la línea de comandos funciona y hace lo que quiero. El problema es que esto se restablece cada vez que x se reinicia. Ahí es donde espero que llegue el xinitrc, ¿no debería cargarse cada vez que x se inicia y ejecuta el comando xmodmap? Si el comando funciona, ¿por qué no hace nada cuando se lee desde un archivo?
He intentado un par de cosas con setxkbmap, ninguno de los cuales funcionó. Los dos intentos a continuación estaban en el archivo en momentos separados.
# ~/.xinitrc
setxkbmap -option caps:esc # attempt 1
setxkbmap -option esc:nocaps # attempt 2
Ninguno de los comandos hizo nada perceptible desde la línea de comandos, por lo que supongo que he entendido mal el comando. Me gusta la idea de esta solución porque es de una sola línea y no requiere nada en otro archivo. Si tan solo funcionara.
¿Es .xinitrc el archivo incorrecto para usar? Sé que startx se está cargando desde ~ / .xinitrc.
Solicito que las posibles soluciones contengan el (los) archivo (s) completo (s), no solo una línea (si se requiere más de una en el archivo) para no estropear algunos pasos intermedios. Por ejemplo, si necesito algo en .xinitrc y algo en .xcapsrebind, muestre ambos archivos y todo el contenido requerido (también puedo manejar que me digan que agregue algo al final, pero si se requiere un & o similar, por favor dime).
.xinitrc
:setxkbmap -option caps:escape
xmodmap
en.xinitrc
debería funcionar. Es lo que hago. ¿Tal vez mapear algo inusual, para asegurarse de que realmente se está ejecutando cuando comienza x? Además, ¿qué entorno de escritorio / administrador de ventanas utiliza? KDE periódicamente "corrige" la asignación de mi teclado sin que yo se lo diga. Tal vez verifique la configuración de su escritorio para asegurarse de que nada se esté ejecutandoxmodmap
a sus espaldas.~/.xinitrc
no se está ejecutando. Estoy usando i3wm y no DE en este momento, aunque lo mismo estaba sucediendo en Pantheon cuando lo intenté. Por lo que puedo decir, i3 no se mete con el xinitrc ni carga el suyo (pero soy un novato, entonces, ¿qué sé?).Option "XkbOptions" "caps:escape"
en unX
archivo de configuración del teclado, por ejemplo/etc/X11/xorg.conf.d/10-keyboard.conf
Respuestas:
EDITAR: Como ha señalado un usuario útil, mi solución inicial no sobrevivirá a una actualización. Su solución en los comentarios debería funcionar. Si prefiere intercambiar Caps Lock y Escape en su lugar, recomendaría agregar los siguientes comandos desde su .xinitrc o desde la configuración de i3:
.xinitrc:
archivo de configuración de i3 (normalmente ubicado en .config / i3 / config o en .i3 / config)
Me doy cuenta de que esta pregunta es bastante antigua, pero pensé que podría agregar una respuesta para aquellos de nosotros que todavía estamos tratando de resolver esto.
Después de tener problemas similares con algunos DE que no se cargan
~/.xinitrc
, evité por completo xmodmap, fui/usr/share/X11/xkb/symbols
y modifiqué la asignación de símbolos key => directamente.Para hacerlo, edité el archivo de configuración para mi teclado ubicado en
/usr/share/X11/xkb/symbols
. Para la mayoría de los teclados, este debería ser elpc
archivo.Después de abrir el archivo, cambié manualmente Escape y Caps_Lock para sus respectivas teclas, el resultado se muestra a continuación). Como esto afecta la forma en que X asigna el hardware al símbolo clave, debería funcionar independientemente de si está en GNOME o i3 o algo así.
Un fragmento de mi archivo resultante es el siguiente:
Esto funcionó como un encanto para mí.
Al mirar alrededor de los archivos relacionados, encontré repetidas menciones e implementaciones parciales de algún tipo de indicador utilizado para cambiar ciertas teclas, como intercambiar Escape y Bloqueo de mayúsculas. Supongo que esto es lo que usan la herramienta Gnome Tweak Tool y setxkbmap; sin embargo, no pude encontrar la manera de mantener estas marcas con el administrador de ventanas i3. La solución anterior debería funcionar bien.
Espero que esto solucione el problema!
fuente
exec --no-startup-id setxkbmap -layout whatever -variant whatever -option caps:escape
...xkb/symbols/pc
archivo del sistema se sobrescribirán la próxima vezxkeyboard-config
oxkb-data
que se actualicen los paquetes.Dos posibilidades:
1)
.xinitrc
no se está ejecutando: lo utilizan xinit, startx y algunos otros métodos para iniciar sesiones X, pero no es universalmente compatible; es posible que esté utilizando un administrador de pantalla que no lo ejecuta. Agregar algo a .xinitrc comotouch /tmp/xinitrc-was-run
puede ayudar a determinar si ese es el caso.2) Xorg se restablece automáticamente a la configuración predeterminada cuando no hay clientes conectados: si el .xinitrc finaliza antes de que el administrador de ventanas o cualquier otra cosa comience a ejecutarse, se perderán los cambios de xmodmap o setxkbmap.
Si ya hay una opción XKB definida que desea usar, en lugar de ejecutar programas para cambiar la configuración cada vez que Xorg se inicia, puede decirle a Xorg que ya inicie con la configuración correcta. Por ejemplo, para habilitar las teclas Ctrl-Alt-Retroceso para matar mi servidor X, he instalado un archivo llamado
/etc/X11/xorg.conf.d/90-zap.conf
que contiene:Puede leer más sobre esto en los documentos de X.Org en https://www.x.org/releases/X11R7.7/doc/xorg-docs/input/XKB-Config.html .
fuente