Reasigne CapsLock para escapar y controlar todo el sistema

18

¿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?

Zameer Manji
fuente
55
Parece que sería muy difícil. Por ejemplo, no pudo generar eventos de pulsación de tecla, porque no sabe qué tecla se presionó. Si se libera sin que se presione otra tecla, entonces era Escape, de lo contrario, era Control.
cjm

Respuestas:

16

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.

Zameer Manji
fuente
Hice un guión hacky para hacer esto: github.com/cmatheson/super-caps
cam
6

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.

Emil
fuente
4

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

gimmesudo
fuente
el enlace está muerto, ¿podría actualizarlo? ¡Gracias!
qed
Lo actualicé, perdón por el retraso
gimmesudo
Bitbucket dice "No tiene acceso a este repositorio". ¿Puedes hacerlo público de nuevo? ¡Gracias!
Tianyi Cui
@TianyiCui revise el enlace ahora
gimmesudo
1
El enlace está muerto o bloqueado para mí. ¿Hay alguna posibilidad de que pueda poner los archivos reales en su respuesta?
laberinto
1

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 .profilearchivo en mi directorio de inicio.

MÉTODO ACTUALIZADO:

Debido a que los distintos administradores de pantalla (gdm / kdm / sddm / etc.) se comportan de manera extraña y restablecen el modo de setxbmapsuspender / 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 xcapeejecución que se resuelven en el nuevo script a continuación.

Primero modifique la configuración del teclado con sudo gedit /etc/default/keyboardy establezca XKBOPTIONS="ctrl:nocaps"y luego en su ~/.xprofileponer 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 xcapehace es asignar Ctrl a Esc, esto es seguro, luego la hashparte 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.

Vieja forma:

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

dragon788
fuente