xkb establece el selector de nivel 3 del teclado en ctrl + alt


7

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.


¿Ya has encontrado una solución para esto? Estaría muy interesado en esto.
Dave

Lamentablemente no.
Vlad


Como todavía veo preguntas para esto en varios foros. Para mí, esta solución ( unix.stackexchange.com/questions/157834/… ) funcionó.
Dave

Respuestas:


0

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.

setxkbmap -option grp:lctrl_lalt_toggle

xmodmap -e 'keycode  37 = Control_L ISO_Level3_Latch'
xmodmap -e 'keycode  64 = Alt_L ISO_Level3_Latch'

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 de xmodmap -pkeo usando xev.

Si solo aplicamos las redefiniciones de xmodmap (sin usar setxkbmapprimero), 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.


Intenté esto, pero para mí no pasó nada. Todavía no puedo usar lctrl + lalt como un selector de tercer nivel. ¿Tienes alguna pista sobre cómo depurar esto? De todos modos, es genial que la gente siga respondiendo y trabajando en esto tanto tiempo después de que se hizo la pregunta.
Dave

Para verificar si setxkbmap está configurando correctamente la opción relevante, use: setxkmap -printy verifique si la xkb_symbolslínea contiene algo así +group(lctrl_lalt_toggle).
aplauso

Puede usar xmodmap -pkepara 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. Finalmente xev, 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 (el setxkbmap -option ...y los dos hacks de xmodmap), y presione Ctrl + Alt a través de xev, la salida debe contener ISO_Level3_Latch.
aplauso

Además, debe asegurarse de que los códigos de teclas para Ctrl y Alt sean en realidad 37 y 64, respectivamente (use xev o xmodmap -pkecomo se describe anteriormente) y que esté en X11 no en Wayland (ya que Wayland no usa xmodmap).
aplauso
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.