¿Es posible reasignar el sistema de teclas CapsLock de manera tal que cuando el botón CapsLock se presiona solo actúa como la tecla de escape y cuando se presiona con otra tecla, actúa como la tecla de control?
¿Es posible reasignar el sistema de teclas CapsLock de manera tal que cuando el botón CapsLock se presiona solo actúa como la tecla de escape y cuando se presiona con otra tecla, actúa como la tecla de control?
Respuestas:
He encontrado una muy buena solución llamada xcape . Desde el archivo Léame:
xcape se ejecuta como un demonio e intercepta la tecla Control. Si la tecla Control se presiona y suelta por sí sola, generará un evento de tecla Escape.
Esto tiene más sentido si ha reasignado la tecla Bloq Mayús a Control. Las versiones futuras de este programa pueden hacer ese mapeo por usted, pero por ahora esto es algo que debe hacer usted mismo.
Mapeé Caps to Escape para estar más cómodo escribiendo en Vim. Solía xmodmap
, y puse esto ~/.Xmodmap
.
clear Lock
keycode 0x42 = Escape
Para aplicar: xmodmap ~/.Xmodmap
. Puede poner esto en un archivo como ~ / .bash_profile (lo puse en ~ / .xinitrc, porque no uso un administrador de inicio de sesión.
Para asignar CapsLock + [otra clave], considere usar xbindkeys
.
Una solución exclusiva de Linux para reasignar claves en todo el sistema es escribir una regla udev simple. No dependerá de X, funcionará en cualquier terminal o aplicación y es portátil entre cualquier instalación reciente de Linux simplemente copiando dos archivos.
Necesita escribir 2 archivos: uno que contiene la regla udev que le dice al núcleo que reasigne las claves y otro que contiene las asignaciones reales que necesita.
Usando este método, he reasignado todo mi teclado, tal vez el código sea útil como inspiración http://git.adirat.com/carpalx-keyboard
He creado una herramienta en C especialmente para este propósito que supera muchos de los problemas con la solución xcape / xmodmap :
Me encontré con una pregunta redactada de manera diferente en AskUbuntu que tenía una buena respuesta , pero tuve que modificarla ligeramente para que funcione en mis sistemas.
Según los comentarios de Louis y Sergiy allí, se me ocurrió esta solución que funciona para mí en Ubuntu 16.04 (Xenial) y la llevaré conmigo a los otros sistemas Linux que uso.
Instalé xcape y puse las siguientes líneas de código en mi .profile
archivo en mi directorio de inicio.
Debido a que los distintos administradores de pantalla (gdm / kdm / sddm / etc.) se comportan de manera extraña y restablecen el modo de setxbmap
suspender / reanudar o bloquear / desbloquear, descubrí cómo configurar las opciones de manera que lo hereden y no lo hagan ' t restablecerlo todo el tiempo. Debido a que suspendí y reanudé mucho, necesitaba asegurarme de que no obtuve muchas copias de xcape
ejecución que se resuelven en el nuevo script a continuación.
Primero modifique la configuración del teclado con sudo gedit /etc/default/keyboard
y establezca XKBOPTIONS="ctrl:nocaps"
y luego en su ~/.xprofile
poner la línea única a continuación.
ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &
Esperemos que las diversas secciones del script le ahorren tiempo / problemas y eviten inicios de sesión atascados. Primero verifica si ya hay una instancia ejecutándose y la mata, ya que lo único que xcape
hace es asignar Ctrl a Esc, esto es seguro, luego la hash
parte asegura que haya xcape
instalado, de lo contrario su sistema podría bloquearse cuando intente iniciar sesión porque todo se inicia Se espera que los scripts salgan limpiamente.
setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'
Sergiy
He usado gnome-tweak-tool para asignar el bloqueo de mayúsculas a Ctrl, ya que no hay diseño de teclado en la configuración del sistema en Ubuntu 14.04. Entonces xcape -e 'Control_L = Escape' no funcionó, pero después de usar xcape -d descubrí que el Bloqueo de mayúsculas genera el código clave 66 y lo reasignó respectivamente: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov 4 de septiembre de 14 a 10:08
Louis
Según esta publicación de blog, es posible hacer esto solo con xcape: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Louis Simoneau 4 de agosto de 15 a 10:06