Wozu dient der Modifikator Mode_switch?

29

Das Spiel mit dem xmodmapich eine Zusatztaste angetroffen hatte ich nicht gehört: Mode_switch. Es scheint etwas mit dem Einfügen von Sonderzeichen zu tun zu haben.

Ich habe es einer Taste zugewiesen, aber es scheint keine Wirkung zu haben. Wofür ist das? Unterscheidet es sich von ISO_Level3_Shift(Alt Gr) ?

vemv
quelle
Siehe auch: unix.stackexchange.com/questions/249122/…
Pavel Šimerda
Verknüpfen einer verwandten Frage: unix.stackexchange.com/questions/461972/…
Jeff Schaller

Antworten:

29

Mode_switchist der alte Name (vor XKB) der Taste, die AltGrauf vielen Tastaturlayouts aufgerufen wird . Es ist insofern ähnlich Shift, als wenn Sie eine Taste drücken, die einem Zeichen entspricht, Sie ein anderes Zeichen erhalten, wenn Shiftoder AltGrauch gedrückt wird. Im Gegensatz zu Shift, Mod_switchist kein Modifikator im Sinne X11 , weil es normalerweise Zeichen gilt, nicht zu Funktionstasten, so dass nur Anwendungen benötigen , um einen Zeichen - Lookup durchführen um die gewünschte Wirkung zu erzielen.

ISO_Level3_Shiftist die XKB-Version dieses Schlüssels. Generell ist XKB viel komplizierter und kann ein paar extravagante Dinge tun. Der Mechanismus von XKB ist allgemeiner, da Tastaturlayouts variieren können, welche Tasten von welchen Modifikatoren beeinflusst werden. Außerdem werden Modifikatoren für Sticky ( CapsLock-Style) und Simultan-Press ( Shift-Style) verallgemeinert und so weiter.

Gilles 'SO - hör auf böse zu sein'
quelle
ISO_Level3_ShiftGut zu wissen, dass sich das "klebrig" verhalten kann, ich habe lange nach dieser Funktionalität gesucht: unix.stackexchange.com/questions/39014/…
vemv
@ Gilles Also, sind AltGrund Mode_switchdie gleichen Schlüssel? Wenn nicht, klingen sie in diesem Link so , als wären sie die gleichen Dinge. Könnten Sie das ein wenig klarstellen?
Utku
@Utku Mode_switchund ISO_Level3_Shiftmache das Gleiche auf etwas andere Weise. Ich behaupte nicht, die Unterschiede zu verstehen; Die meiste Zeit spielen sie keine Rolle, aber ich erinnere mich, dass das Mischen von xmodmap mit XKB-Namen gelegentlich dazu führte, dass Modifikatoren nicht richtig funktionierten.
Gilles 'SO- hör auf böse zu sein'
@ Gilles Ich verstehe die Unterschiede auch nicht, aber ich habe entweder us(cz_sk_de)Features oder benutzerdefinierte xmodmap-Zuordnungen für einige Tasten (z. B. Komma), je nachdem, ob beide Features gleichzeitig verfügbar AltGrsind Mode_switchoder ISO_Level3_Shiftnicht.
Pavel Šimerda
4
Sticky Keys sind nicht CapsLock-Style. Sticky Keys werden als "Latch" und Lock-Keys als Schlösser bezeichnet. Sticky-Tasten werden freigegeben, nachdem der nächste Nicht-Modifikator gedrückt wurde, während die Sperrtasten wirksam sind, bis sie erneut gedrückt werden.
Guildenstern
12

Diese Antwort soll nicht der Antwort von widersprechen, sondern soll einen weiteren Aspekt der von Eingaben beschreiben, der meiner Meinung nach in seiner Antwort " " ist.

Sie können sowohl ISO_Level3_Shift(Alt-Gr) als auch verwendenMode_switch gleichzeitig mit unterschiedlichen Ergebnissen verwenden . Es sind einige Konfigurationsschritte erforderlich, aber Sie können beide verwenden, um 6 verschiedene Tasten pro physischer Tastaturtaste zu erstellen !

Sie können z. B. konfigurieren Tab, Mode_switchwann Sie mit und gehalten werden die mit "H" gekennzeichnete Taste auf der Tastatur folgende Zeichen / Tasten erzeugt:

h
H
← (Cursor)
← (Symbol)

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

Um noch einmal auf Ihre Frage zurückzukommen: IL3Sund Mode_switchkann so konfiguriert werden, dass es verschiedene Bedeutungen hat, so dass Sie Cursortasten und haben können ~ 200 nützliche Zeichen aus den (akzentuierten) Sprachen, der Boxzeichnung und dem technischen Zeichensatz auf den 35 Tasten von haben können die 3 Buchstabenreihen.

Um dies zu erreichen:

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

Beispiel für 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
quelle
Wow! Ich verstehe, was du in deinem 2. letzten Absatz meinst, du hast gerade meinen Tag gemacht. Ich muss nicht länger von htmlarrows.com kopieren und einfügen , um Dinge wie zu schreiben fn: A → B.
Patrick McLaren
Ich denke, die normale Art, dies zu tun, ist die Verwendung von ISO_Level5_Shift . Dies erzeugt 8 Level, das 7. ist lvl3+lvl5+H& c.
Toothrot
1

Mode_shiftin Xkb ist eine Umschalttaste für Gruppen oder Layouts. Wenn Sie ein Layout mit mehreren Gruppen haben, können Sie diese Taste gedrückt halten, um auf die nächste Gruppe zuzugreifen. Wenn Sie mehrere Layouts haben, können Sie diese Taste gedrückt halten, um zwischen den Layouts zu wechseln († 1).

So Mode_shiftist zu gruppen was Shift(oderShift_L und Shift_R, die keysym Namen zu verwenden) auf ein Niveau ist.

Dies wird möglicherweise deutlicher, wenn wir annehmen, dass Mode_shiftein Alias ​​mit dem Namen ISO_Group_Shift(† 2) vorliegt . Es gibt auch Tasten genannt ISO_Group_Latchund ISO_Group_Lockdie entsprechen ISO_Level2_Latch(Latch Shift) undShift_Lock bzw. († 3) entsprechen.

Es gibt auch eine Reihe von Aliasen für verschiedene Skripte:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: Dies basiert auf meinem Verständnis der „Gruppen“ und „Layouts“ von Xkb. Es scheint, dass sie genauso behandelt werden, als würden sie mit solchen Schlüsseln zwischen ihnen wählen.

† 2: Ich beziehe mich auf die Datei keysymdef.hin diesem Git-Repository in Revision ab8666661fc6 („XF86XK_AudioPreset hinzufügen“, 10.05.2017). Bei Installationen finden Sie diese Datei wahrscheinlich unter /usr/include/X11/keysymdef.h .

† 3: Es gibt auch einen Schlüssel ISO_Lock, eine Art Universalschlüssel.

Die Bedeutung des AltGrSchlüssels

Gilles erwähnt in seiner Antwort den Zusammenhang mit dem AltGrSchlüssel:

Mode_switchist der alte Name (vor XKB) der Taste, die AltGrauf vielen Tastaturlayouts aufgerufen wird .

Das führte mich zu dem Verdacht, dass "AltGr" für "Alternative / Alternative Gruppe" stehen könnte, da Mode_switches zum Verschieben von Gruppen verwendet wird. Dies stellte sich jedoch als falsch heraus. Laut der Wikipedia-Seite auf der AltGrTaste scheint „AltGr“ von IBM-Tastaturen zu stammen, und in ihren Handbüchern heißt es, dass es sich um eine Abkürzung für „alternative Grafiken“ handelt. Dies ist sinnvoll, da es wahrscheinlich ist, dass die Verwendung der Tastatur zum Zeichnen von „Grafiken“ (in Textbenutzeroberflächen verwendete Zeichen zum Zeichnen von Kästchen) lange bevor eine gute Unterstützung für das schnelle Wechseln zwischen mehreren Skripten bestand.

Guildenstern
quelle