Configure el bloqueo de mayúsculas como AltGr y flechas como en vim

9

1. ¿Cómo globalmente mapa Caps Locka AltGr?

No necesito CapsLock y prefiero tener una tecla AltGr de fácil acceso allí

2. Quiero asignar todas las teclas de movimiento a vimposiciones similares

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

Así que puedo caminar fácilmente a través de mi código sin mover la mano de la posición de 10 dedos (como en el vimeditor)

Encontré esta respuesta: ¿Cómo vuelvo a asignar la tecla de bloqueo de mayúsculas a la tecla de retroceso?
sugiriendo usar

xmodmap -e "keycode [code] = [new key]"

ver: http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

Pero no puedo entender cómo agregar esto a una combinación de, por ejemplo, AltGr + J

Otro comienzo sería establecer la "Clave de caracteres alternativa" en unity-control-center-> Teclado-> Accesos directos-> Escribir comoCaps Lock

Actualización: Encontré algunas soluciones (ver más abajo) pero todas no funcionan en todas las aplicaciones, supongo que es una configuración global llamada "XFree 4" que utilizan algunas aplicaciones.

¿Cómo configuro las combinaciones de teclas para XFree 4 también?

rubo77
fuente
No tengo una clave AltGr, pero es posible que esta pregunta similar proporcione algunas pistas.
Élder Geek

Respuestas:

4

1. agregar un nuevo archivo parcial XKB

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

con este contenido:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. incluya el parcial en su archivo de idioma

por ejemplo para alemán es /usr/share/X11/xkb/symbols/de(donde /deestá su idioma) agregue esto dentro del primer bloque ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

Nota: esta parte debe repetirse después de cada actualización de distribución

3. vuelva a cargar la sesión de la ventana

Presione ALT + F2, ingrese "r" para volver a cargar la sesión de gnome o simplemente cierre la sesión y vuelva a iniciarla. Ahora las nuevas composiciones clave estarán disponibles

algunos problemas

Algunas aplicaciones no aceptan la configuración, por ejemplo: sublimeque se puede reemplazar por atom.

Algunas aplicaciones necesitan configuraciones adicionales, por ejemplo, en yakuakelas combinaciones de teclas están configuradas en "XFree 4", si las configura en "Linux" o "Solaris", la configuración de XKB también funciona allí:

rubo77
fuente
1
Recomiendo usar la opción XKB en lv3:caps_switchlugar de cambiar la <CAPS>definición como muestra. ver /usr/share/X11/xkb/symbols/level3(donde se define esa opción).
quijotesco
@quixotic: ¿puede agregar una nueva respuesta con las configuraciones que serían necesarias? Podría necesitar una buena respuesta completa aquí por la generosidad;)
rubo77
Esto funcionó perfectamente para mí. Sin embargo, solo un
aviso
0

con el fin de obtener AltGr+ h, j, k, lo cualquier otra tecla sin ninguna aplicación como Autokey a peform puede personalizar el diseño de teclado encuentra en / usr / share / X11 / xkb / símbolos / . Por el momento utilizo el diseño alemán "de". Entonces, antes que nada:

1- copia el diseño estándar

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- abra su diseño con su editor de texto de preferencia (aquí: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

allí verás algo como:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

Como puede ver, AB, AC, AD, AE representa la fila y el número representa su posición en el teclado (hay algunas teclas especiales, como la tecla menor / mayor, que también pueden reasignarse a otras teclas).

Allí no encontrará todo el teclado, solo los diferentes en que se basa el diseño del teclado. El alemán se basa en "latin (type4)" como puede ver al principio del archivo:

include "latin(type4)"

Entonces solo necesita cambiar de acuerdo a sus necesidades. Funciona como:

clave {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(también es posible agregar modificadores de 5to nivel, o más)

si desea verificar los cambios sin reiniciar; (cambiando "de" para su diseño ... aquí hay una lista con posibles diseños )

 setxkbmap -layout de

Las flechas están etiquetadas como "Izquierda, Derecha, Abajo, Arriba", según lo previsto. Aquí hay una buena lista de posibles valores.

Aquí hay un ejemplo de mi diseño personalizado. (pero no en uso en este momento)

Entonces, ¿necesitaría reasignar Capslock y AltGr, o funcionó ya después de la pregunta que publicó?

Si también desea mantener un diseño alemán "normal", puede hacer los cambios a otro diseño que normalmente no usa (o cambiar las "teclas alemanas sin dead" que puede encontrar más abajo en el mismo archivo "de". ..)

Fuente: enlace a una explicación muy completa de xbk y diseños personalizados.
enlace a una pregunta similar con una buena respuesta.

Marcelo Avila
fuente
1
en Ubuntu moderno y derivados, puede establecer diseños y opciones de XKB /etc/default/keyboarduna vez que se realizan estos cambios. ver man 5 keyboardpara más detalles. Recomiendo agregar nuevas variantes y opciones en lugar de cambiar las existentes.
quixotic
0

Para reasignar CapsLock a AltGr use

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(fuente: https://superuser.com/a/138757/160420 )

Para asignar las teclas de flecha a AltGr + h, j, k y l, use xmodmap -pkepara encontrar la configuración correcta:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

y cambie el quinto valor a las nuevas claves y agregue todo esto en un script bash:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(fuente: https://askubuntu.com/a/466315/34298 )

Coloque ese script bash en sus Aplicaciones de inicio (Elija Dash> Aplicaciones de inicio> Agregar y agregue el comando).

Nota: curiosamente, gnome-terminalesto funciona bien, pero yakuakefunciona para BackSpace en AltGr + F pero establece AltGr + h, j, k y l en D, B, A y C a menos que establezca el enlace de teclas en "Linux" en lugar de "(Predeterminado) XFree 4", y sublime-textno funciona en absoluto

rubo77
fuente
xmodmapestá en desuso y desanimado. todavía funciona en entornos X11 pero no funcionará en Wayland y otros reemplazos X11. En cambio, se recomienda utilizar soluciones basadas en XKB.
quixotic
Entonces, supongo que tengo que agregar un nuevo diseño de teclado personalizado. askubuntu.com/questions/482678/…
rubo77
1
agregar un diseño personalizado es una forma, aunque probablemente pueda salirse con la suya simplemente haciendo una opción personalizada . en GNOME o Unity, es posible que deba deshabilitar el complemento de teclado settings-daemon para que funcione la personalización de xmodmap, pero si crea un nuevo diseño / variante / opción XKB para todo el sistema, puede configurarlos /etc/default/keyboard.
quixotic
1
Esto parece bastante trabajo, pero ¿resolverá el problema de que las nuevas combinaciones de teclas no funcionen en algunas aplicaciones?
rubo77