Para que serve o modificador Mode_switch?

29

Jogando com xmodmapeu encontrei uma tecla modificadora Eu não tinha ouvido falar de: Mode_switch. Parece ter algo a ver com a inserção de caracteres especiais.

Eu o atribuí a uma chave, mas parece não ter efeito. Para que serve? É diferente de ISO_Level3_Shift(Alt Gr) ?

vemv
fonte
Veja também: unix.stackexchange.com/questions/249122/…
Pavel Šimerda 1/16
Vinculando em uma pergunta relacionada: unix.stackexchange.com/questions/461972/…
Jeff Schaller

Respostas:

29

Mode_switché o nome antigo (pré-XKB) da tecla que é chamada AltGrem muitos layouts de teclado. É semelhante ao fato de Shiftque, quando você pressiona uma tecla que corresponde a um caractere, obtém um caractere diferente se Shiftou AltGrtambém é pressionado. Ao contrário Shift, Mod_switchnão é um modificador no sentido X11, porque normalmente se aplica a caracteres, não a teclas de função; portanto, os aplicativos precisam apenas executar uma pesquisa de caracteres para obter o efeito desejado.

ISO_Level3_Shifté a versão XKB dessa chave. De um modo geral, o XKB é muito mais complicado e pode fazer coisas extravagantes. O mecanismo do XKB é mais geral, pois permite que os layouts de teclado variem em quais teclas são influenciadas por quais modificadores, generaliza modificadores pegajosos ( CapsLockestilo) e de imprensa simultânea ( Shiftestilo) e assim por diante.

Gilles 'SO- parar de ser mau'
fonte
É bom saber que ISO_Level3_Shiftpode agir 'pegajoso'. Eu estava procurando essa funcionalidade por um longo tempo: unix.stackexchange.com/questions/39014/…
vemv
@ Gilles Então, são AltGre Mode_switchas mesmas chaves? Caso contrário, neste link , eles soam como se fossem as mesmas coisas. Você poderia esclarecer isso um pouco?
Utku
@Utku Mode_switche ISO_Level3_Shiftfaça a mesma coisa de maneiras ligeiramente diferentes. Não pretendo entender as diferenças; na maioria das vezes eles não importam, mas eu lembro que misturar xmodmap com nomes XKB ocasionalmente fazia com que modificadores não funcionassem corretamente.
Gilles 'SO- stop be evil'
@Gilles I also don't understand the differences but I'm ending up either with us(cz_sk_de) features or with custom xmodmap mappings for some keys (comma for example) depending on whether AltGr is Mode_switch or ISO_Level3_Shift but can't get both features at the same time.
Pavel Šimerda
4
Teclas adesivas não têm CapsLockestilo. Chaves adesivas são chamadas de “trava” e chaves de bloqueio são chamadas de fechaduras. As teclas adesivas são liberadas depois que o próximo não modificador é pressionado enquanto as teclas de bloqueio estão em vigor até serem pressionadas novamente.
Guildenstern
12

Esta resposta não pretende contradizer a resposta do @Gilles, mas sim para descrever outro aspecto do manuseio do Input que considero "sub-iluminado" em sua resposta.

Você pode usar ambos ISO_Level3_Shift(Alt-Gr) e Mode_switchao mesmo tempo com resultados diferentes . Requer alguma configuração, mas você pode ter os dois e usá-los para produzir 6 teclas diferentes por tecla física do teclado!

Você pode, por exemplo, configurar Tabpara ser Mode_switch com e ; por exemplo, a tecla "H" no teclado pode produzir os seguintes caracteres / teclas:

h
H
← (Cursor)
← (Symbol)

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

Então, voltando à sua pergunta: IL3Se Mode_switchpode ser configurado para significar coisas diferentes, para que você possa ter teclas de cursor e ~ 200 caracteres úteis dos idiomas (acentuados), desenho de caixa e conjunto de caracteres técnicos nas 35 teclas de as 3 linhas da letra.

Para realizar o acima:

# 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"

exemplo 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
fonte
Uau! Entendo o que você quer dizer no seu segundo parágrafo final agora, você acabou de fazer o meu dia. Não preciso mais copiar e colar em htmlarrows.com para escrever coisas como fn: A → B.
Patrick McLaren
Eu acho que a maneira normal de fazer isso é usando ISO_Level5_Shift. Isso produz 8 níveis, o 7º sendo lvl3+lvl5+H& c.
Toothrot
1

Mode_shiftno Xkb é uma tecla Shift para grupos ou layouts. Se você tiver um layout com vários grupos, mantenha pressionada essa tecla para acessar o próximo grupo. Se você tiver vários layouts, mantenha pressionada essa tecla para alternar entre os layouts († 1).

O mesmo Mode_shiftvale para os grupos o que Shift(ou Shift_Le Shift_R, para usar os nomes das chaves) é em níveis.

Isso pode ficar mais claro se considerarmos que Mode_shifttem um apelido chamado ISO_Group_Shift(† 2). Também existem teclas chamadas ISO_Group_Latche ISO_Group_Lockque correspondem a ISO_Level2_Latch(deslocamento da trava) e Shift_Lock, respectivamente († 3).

Há também vários aliases para scripts diferentes:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: Isso é baseado no meu entendimento dos “grupos” e “layouts” do Xkb. Parece que eles são tratados da mesma forma que selecionam entre eles com teclas como esta.

† 2: Eu estou baseando esta sobre o arquivo keysymdef.hem este repositório Git no ab8666661fc6 revisão ( “Adicionar XF86XK_AudioPreset”, 2017/05/10). Em instalações, você provavelmente encontrará esse arquivo em /usr/include/X11/keysymdef.h.

† 3: Há também uma chave ISO_Lock, um tipo de chave de bloqueio de uso geral.

O significado da AltGrchave

Gilles mencionou em sua resposta a conexão com a AltGrchave:

Mode_switché o nome antigo (pré-XKB) da tecla que é chamada AltGrem muitos layouts de teclado.

Isso me levou a suspeitar que "AltGr" pode significar "grupo alternativo / alternativo", pois Mode_switché usado para mudar de grupo. No entanto, isso acabou errado. De acordo com a páginaAltGr da Wikipedia sobre a tecla , "AltGr" parece vir dos teclados da IBM e, em seus manuais, diz que é uma abreviação de "gráficos alternativos". Isso faz sentido, pois parece provável que o uso do teclado para desenhar “gráficos” (caracteres de desenho de caixa usados ​​nas interfaces de usuário de texto) ocorreu bem antes de haver um bom suporte para alternar rapidamente entre vários scripts.

Guildenstern
fonte