„1. Was macht der Modifikator der 5. Stufe? “
Es wählt die fünfte Ebene. Der Modifikator der 2. Ebene (nur reguläre Verschiebung) wählt die zweite Ebene und die 3. Ebene wählt die dritte Ebene.
Der Grund, warum der Modifikator der 5. Ebene die fünfte Ebene anstelle der vierten Ebene wählt (direkt nach dem Modifikator der 3. Ebene), ist, dass diese drei Modifikatoren auf unterschiedliche Weise kombiniert werden können, um acht verschiedene Ebenen auszuwählen (dies beinhaltet, dass keiner der Modifikatoren verwendet wird, das ist nur ein Tastendruck ohne solche Modifikatoren). Es gibt acht Kombinationen, da 2 ↑ 3 = 8. Für die ersten beiden Modifikatoren gibt es vier Kombinationen:
- Keine Modifikatoren (Stufe 1)
- 2nd Level Modifier, auch bekannt als Shift (Level 2)
- 3rd Level Modifikator (Level 3)
- 2. + 3. Modifikator (Stufe 4)
Durch Hinzufügen des dritten Modifikators (5. Stufe) werden vier weitere Stufen hinzugefügt.
„2. Wie richte ich es so ein, dass ich 5 oder 6 verschiedene Zeichen aus einer einzigen Taste herausholen kann Alt Gr( Right
Ctrlzum Beispiel durch Umschalttaste geändert )? “
Zunächst benötigen Sie ein Layout, das fünf oder mehr Zeichen pro Taste verwendet. Sie können ein vorhandenes Layout auswählen. Wenn Sie dem derzeit verwendeten Layout jedoch einfach weitere Ebenen hinzufügen möchten, ist dies möglicherweise nicht optimal. Zum Beispiel gibt es das Neo- Tastaturlayout († 1), das jedoch für die deutsche Sprache optimiert ist, sodass es für die meisten Englischsprachigen nicht so gut ist.
Trotzdem kann es lehrreich sein, sich anzuschauen, welche Tasten Neo für den Level 5-Modifikator ausgewählt hat.
Neo nennt anscheinend den Level 5 Modifier für "Mod4". Wie Sie sehen können, wird die Taste rechts von der linken Umschalttaste ( LSGT
) und die rechte Alt-Taste / AltGr
-Taste verwendet. Dies ist bei einer europäischen Tastatur (105 Tasten) der Fall, die im Vergleich zur US-Tastatur (104 Tasten) eine schmale Linksverschiebung und eine große und dünne Eingabetaste aufweist. Für ein Tastaturlayout, das auf der US-Tastatur basiert, muss oder möchte man möglicherweise andere Tasten wählen.
Auswahl einer Modifizierertaste der Stufe 5
In der Antwort von sup wählt er Xmodmap. Heutzutage werden Tools wie Setxkbmap gegenüber Xmodmap empfohlen. Xkb enthält viele vordefinierte Optionen für die Auswahl des Level 5-Modifikators. Wenn Sie sich an
man xkeyboard-config wenden und danach suchen lv5
, finden Sie folgende Optionen:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Die dokumentierten Optionen sind also die LSGT
Taste, die rechte ALT-Taste, die rechte Windows-Taste und die linke Windows-Taste. Wie wir gesehen haben, verwendet Neo die ersten beiden Optionen.
Angenommen, Sie möchten die lv5:ralt_switch_lock
Option mit einem bestimmten Layout verwenden. Dieser Befehl richtet das us
Layout mit dieser Modifikatortaste der Ebene 5 ein:
setxkbmap -option "lv5:ralt_switch_lock" us
man xkeyboard-config
Verwenden Sie daher für alle Optionen, die in dokumentiert sind , diese als Argument für die -option
Verwendung von Setxkbmap.
Wenn diese Optionen nicht ausreichen und Sie einen anderen Schlüssel als Modifikator der Ebene 5 definieren möchten, sollten Sie die Deklarationen für diese Optionen lesen. Sie scheinen in zu sein
/usr/share/X11/xkb/symbols/level5
. Die Deklaration für
lv5:ralt_switch_lock
sieht so aus:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
Die rechte Seite von gibt symbols[Group1]
an, welche Taste oder welches Zeichen die einzelnen Ebenen der Taste erzeugen sollen. Diese nutzt alle acht möglichen Stufen , da es soll sperren die Stufe 5 Modifikator , wenn sie zusammen mit einer anderen Ebene 5 Shift - Taste gedrückt wird . Die Ebenen 5–8 werden ausgegeben,
ISO_Level5_Lock
da auf alle diese Ebenen zugegriffen wird, indem die Schicht 5 und eine Kombination der anderen Schichttasten (keine für alle) gedrückt gehalten wird. Wenn Sie nur das Shift-Verhalten und nicht auch das Lock-If-Two-Pressed-Verhalten möchten, können Sie eine einfachere Erklärung abgeben (aus derselben Datei):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Hinzufügen zusätzlicher Ebenen zu einem Layout
Xkb-Layouts sind ziemlich modular. Sie können umfassen bestehenden Layouts und sie verändern. So können wir ein vorhandenes Layout mit weniger als 5 Ebenen auswählen und einige Ebenen hinzufügen.
Sie können neue Layouts erstellen, indem Sie die Datei mit Ihren Layouts in kopieren
/usr/share/X11/xkb/symbols/
oder wo immer Ihre Xkb-Tools nach Layouts suchen. Dies erfordert jedoch das sudo-Privileg, sodass dies nicht die beste Lösung ist. Alternativ können Sie die Verzeichnisstruktur von kopieren xkb/
und Ihre Layouts in das entsprechende Verzeichnis unter stellen xkb/
, nämlich
symbols/
. Angenommen, Sie haben eine Datei erstellt xkb-tree/symbols/my-layouts
. Um in dieser Datei definierte Layouts zu verwenden, können Sie die -print
Option von verwenden setxkbmap
und dann die Ausgabe weiterleiten xkbcomp
. Dieses Wrapper-Skript verwendet die Layouts als Eingabe:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
In Bezug auf die Datei mit dem Layout möchten wir beispielsweise das Layout "US international" erweitern, das vier Ebenen verwendet. Zunächst richten wir die Shift-Tasten der Ebenen 3 und 5 auf dieselbe Weise ein wie Neo:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Jetzt wollen wir einige zusätzliche Zeichen hinzufügen. Verwenden wir nur die ersten vier Tasten von QWERTY-Layouts als Beispiel. Diese Tasten sind Q
auf R
, das entsprechen <AD01>
zu <AD04>
. Zuerst müssen wir die Tasten für die Verwendung von bis zu acht Ebenen einrichten:
key.type[Group1] = "EIGHT_LEVEL";
Um sie nicht neu zu definieren, ordnen wir sie den ersten vier Ebenen zu NoSymbol
. Dann fügen wir zwei Ebenen hinzu. Auf Stufe 5 fügen wir die Pfeile ←↓↑→
(† 2) hinzu. In Level 6 fügen wir die Richtungstasten hinzu. Unser Layout sieht dann so aus:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Um es zu benutzen, können wir das Wrapper-Skript benutzen, das wir gemacht haben:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo ist de(neo)
in Xkb; setxkbmap "de(neo)"
.
† 2: Um die von Xkb verwendeten symbolischen Namen zu finden, suchen Sie nach einer Datei mit dem Namen keysymdef.h
. Es sollte sich unter einem Verzeichnis mit dem Namen befinden X11/
. Sie können auch Unicode-Namen verwenden, z. B. U2192
für U + 2192.