El título lo dice todo: estoy interesado en imitar el comportamiento de Windows, donde Left Ctrl+ Left Altactúa como un selector de tercer nivel. Esto es relativamente importante para mí, ya que, como programador, en mi diseño de teclado, símbolos importantes, tales como {
, [
, ]
o }
sólo se puede acceder pulsando Right Alt+ Key, que es muy incómodo con una sola mano. Por el momento, uso ambas Altteclas como un selector de nivel 3, pero esto tiene algunas consecuencias no deseadas, ya que ya no puedo ingresar algunos accesos directos (por ejemplo, Inicio en Firefox).
Estoy en openSuse 13.1, usando XFCE como entorno de escritorio. Esta pregunta ya se ha hecho un par de veces, pero desafortunadamente no se proporcionó respuesta en ninguno de ellos, y la documentación sobre xkb es bastante escasa.
Respuestas:
La siguiente solución es bárbara, pero funciona (siempre que esté satisfecho con un nivel 3 en lugar de un cambio de nivel 3; la diferencia es que con este último todas las teclas deben presionarse al mismo tiempo, mientras que con el primero usted primero presione LeftCtrl+ LeftAlt, suelte esto y solo luego presione la tecla para cambiar) y no requiere root.
Explicación de cómo funciona esto:
La opción xkb grp: lctrl_lalt_toggle LeftCtrlcambia LeftAltal nivel 2 y viceversa (ver :)
/usr/share/X11/xkb/symbols/group
. También hace que el cambio de nivel2 sea LeftCtrly LeftAltsea ISO_Next_Group, lo que no es deseable, ya que queremos que sea ISO_Level3_Latch, por lo tanto, usamos xmodmap para cambiar el nivel2 a ISO_Level3_Latch para ambos LeftCtrly LeftAlt(mientras mantenemos el nivel1 como Control_L y Alt_L). Los códigos de tecla (37 y 64) se pueden encontrar inspeccionando la salida dexmodmap -pke
o usandoxev
.Si solo aplicamos las redefiniciones de xmodmap (sin usar
setxkbmap
primero), la clave responsable del cambio de nivel 2 sería Shift, como lo es para casi todas las teclas, por lo que tanto Shift+ LeftCtrlcomo Shift+ LeftAlt(pero no LeftCtrl+ LeftAlt) se convertirían en pestillos de nivel 3.¿Por qué tenemos que usar un pestillo de nivel 3 en lugar de un cambio de nivel 3?
Si tuviera que usar ISO_Level3_Shift en lugar de ISO_Level3_Latch, tendría que presionar simultáneamente LeftCtrl+ LeftAlt+ YourDesiredKey, para que ocurra el cambio de nivel3. Desafortunadamente, LeftCtrly LeftAltsiguen siendo modificadores, por lo que, aparte de que YourDesiredKey se haya cambiado correctamente, también se "modificará" por uno de Alt o Ctrl (dependiendo de lo que presionó primero). Con el pestillo, no tienes este problema.
fuente
setxkmap -print
y verifique si laxkb_symbols
línea contiene algo así+group(lctrl_lalt_toggle)
.xmodmap -pke
para imprimir su diseño de teclado actual y puede hacerlo antes y después de los cambios para asegurarse de que realmente se apliquen correctamente. Finalmentexev
, le indicaremos qué códigos de teclas se envían cuando presiona una tecla determinada (o combinación de teclas): la tercera línea para una pulsación de tecla determinada es la más relevante. Cuando haya aplicado los cambios (elsetxkbmap -option ...
y los dos hacks de xmodmap), y presione Ctrl + Alt a través de xev, la salida debe contener ISO_Level3_Latch.xev
oxmodmap -pke
como se describe anteriormente) y que esté en X11 no en Wayland (ya que Wayland no usa xmodmap).