Para que serve o modificador Mode_switch?

27

Jogando com xmodmap Eu encontrei uma tecla modificadora de que eu não tinha ouvido falar: 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) ?

    
por vemv 07.11.2012 / 12:19

3 respostas

27

Mode_switch é o nome antigo (pré-XKB) da chave que é chamada AltGr em muitos layouts de teclado. É similar a Shift , em que quando você pressiona uma tecla que corresponde a um caractere, você obtém um caractere diferente se Shift ou AltGr for também pressionado. Ao contrário de Shift , Mod_switch não é um modificador no sentido X11 porque normalmente se aplica a caracteres, e não a teclas de função, portanto, os aplicativos só precisam 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 algumas coisas extravagantes. O mecanismo do XKB é mais geral, pois permite que os layouts do teclado variem nas quais as teclas são influenciadas pelos modificadores, generaliza o estilo ( CapsLock ) e o pressionamento simultâneo ( Shift - estilo) modificadores e assim por diante.

    
por 07.11.2012 / 23:59
8

Esta resposta não pretende contradizer a resposta de @Gilles, mas pretende descrever outro aspecto de O manuseio de entrada que eu sinto é" pouco iluminado "em sua resposta.

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

Você pode, por exemplo configure a aba como Mode_switch quando mantida com e , então por exemplo a tecla "H" no teclado pode produzir os seguintes caracteres / chaves:

h
H
← (Cursor)
← (Simbolo)

com H
com Deslocamento H
com AltGr H
com AltGr Deslocamento H
com a aba H
com a aba Deslocamento H

Então, para voltar à sua pergunta: IL3S e Mode_switch podem ser configurados para significar coisas diferentes, então você pode ter as teclas do cursor e ~ 200 caracteres úteis do (acentuado ) idiomas, desenho de caixa e conjunto de caracteres técnicos nas 35 chaves das linhas de 3 letras.

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'
    
por 26.11.2016 / 22:20
1

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

Então Mode_shift é para grupos o que Shift (ou Shift_L e Shift_R , para usar os nomes de keysym) é para níveis.

Isso pode ficar mais claro se considerarmos que Mode_shift tem um alias chamado ISO_Group_Shift († 2). Há também chaves chamadas ISO_Group_Latch e ISO_Group_Lock que correspondem a ISO_Level2_Latch (deslocamento de 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: baseia-se no meu entendimento dos "grupos" e "layouts" do Xkb. Parece que eles são tratados da mesma maneira que selecionar entre eles com chaves como esta.

† 2: Estou baseando isso no arquivo keysymdef.h em este repositório Git na revisão ab8666661fc6 (“Add XF86XK_AudioPreset”, 2017-05-10). Em instalações você provavelmente encontrará este arquivo em /usr/include/X11/keysymdef.h .

† 3: Há também uma chave ISO_Lock , mas eu não sei o que ela faz e se tem a ver com o bloqueio da tecla Shift.

O significado da chave AltGr

Gilles mencionou em sua resposta a conexão com o Tecla AltGr :

Mode_switch is the old-style (pre-XKB) name of the key that is called AltGr on many keyboard layouts.

Isso me leva a suspeitar que "AltGr" possa representar “Grupo alternativo / alternativo”, já que Mode_switch é usado para mudar grupos. Isso acabou sendo errado, no entanto. De acordo com A página da Wikipédia na tecla AltGr , “AltGr” parece vir de Teclados IBM, e em seus manuais, diz que é uma abreviatura para “gráficos alternativos”. Isso faz sentido, já que parece provável que usando o teclado para desenhar “gráficos” (caracteres de desenho de caixa usados interfaces de usuário de texto) veio bem antes de haver um bom suporte para alternando rapidamente entre vários scripts.

    
por 10.11.2017 / 13:35