À quoi sert le modificateur Mode_switch?

29

Jouer avec xmodmapje rencontrais une clé modificateur je ne l' avais pas entendu parler de: Mode_switch. Cela semble avoir quelque chose à voir avec l'insertion de caractères spéciaux.

Je l'ai assigné à une clé mais cela semble n'avoir aucun effet. Pourquoi est-ce? Est-ce différent de ISO_Level3_Shift(Alt Gr) ?

vemv
la source
Voir aussi: unix.stackexchange.com/questions/249122/…
Pavel Šimerda
Lien dans une question connexe: unix.stackexchange.com/questions/461972/…
Jeff Schaller

Réponses:

29

Mode_switchest le nom à l'ancienne (pré-XKB) de la touche qui est appelée AltGrsur de nombreuses dispositions de clavier. Cela est similaire au fait Shiftque lorsque vous appuyez sur une touche qui correspond à un caractère, vous obtenez un caractère différent si Shiftou AltGrest également enfoncé. Contrairement à Shift, Mod_switchn'est pas un modificateur au sens X11 car il s'applique normalement aux caractères, pas aux touches de fonction, donc les applications n'ont qu'à effectuer une recherche de caractères pour obtenir l'effet souhaité.

ISO_Level3_Shiftest la version XKB de cette clé. De manière générale, XKB est beaucoup plus compliqué et peut faire des trucs extra sophistiqués. Le mécanisme de XKB est plus général car il permet aux dispositions de clavier de varier dans quelles touches sont influencées par quels modificateurs, il généralise les modificateurs collants ( CapsLock-style) et à pression simultanée ( Shift-style) et ainsi de suite.

Gilles 'SO- arrête d'être méchant'
la source
ISO_Level3_ShiftHeureux de savoir que cela peut agir de manière «collante», je cherchais cette fonctionnalité depuis longtemps: unix.stackexchange.com/questions/39014/…
vemv
@Gilles Alors, AltGret sont Mode_switchles mêmes clés? Sinon, dans ce lien , ils sonnent comme s'ils étaient les mêmes choses. Pourriez-vous clarifier un peu cela?
Utku
@Utku Mode_switchet ISO_Level3_Shiftfaites la même chose de manière légèrement différente. Je ne prétends pas comprendre les différences; la plupart du temps, cela n'a pas d'importance, mais je me souviens que le mélange de xmodmap avec des noms XKB empêchait parfois les modificateurs de fonctionner correctement.
Gilles 'SO- arrête d'être méchant'
@Gilles Je ne comprends pas non plus les différences, mais je me retrouve avec des us(cz_sk_de)fonctionnalités ou avec des mappages xmodmap personnalisés pour certaines clés (virgule par exemple) selon que les fonctionnalités AltGrsont Mode_switchou ISO_Level3_Shiftne peuvent pas obtenir les deux fonctionnalités en même temps.
Pavel Šimerda
4
Les touches CapsLockrémanentes ne sont pas de style. Les clés collantes sont appelées «loquet» et les clés de verrouillage sont appelées serrures. Les touches rémanentes sont relâchées après avoir appuyé sur le non-modificateur suivant tandis que les touches de verrouillage sont actives jusqu'à ce qu'elles soient à nouveau enfoncées.
Guildenstern
12

Cette réponse n'est pas destinée à contredire la réponse de @Gilles, mais vise à décrire un autre aspect de la entrées qui, selon moi, est "sous-éclairé" dans sa réponse.

Vous pouvez utiliser à la fois ISO_Level3_Shift(Alt-Gr) et Mode_switchen même temps avec des résultats différents . Il nécessite une certaine configuration, mais vous pouvez les avoir tous les deux et les utiliser pour produire 6 touches différentes par touche de clavier physique!

Vous pouvez par exemple configurer Tabpour être Mode_switchtenu avec et , puis par exemple la touche étiquetée "H" sur le clavier pourrait produire les caractères / touches suivants:

h
H
← (Cursor)
← (Symbol)

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

Donc, pour revenir à votre question: IL3Set Mode_switchpeut être configuré pour signifier différentes choses, vous pouvez donc avoir des touches de curseur et ~ 200 caractères utiles des langues (accentuées), du dessin de boîte et du jeu de caractères techniques sur les 35 touches de les 3 lignes de lettres.

Pour accomplir ce qui précède:

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

exemple pour 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
la source
Hou la la! Je vois ce que vous voulez dire dans votre avant-dernier paragraphe maintenant, vous venez de faire ma journée 😉 Je n'ai plus besoin de copier-coller depuis htmlarrows.com pour écrire des choses comme fn: A → B.
Patrick McLaren
Je pense que la façon normale de le faire est d'utiliser ISO_Level5_Shift. Cela produit 8 niveaux, le 7ème étant lvl3+lvl5+H& c.
Toothrot
1

Mode_shiftdans Xkb est une touche Maj pour les groupes ou les mises en page. Si vous avez une disposition avec plusieurs groupes, vous pouvez maintenir cette touche enfoncée pour accéder au groupe suivant. Si vous disposez de plusieurs dispositions, vous pouvez maintenir cette touche enfoncée pour basculer entre les dispositions († 1).

Il en Mode_shiftva de même pour les groupes Shift(ou Shift_Let Shift_R, pour utiliser les noms de clés) pour les niveaux.

Cela pourrait devenir plus clair si nous considérons qu'il Mode_shifta un alias appelé ISO_Group_Shift(† 2). Il existe également des touches appelées ISO_Group_Latchet ISO_Group_Lockqui correspondent à ISO_Level2_Latch(décalage du verrou) et Shift_Lock, respectivement († 3).

Il existe également un certain nombre d'alias pour différents scripts:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: Ceci est basé sur ma compréhension des «groupes» et des «dispositions» de Xkb. Il semble qu'ils soient traités de la même manière en sélectionnant entre eux avec des clés comme celle-ci.

† 2: Je base cela sur le fichier keysymdef.hdans ce référentiel Git à la révision ab8666661fc6 («Ajouter XF86XK_AudioPreset», 2017-05-10). Sur les installations, vous trouverez probablement ce fichier sur /usr/include/X11/keysymdef.h.

† 3: Il existe également une clé ISO_Lock, une sorte de clé de verrouillage à usage général.

La signification de la AltGrclé

Gilles a mentionné dans sa réponse le lien avec la AltGrclé:

Mode_switchest le nom à l'ancienne (pré-XKB) de la touche qui est appelée AltGrsur de nombreuses dispositions de clavier.

Cela m'amène à soupçonner que «AltGr» pourrait signifier «groupe alternatif / alternatif», car il Mode_switchest utilisé pour déplacer les groupes. Cependant, cela s'est avéré faux. Selon la page Wikipedia sur la AltGrclé , «AltGr» semble provenir des claviers IBM, et dans leurs manuels, il est dit que c'est une abréviation pour «graphisme alternatif». Cela a du sens, car il semble probable que l'utilisation du clavier pour dessiner des «graphiques» (caractères de dessin de boîte utilisés dans les interfaces utilisateur de texte) est arrivée bien avant qu'il n'y ait un bon support pour basculer rapidement entre plusieurs scripts.

Guildenstern
la source