¿Para qué sirve el modificador Mode_switch?

29

El jugar con los xmodmapque me encontré una tecla de modificación que no había oído hablar de: Mode_switch. Parece tener algo que ver con insertar caracteres especiales.

Lo asigné a una tecla pero parece no tener efecto. ¿Para qué sirve? ¿Es diferente de ISO_Level3_Shift(Alt Gr) ?

vemv
fuente
Ver también: unix.stackexchange.com/questions/249122/…
Pavel Šimerda
Vinculación en una pregunta relacionada: unix.stackexchange.com/questions/461972/…
Jeff Schaller

Respuestas:

29

Mode_switches el nombre antiguo (anterior a XKB) de la tecla que se llama AltGren muchos diseños de teclado. Es similar a Shifteso, cuando presiona una tecla que corresponde a un carácter, obtiene un carácter diferente si Shifto AltGrtambién se presiona. A diferencia Shift, Mod_switchno es un modificador en el sentido X11 porque normalmente se aplica a los caracteres, no a las teclas de función, por lo que las aplicaciones solo necesitan realizar una búsqueda de caracteres para obtener el efecto deseado.

ISO_Level3_Shiftes la versión XKB de esta clave. En términos generales, XKB es mucho más complicado y puede hacer algunas cosas extra extravagantes. El mecanismo de XKB es más general ya que permite que las distribuciones del teclado varíen en qué teclas están influenciadas por qué modificadores, generaliza modificadores CapsLockfijos ( -style) y de pulsación simultánea ( Shift-style) y así sucesivamente.

Gilles 'SO- deja de ser malvado'
fuente
Es ISO_Level3_Shiftbueno saber que puede actuar de manera 'pegajosa', estuve buscando esa funcionalidad durante mucho tiempo: unix.stackexchange.com/questions/39014/…
vemv
@Gilles Entonces, ¿son AltGry Mode_switchlas mismas claves? Si no, en este enlace , suenan como si fueran las mismas cosas. ¿Podría aclarar esto un poco?
Utku
@Utku Mode_switchy ISO_Level3_Shifthaz lo mismo de maneras ligeramente diferentes. No pretendo entender las diferencias; la mayoría de las veces no importan, pero sí recuerdo que mezclar xmodmap con nombres XKB ocasionalmente causaba que los modificadores no funcionaran correctamente.
Gilles 'SO- deja de ser malvado'
@Gilles Tampoco entiendo las diferencias, pero estoy terminando con us(cz_sk_de)características o con asignaciones de xmodmap personalizadas para algunas teclas (coma, por ejemplo) dependiendo de si AltGres Mode_switcho ISO_Level3_Shiftno puede obtener ambas características al mismo tiempo.
Pavel Šimerda
44
Las teclas adhesivas no son de CapsLockestilo. Las teclas adhesivas se denominan "pestillo" y las teclas de bloqueo se denominan bloqueos. Las teclas adhesivas se liberan después de presionar el siguiente no modificador mientras las teclas de bloqueo están vigentes hasta que se presionan nuevamente.
Guildenstern
12

Esta respuesta no tiene la intención de contradecir la respuesta de @Gilles, pero tiene la intención de describir otro aspecto del manejo de entrada que siento que está "poco iluminado" en su respuesta.

Puede usar ambos ISO_Level3_Shift(Alt-Gr) y Mode_switchal mismo tiempo con diferentes resultados . Requiere algo de configuración, pero puede tenerlos a ambos y usarlos para producir 6 teclas diferentes por tecla física del teclado.

Puede, por ejemplo, configurarlo Tabpara que se Mode_switchmantenga con y , luego, por ejemplo, la tecla con la etiqueta "H" en el teclado podría producir los siguientes caracteres / teclas:

h
H
← (Cursor)
← (Symbol)

with H
with ShiftH
with AltGrH
with AltGrShiftH
with TabH
with TabShiftH

Entonces, para volver a su pregunta: IL3Sy Mode_switchse puede configurar para que signifique cosas diferentes, para que pueda tener teclas de cursor y ~ 200 caracteres útiles de los idiomas (acentuados), dibujo de cuadros y caracteres técnicos establecidos en las 35 teclas de Las 3 filas de letras.

Para lograr lo anterior:

# Initial Setup
xmodmap -e 'keycode 23 = Mode_switch ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab'
xmodmap -e 'keycode any = Tab'
xcape -e "Mode_switch=Tab"

ejemplo para H:

xmodmap -pke | grep 'h H'
# Make note of the keycode, note the 8 columns after the `=`,
# then edit and feed back into xmodmap with:
xmodmap -e 'keycode  43 = h H lowrightcorner uprightcorner Left leftarrow h H'
Alex Stragies
fuente
¡Guauu! Ahora entiendo lo que quieres decir en tu segundo párrafo, me alegraste el día. Ya no necesito copiar y pegar desde htmlarrows.com para escribir cosas como fn: A → B.
Patrick McLaren el
Creo que la forma normal de hacerlo es mediante el uso ISO_Level5_Shift. Esto produce 8 niveles, el séptimo ser lvl3+lvl5+H& c.
Toothrot
1

Mode_shiften Xkb es una tecla de cambio para grupos o diseños. Si tiene un diseño con varios grupos, puede mantener presionada esta tecla para acceder al siguiente grupo. Si tiene varios diseños, puede mantener presionada esta tecla para cambiar entre diseños († 1).

Entonces, Mode_shiftes agrupar lo que Shift(o , Shift_Ly Shift_R, usar los nombres de claves) es a niveles.

Esto podría ser más claro si consideramos que Mode_shifttiene un alias llamado ISO_Group_Shift(† 2). También hay teclas llamadas ISO_Group_Latchy ISO_Group_Lockque corresponden a ISO_Level2_Latch(cambio de pestillo) y Shift_Lock, respectivamente († 3).

También hay una serie de alias para diferentes scripts:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: Esto se basa en mi comprensión de los "grupos" y "diseños" de Xkb. Parece que se tratan de la misma manera en cuanto a seleccionar entre ellos con teclas como esta.

† 2: Estoy basando esto en el archivo keysymdef.hen este repositorio de Git en la revisión ab8666661fc6 ("Agregar XF86XK_AudioPreset", 2017-05-10). En las instalaciones, probablemente encontrará este archivo en /usr/include/X11/keysymdef.h.

† 3: También hay una llave ISO_Lock, una especie de llave de bloqueo de uso general.

El significado de la AltGrllave

Gilles mencionó en su respuesta la conexión con la AltGrclave:

Mode_switches el nombre antiguo (anterior a XKB) de la tecla que se llama AltGren muchos diseños de teclado.

Eso me lleva a sospechar que "AltGr" podría significar "grupo alternativo / alternativo", ya que Mode_switchse usa para cambiar de grupo. Sin embargo, esto resultó ser incorrecto. Según la página de Wikipedia sobre la AltGrtecla , "AltGr" parece provenir de los teclados de IBM, y en sus manuales dice que es una abreviatura de "gráficos alternativos". Esto tiene sentido, ya que parece probable que usar el teclado para dibujar "gráficos" (caracteres de dibujo de recuadro utilizados en las interfaces de usuario de texto) fue mucho antes de que hubiera un buen soporte para cambiar rápidamente entre múltiples scripts.

Guildenstern
fuente